master/fsm_slave.c
changeset 556 dc5829af044d
parent 528 f789bdd78b54
child 594 07dd2a7df66e
equal deleted inserted replaced
555:f4bdb21a6a06 556:dc5829af044d
   694             mbox_sync.physical_start_address = slave->sii_tx_mailbox_offset;
   694             mbox_sync.physical_start_address = slave->sii_tx_mailbox_offset;
   695             mbox_sync.length = slave->sii_tx_mailbox_size;
   695             mbox_sync.length = slave->sii_tx_mailbox_size;
   696             mbox_sync.control_register = 0x26;
   696             mbox_sync.control_register = 0x26;
   697             mbox_sync.enable = 0x01;
   697             mbox_sync.enable = 0x01;
   698             mbox_sync.est_length = 0;
   698             mbox_sync.est_length = 0;
   699             ec_sync_config(&mbox_sync, slave,
   699             ec_slave_sync_config(slave, &mbox_sync,
   700                            datagram->data + EC_SYNC_SIZE * mbox_sync.index);
   700                     datagram->data + EC_SYNC_SIZE * mbox_sync.index);
   701             mbox_sync.index = 1;
   701             mbox_sync.index = 1;
   702             mbox_sync.physical_start_address = slave->sii_rx_mailbox_offset;
   702             mbox_sync.physical_start_address = slave->sii_rx_mailbox_offset;
   703             mbox_sync.length = slave->sii_rx_mailbox_size;
   703             mbox_sync.length = slave->sii_rx_mailbox_size;
   704             mbox_sync.control_register = 0x22;
   704             mbox_sync.control_register = 0x22;
   705             mbox_sync.enable = 0x01;
   705             mbox_sync.enable = 0x01;
   706             mbox_sync.est_length = 0;
   706             mbox_sync.est_length = 0;
   707             ec_sync_config(&mbox_sync, slave,
   707             ec_slave_sync_config(slave, &mbox_sync,
   708                            datagram->data + EC_SYNC_SIZE * mbox_sync.index);
   708                     datagram->data + EC_SYNC_SIZE * mbox_sync.index);
   709         }
   709         }
   710     }
   710     }
   711     else if (slave->sii_mailbox_protocols) { // mailboxes present
   711     else if (slave->sii_mailbox_protocols) { // mailboxes present
   712         list_for_each_entry(sync, &slave->sii_syncs, list) {
   712         list_for_each_entry(sync, &slave->sii_syncs, list) {
   713             // only configure mailbox sync-managers
   713             // only configure mailbox sync-managers
   714             if (sync->index != 0 && sync->index != 1) continue;
   714             if (sync->index != 0 && sync->index != 1) continue;
   715             ec_sync_config(sync, slave,
   715             ec_slave_sync_config(slave, sync,
   716                            datagram->data + EC_SYNC_SIZE * sync->index);
   716                     datagram->data + EC_SYNC_SIZE * sync->index);
   717         }
   717         }
   718     }
   718     }
   719 
   719 
   720     ec_master_queue_datagram(fsm->slave->master, datagram);
   720     ec_master_queue_datagram(fsm->slave->master, datagram);
   721     fsm->retries = EC_FSM_RETRIES;
   721     fsm->retries = EC_FSM_RETRIES;
   826     ec_datagram_npwr(datagram, slave->station_address, 0x0800,
   826     ec_datagram_npwr(datagram, slave->station_address, 0x0800,
   827                      EC_SYNC_SIZE * slave->base_sync_count);
   827                      EC_SYNC_SIZE * slave->base_sync_count);
   828     memset(datagram->data, 0x00, EC_SYNC_SIZE * slave->base_sync_count);
   828     memset(datagram->data, 0x00, EC_SYNC_SIZE * slave->base_sync_count);
   829 
   829 
   830     list_for_each_entry(sync, &slave->sii_syncs, list) {
   830     list_for_each_entry(sync, &slave->sii_syncs, list) {
   831         ec_sync_config(sync, slave,
   831         ec_slave_sync_config(slave, sync,
   832                        datagram->data + EC_SYNC_SIZE * sync->index);
   832                 datagram->data + EC_SYNC_SIZE * sync->index);
   833     }
   833     }
   834 
   834 
   835     ec_master_queue_datagram(fsm->slave->master, datagram);
   835     ec_master_queue_datagram(fsm->slave->master, datagram);
   836     fsm->retries = EC_FSM_RETRIES;
   836     fsm->retries = EC_FSM_RETRIES;
   837     fsm->state = ec_fsm_slave_conf_state_sync2;
   837     fsm->state = ec_fsm_slave_conf_state_sync2;
   892     // configure FMMUs
   892     // configure FMMUs
   893     ec_datagram_npwr(datagram, slave->station_address,
   893     ec_datagram_npwr(datagram, slave->station_address,
   894                      0x0600, EC_FMMU_SIZE * slave->base_fmmu_count);
   894                      0x0600, EC_FMMU_SIZE * slave->base_fmmu_count);
   895     memset(datagram->data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count);
   895     memset(datagram->data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count);
   896     for (j = 0; j < slave->fmmu_count; j++) {
   896     for (j = 0; j < slave->fmmu_count; j++) {
   897         ec_fmmu_config(&slave->fmmus[j], slave,
   897         ec_slave_fmmu_config(slave, &slave->fmmus[j],
   898                        datagram->data + EC_FMMU_SIZE * j);
   898                 datagram->data + EC_FMMU_SIZE * j);
   899     }
   899     }
   900 
   900 
   901     ec_master_queue_datagram(master, datagram);
   901     ec_master_queue_datagram(master, datagram);
   902     fsm->retries = EC_FSM_RETRIES;
   902     fsm->retries = EC_FSM_RETRIES;
   903     fsm->state = ec_fsm_slave_conf_state_fmmu;
   903     fsm->state = ec_fsm_slave_conf_state_fmmu;