diff --git a/master/fsm_slave_scan.c b/master/fsm_slave_scan.c index 66a7795d..643419c6 100644 --- a/master/fsm_slave_scan.c +++ b/master/fsm_slave_scan.c @@ -776,6 +776,23 @@ void ec_fsm_slave_scan_state_sii_data(ec_fsm_slave_scan_t *fsm " Disabling mailbox communication."); } + // clear mailbox settings if invalid values due to invalid sii file + if ((slave->sii.boot_rx_mailbox_offset == 0xFFFF) || + (slave->sii.boot_tx_mailbox_offset == 0xFFFF) || + (slave->sii.std_rx_mailbox_offset == 0xFFFF) || + (slave->sii.std_tx_mailbox_offset == 0xFFFF)) { + slave->sii.boot_rx_mailbox_offset = 0; + slave->sii.boot_tx_mailbox_offset = 0; + slave->sii.boot_rx_mailbox_size = 0; + slave->sii.boot_tx_mailbox_size = 0; + slave->sii.std_rx_mailbox_offset = 0; + slave->sii.std_tx_mailbox_offset = 0; + slave->sii.std_rx_mailbox_size = 0; + slave->sii.std_tx_mailbox_size = 0; + slave->sii.mailbox_protocols = 0; + EC_SLAVE_ERR(slave, "Unexpected mailbox offset in SII data.\n"); + } + if (slave->sii_nwords == EC_FIRST_SII_CATEGORY_OFFSET) { // sii does not contain category data fsm->state = ec_fsm_slave_scan_state_end;