diff --git a/app/drivers/sertrf/protocol/resend_protl.h b/app/drivers/sertrf/protocol/resend_protl.h index 871882b..c4de39f 100644 --- a/app/drivers/sertrf/protocol/resend_protl.h +++ b/app/drivers/sertrf/protocol/resend_protl.h @@ -34,7 +34,7 @@ typedef enum RESEND_CMD_DATA_ACK = 0x06, - RESEND_CMD_MODE_STATUS = 0x07, + RESEND_CMD_ERROR_CODE = 0x07, RESEND_CMD_OTA_GET_PARAM = 0x010, RESEND_CMD_OTA_START = 0x011, diff --git a/app/drivers/sertrf/sertrf.c b/app/drivers/sertrf/sertrf.c index 98e0958..744477b 100644 --- a/app/drivers/sertrf/sertrf.c +++ b/app/drivers/sertrf/sertrf.c @@ -211,7 +211,8 @@ void task_thread(void* arg) static size_t end_time = 0; if(start_time - end_time > 2000) { - switch(get_protocol_status()) + sertrf.fc_protocol_status = get_protocol_status(); + switch(sertrf.fc_protocol_status) { case PROTOCOL_STATUS_OK: // rgb_color_change(1, sertrf.device.last_color); @@ -664,4 +665,11 @@ int stmisp_recv(void* data, uint16_t len, int timeout) int stmisp_get_length(void) { return embedded_device_get_rx_length(&sertrf.device); +} + +int app_send_error_code(uint8_t error_code) +{ + sertrf.mode_status.sertrf_error_code = error_code; + + return resend_send_data(&sertrf.resend_device, RESEND_CMD_ERROR_CODE, &sertrf.mode_status.sertrf_error_code, sizeof(sertrf_mode_status_t), 1000); } \ No newline at end of file diff --git a/app/drivers/sertrf/sertrf.h b/app/drivers/sertrf/sertrf.h index 7d75d4f..27dc05c 100644 --- a/app/drivers/sertrf/sertrf.h +++ b/app/drivers/sertrf/sertrf.h @@ -21,10 +21,22 @@ typedef enum DATA_HANDLE_ISP_DATA, DATA_HANDLE_ISP_DATA_END }data_handle_e; -typedef struct +typedef enum +{ + SERTRF_ERROR_NONE = 0, + SERTRF_ERROR_OTA_INIT = 10, // ota初始化失败 + SERTRF_ERROR_OTA_DATA, // ota数据传输异常 + SERTRF_ERROR_OTA_END, // ota 结束异常 + + SERTRF_ERROR_FC_ISP_UART_TYPE = 30, // 飞控ISP 无法识别其协议 + SERTRF_ERROR_FC_ISP_UART_DATA, // 飞控ISP 无法收到其数据 + SERTRF_ERROR_FC_ISP_SYNC, // 飞控ISP 无法与ISP建立连接,需判断BOOT键是否有效 +}sertrf_error_code_e; +typedef struct __attribute__((packed)) { data_handle_e task_state; + uint16_t sertrf_error_code; }sertrf_mode_status_t; typedef struct { @@ -55,6 +67,9 @@ typedef struct uint8_t efuse_mac[6]; uint8_t efuse_mac_encrypt[6]; + // 记录错误信息 + protocol_status_e fc_protocol_status; //飞控连接端的协议状态 + }sertrf_t; typedef struct __attribute__((packed))