426 " datagram failed: "); |
426 " datagram failed: "); |
427 ec_datagram_print_wc_error(datagram); |
427 ec_datagram_print_wc_error(datagram); |
428 } else { |
428 } else { |
429 code = EC_READ_U16(datagram->data); |
429 code = EC_READ_U16(datagram->data); |
430 for (al_msg = al_status_messages; al_msg->code != 0xffff; al_msg++) { |
430 for (al_msg = al_status_messages; al_msg->code != 0xffff; al_msg++) { |
431 if (al_msg->code != code) continue; |
431 if (al_msg->code != code) { |
|
432 continue; |
|
433 } |
|
434 |
432 EC_SLAVE_ERR(fsm->slave, "AL status message 0x%04X: \"%s\".\n", |
435 EC_SLAVE_ERR(fsm->slave, "AL status message 0x%04X: \"%s\".\n", |
433 al_msg->code, al_msg->message); |
436 al_msg->code, al_msg->message); |
434 break; |
437 break; |
435 } |
438 } |
436 if (!al_msg->code) |
439 if (al_msg->code == 0xffff) { /* not found in our list. */ |
437 EC_SLAVE_ERR(fsm->slave, "Unknown AL status code 0x%04X.\n", |
440 EC_SLAVE_ERR(fsm->slave, "Unknown AL status code 0x%04X.\n", |
438 code); |
441 code); |
|
442 } |
439 } |
443 } |
440 |
444 |
441 // acknowledge "old" slave state |
445 // acknowledge "old" slave state |
442 ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x0120, 2); |
446 ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x0120, 2); |
443 EC_WRITE_U16(datagram->data, fsm->slave->current_state); |
447 EC_WRITE_U16(datagram->data, fsm->slave->current_state); |