equal
deleted
inserted
replaced
170 { |
170 { |
171 ec_datagram_t *datagram = fsm->datagram; |
171 ec_datagram_t *datagram = fsm->datagram; |
172 |
172 |
173 // initiate read operation |
173 // initiate read operation |
174 switch (fsm->mode) { |
174 switch (fsm->mode) { |
175 case EC_FSM_SII_POSITION: |
175 case EC_FSM_SII_USE_INCREMENT_ADDRESS: |
176 ec_datagram_apwr(datagram, fsm->slave->ring_position, 0x502, 4); |
176 ec_datagram_apwr(datagram, fsm->slave->ring_position, 0x502, 4); |
177 break; |
177 break; |
178 case EC_FSM_SII_NODE: |
178 case EC_FSM_SII_USE_CONFIGURED_ADDRESS: |
179 ec_datagram_npwr(datagram, fsm->slave->station_address, 0x502, 4); |
179 ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x502, 4); |
180 break; |
180 break; |
181 } |
181 } |
182 |
182 |
183 EC_WRITE_U8 (datagram->data, 0x80); // two address octets |
183 EC_WRITE_U8 (datagram->data, 0x80); // two address octets |
184 EC_WRITE_U8 (datagram->data + 1, 0x01); // request read operation |
184 EC_WRITE_U8 (datagram->data + 1, 0x01); // request read operation |
228 fsm->cycles_start = datagram->cycles_sent; |
228 fsm->cycles_start = datagram->cycles_sent; |
229 fsm->check_once_more = 1; |
229 fsm->check_once_more = 1; |
230 |
230 |
231 // issue check/fetch datagram |
231 // issue check/fetch datagram |
232 switch (fsm->mode) { |
232 switch (fsm->mode) { |
233 case EC_FSM_SII_POSITION: |
233 case EC_FSM_SII_USE_INCREMENT_ADDRESS: |
234 ec_datagram_aprd(datagram, fsm->slave->ring_position, 0x502, 10); |
234 ec_datagram_aprd(datagram, fsm->slave->ring_position, 0x502, 10); |
235 break; |
235 break; |
236 case EC_FSM_SII_NODE: |
236 case EC_FSM_SII_USE_CONFIGURED_ADDRESS: |
237 ec_datagram_nprd(datagram, fsm->slave->station_address, 0x502, 10); |
237 ec_datagram_fprd(datagram, fsm->slave->station_address, 0x502, 10); |
238 break; |
238 break; |
239 } |
239 } |
240 |
240 |
241 fsm->retries = EC_FSM_RETRIES; |
241 fsm->retries = EC_FSM_RETRIES; |
242 fsm->state = ec_fsm_sii_state_read_fetch; |
242 fsm->state = ec_fsm_sii_state_read_fetch; |
322 ) |
322 ) |
323 { |
323 { |
324 ec_datagram_t *datagram = fsm->datagram; |
324 ec_datagram_t *datagram = fsm->datagram; |
325 |
325 |
326 // initiate write operation |
326 // initiate write operation |
327 ec_datagram_npwr(datagram, fsm->slave->station_address, 0x502, 8); |
327 ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x502, 8); |
328 EC_WRITE_U8 (datagram->data, 0x81); // two address octets |
328 EC_WRITE_U8 (datagram->data, 0x81); // two address octets |
329 // + enable write access |
329 // + enable write access |
330 EC_WRITE_U8 (datagram->data + 1, 0x02); // request write operation |
330 EC_WRITE_U8 (datagram->data + 1, 0x02); // request write operation |
331 EC_WRITE_U16(datagram->data + 2, fsm->word_offset); |
331 EC_WRITE_U16(datagram->data + 2, fsm->word_offset); |
332 memset(datagram->data + 4, 0x00, 2); |
332 memset(datagram->data + 4, 0x00, 2); |
374 |
374 |
375 fsm->cycles_start = datagram->cycles_sent; |
375 fsm->cycles_start = datagram->cycles_sent; |
376 fsm->check_once_more = 1; |
376 fsm->check_once_more = 1; |
377 |
377 |
378 // issue check datagram |
378 // issue check datagram |
379 ec_datagram_nprd(datagram, fsm->slave->station_address, 0x502, 2); |
379 ec_datagram_fprd(datagram, fsm->slave->station_address, 0x502, 2); |
380 fsm->retries = EC_FSM_RETRIES; |
380 fsm->retries = EC_FSM_RETRIES; |
381 fsm->state = ec_fsm_sii_state_write_check2; |
381 fsm->state = ec_fsm_sii_state_write_check2; |
382 } |
382 } |
383 |
383 |
384 /*****************************************************************************/ |
384 /*****************************************************************************/ |