master/fsm_change.c
changeset 2409 adb7171e83b1
parent 2176 ad4f7514ba71
child 2413 01f1e120aaa4
equal deleted inserted replaced
2406:fee219bb31a9 2409:adb7171e83b1
     1 /******************************************************************************
     1 /******************************************************************************
     2  *
     2  *
     3  *  $Id$
     3  *  $Id: fsm_change.c,v 37a25c76987b 2011/12/16 10:42:55 fp $
     4  *
     4  *
     5  *  Copyright (C) 2006-2008  Florian Pose, Ingenieurgemeinschaft IgH
     5  *  Copyright (C) 2006-2008  Florian Pose, Ingenieurgemeinschaft IgH
     6  *
     6  *
     7  *  This file is part of the IgH EtherCAT Master.
     7  *  This file is part of the IgH EtherCAT Master.
     8  *
     8  *
   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);