master/fsm_soe.c
changeset 1877 7b77000f9764
parent 1873 219be3742274
child 1881 f0047c6226c0
equal deleted inserted replaced
1876:0ebb802ac08d 1877:7b77000f9764
    69 void ec_fsm_soe_write_check(ec_fsm_soe_t *);
    69 void ec_fsm_soe_write_check(ec_fsm_soe_t *);
    70 void ec_fsm_soe_write_response(ec_fsm_soe_t *);
    70 void ec_fsm_soe_write_response(ec_fsm_soe_t *);
    71 
    71 
    72 void ec_fsm_soe_end(ec_fsm_soe_t *);
    72 void ec_fsm_soe_end(ec_fsm_soe_t *);
    73 void ec_fsm_soe_error(ec_fsm_soe_t *);
    73 void ec_fsm_soe_error(ec_fsm_soe_t *);
       
    74 
       
    75 /*****************************************************************************/
       
    76 
       
    77 extern const ec_code_msg_t soe_error_codes[];
       
    78 
       
    79 /*****************************************************************************/
       
    80 
       
    81 /** Outputs an SoE error code.
       
    82 */
       
    83 void ec_print_soe_error(uint16_t error_code)
       
    84 {
       
    85     const ec_code_msg_t *error_msg;
       
    86 
       
    87     for (error_msg = soe_error_codes; error_msg->code; error_msg++) {
       
    88         if (error_msg->code == error_code) {
       
    89             EC_ERR("SoE error 0x%04X: \"%s\".\n",
       
    90                    error_msg->code, error_msg->message);
       
    91             return;
       
    92         }
       
    93     }
       
    94 
       
    95     EC_ERR("Unknown SoE error 0x%04X.\n", error_code);
       
    96 }
    74 
    97 
    75 /*****************************************************************************/
    98 /*****************************************************************************/
    76 
    99 
    77 /** Constructor.
   100 /** Constructor.
    78  */
   101  */
   351         return;
   374         return;
   352     }
   375     }
   353 
   376 
   354     if (error_flag) {
   377     if (error_flag) {
   355         req->error_code = EC_READ_U16(data + rec_size - 2);
   378         req->error_code = EC_READ_U16(data + rec_size - 2);
   356         EC_ERR("Received error response: 0x%04x.\n",
   379         EC_ERR("Received error response:\n");
   357                 req->error_code);
   380         ec_print_soe_error(req->error_code);
   358         fsm->state = ec_fsm_soe_error;
   381         fsm->state = ec_fsm_soe_error;
   359         return;
   382         return;
   360     } else {
   383     } else {
   361         req->error_code = 0x0000;
   384         req->error_code = 0x0000;
   362     }
   385     }
   656         if (rec_size < EC_SOE_WRITE_RESPONSE_SIZE + 2) {
   679         if (rec_size < EC_SOE_WRITE_RESPONSE_SIZE + 2) {
   657             EC_ERR("Received corrupted error response - error flag set,"
   680             EC_ERR("Received corrupted error response - error flag set,"
   658                     " but received size is %zu.\n", rec_size);
   681                     " but received size is %zu.\n", rec_size);
   659         } else {
   682         } else {
   660             req->error_code = EC_READ_U16(data + EC_SOE_WRITE_RESPONSE_SIZE);
   683             req->error_code = EC_READ_U16(data + EC_SOE_WRITE_RESPONSE_SIZE);
   661             EC_ERR("Received error response: 0x%04x.\n",
   684             EC_ERR("Received error response:\n");
   662                     req->error_code);
   685             ec_print_soe_error(req->error_code);
   663         }
   686         }
   664         ec_print_data(data, rec_size);
   687         ec_print_data(data, rec_size);
   665         fsm->state = ec_fsm_soe_error;
   688         fsm->state = ec_fsm_soe_error;
   666         return;
   689         return;
   667     } else {
   690     } else {