Applied base-0025-Ignore-mailbox-settings-if-corrupted-sii-file

Ignore SII specified mailbox settings if they appear to be from
a blank EEPROM.
This commit is contained in:
Knud Baastrup 2014-10-30 08:47:27 +01:00
parent ba27819221
commit 1267e45bf8
1 changed files with 17 additions and 0 deletions

View File

@ -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;