master/fsm_soe.c
changeset 1840 06fcb795525b
parent 1838 1fca55f14b06
child 1864 0a6b3aacc847
equal deleted inserted replaced
1839:7f36c38e2518 1840:06fcb795525b
   595 		return;
   595 		return;
   596 	}
   596 	}
   597 
   597 
   598 	error_flag = (EC_READ_U8(data) >> 4) & 1;
   598 	error_flag = (EC_READ_U8(data) >> 4) & 1;
   599 	if (error_flag) {
   599 	if (error_flag) {
   600 		req->error_code = EC_READ_U16(data + rec_size - 2);
   600 		if (rec_size < EC_SOE_WRITE_RESPONSE_SIZE + 2) {
   601 		EC_ERR("Received error response: 0x%04x.\n",
   601 			EC_ERR("Received corrupted error response - error flag set,"
   602 				req->error_code);
   602 					" but received size is %zu.\n", rec_size);
   603         fsm->state = ec_fsm_soe_error;
   603 		} else {
       
   604 			req->error_code = EC_READ_U16(data + EC_SOE_WRITE_RESPONSE_SIZE);
       
   605 			EC_ERR("Received error response: 0x%04x.\n",
       
   606 					req->error_code);
       
   607 		}
       
   608 		ec_print_data(data, rec_size);
       
   609 		fsm->state = ec_fsm_soe_error;
   604         return;
   610         return;
   605 	} else {
   611 	} else {
   606 		req->error_code = 0x0000;
   612 		req->error_code = 0x0000;
   607 	}
   613 	}
   608 
   614 
   609 	if (master->debug_level) {
       
   610 		EC_DBG("IDN data:\n");
       
   611 		ec_print_data(req->data, req->data_size);
       
   612 	}
       
   613 
       
   614     fsm->state = ec_fsm_soe_end; // success
   615     fsm->state = ec_fsm_soe_end; // success
   615 }
   616 }
   616 
   617 
   617 /*****************************************************************************/
   618 /*****************************************************************************/
   618 
   619