master/fsm_slave_config.c
changeset 1471 2ec173081b7f
parent 1458 bba02b6a4492
child 1491 40529f2f60bd
equal deleted inserted replaced
1470:cb424feef942 1471:2ec173081b7f
   286 {
   286 {
   287     ec_slave_t *slave = fsm->slave;
   287     ec_slave_t *slave = fsm->slave;
   288     ec_datagram_t *datagram = fsm->datagram;
   288     ec_datagram_t *datagram = fsm->datagram;
   289     size_t sync_size;
   289     size_t sync_size;
   290 
   290 
   291     if (!slave->sii.sync_count) { // FIXME use base_sync_count?
   291     if (!slave->base_sync_count) {
   292         // no sync managers
   292         // no sync managers
   293         ec_fsm_slave_config_enter_dc_clear_assign(fsm);
   293         ec_fsm_slave_config_enter_dc_clear_assign(fsm);
   294         return;
   294         return;
   295     }
   295     }
   296 
   296 
   297     if (slave->master->debug_level)
   297     if (slave->master->debug_level)
   298         EC_DBG("Clearing sync manager configurations of slave %u...\n",
   298         EC_DBG("Clearing sync manager configurations of slave %u...\n",
   299                 slave->ring_position);
   299                 slave->ring_position);
   300 
   300 
   301     sync_size = EC_SYNC_PAGE_SIZE * slave->sii.sync_count;
   301     sync_size = EC_SYNC_PAGE_SIZE * slave->base_sync_count;
   302 
   302 
   303     // clear sync manager configurations
   303     // clear sync manager configurations
   304     ec_datagram_fpwr(datagram, slave->station_address, 0x0800, sync_size);
   304     ec_datagram_fpwr(datagram, slave->station_address, 0x0800, sync_size);
   305     memset(datagram->data, 0x00, sync_size);
   305     memset(datagram->data, 0x00, sync_size);
   306     fsm->retries = EC_FSM_RETRIES;
   306     fsm->retries = EC_FSM_RETRIES;
   600         sync.enable = 1;
   600         sync.enable = 1;
   601         ec_sync_page(&sync, 1, slave->sii.std_tx_mailbox_size,
   601         ec_sync_page(&sync, 1, slave->sii.std_tx_mailbox_size,
   602                 EC_DIR_INVALID, // use default direction
   602                 EC_DIR_INVALID, // use default direction
   603                 datagram->data + EC_SYNC_PAGE_SIZE);
   603                 datagram->data + EC_SYNC_PAGE_SIZE);
   604         slave->configured_tx_mailbox_offset =
   604         slave->configured_tx_mailbox_offset =
   605             slave->sii.boot_tx_mailbox_offset;
   605             slave->sii.std_tx_mailbox_offset;
   606         slave->configured_tx_mailbox_size =
   606         slave->configured_tx_mailbox_size =
   607             slave->sii.boot_tx_mailbox_size;
   607             slave->sii.std_tx_mailbox_size;
   608     }
   608     }
   609 
   609 
   610     fsm->take_time = 1;
   610     fsm->take_time = 1;
   611 
   611 
   612     fsm->retries = EC_FSM_RETRIES;
   612     fsm->retries = EC_FSM_RETRIES;