master/fsm_foe.c
changeset 2602 66a4df6c9ffa
parent 2601 9b36a16271e6
child 2603 d366b909b486
equal deleted inserted replaced
2601:9b36a16271e6 2602:66a4df6c9ffa
    52 #define EC_FOE_HEADER_SIZE 6
    52 #define EC_FOE_HEADER_SIZE 6
    53 // uint8_t  OpCode
    53 // uint8_t  OpCode
    54 // uint8_t  reserved
    54 // uint8_t  reserved
    55 // uint32_t PacketNo, Password, ErrorCode
    55 // uint32_t PacketNo, Password, ErrorCode
    56 
    56 
    57 //#define DEBUG_FOE
    57 #define DEBUG_FOE
    58 
    58 
    59 /*****************************************************************************/
    59 /*****************************************************************************/
    60 
    60 
    61 /** FoE OpCodes.
    61 /** FoE OpCodes.
    62  */
    62  */
   772 
   772 
   773     if (opCode == EC_FOE_OPCODE_BUSY) {
   773     if (opCode == EC_FOE_OPCODE_BUSY) {
   774         if (ec_foe_prepare_send_ack(fsm, datagram)) {
   774         if (ec_foe_prepare_send_ack(fsm, datagram)) {
   775             ec_foe_set_rx_error(fsm, FOE_PROT_ERROR);
   775             ec_foe_set_rx_error(fsm, FOE_PROT_ERROR);
   776         }
   776         }
       
   777         fsm->state = ec_fsm_foe_state_sent_ack;
   777         return;
   778         return;
   778     }
   779     }
   779 
   780 
   780     if (opCode == EC_FOE_OPCODE_ERR) {
   781     if (opCode == EC_FOE_OPCODE_ERR) {
   781         fsm->request->error_code = EC_READ_U32(data + 2);
   782         fsm->request->error_code = EC_READ_U32(data + 2);
   884         fsm->rx_expected_packet_no = 0;
   885         fsm->rx_expected_packet_no = 0;
   885         fsm->request->data_size = fsm->rx_buffer_offset;
   886         fsm->request->data_size = fsm->rx_buffer_offset;
   886         fsm->state = ec_fsm_foe_end;
   887         fsm->state = ec_fsm_foe_end;
   887     }
   888     }
   888     else {
   889     else {
   889         fsm->rx_expected_packet_no++;
   890         fsm->rx_expected_packet_no++; // this should not be incremented when BUSY
   890         fsm->retries = EC_FSM_RETRIES;
   891         fsm->retries = EC_FSM_RETRIES;
   891         fsm->state = ec_fsm_foe_state_data_check;
   892         fsm->state = ec_fsm_foe_state_data_check;
   892     }
   893     }
   893 }
   894 }
   894 
   895