diff --git a/app/drivers/sertrf/protocol/p_protocol.c b/app/drivers/sertrf/protocol/p_protocol.c index 23df10b..75a36cf 100644 --- a/app/drivers/sertrf/protocol/p_protocol.c +++ b/app/drivers/sertrf/protocol/p_protocol.c @@ -145,15 +145,17 @@ protocol_status_t get_protocol_status(void) { protocol.protocol_status = PROTOCOL_STATUS_OK; - if(protocol.pro_type == PROTOCOL_IDLE) + // 先OTA升级、未知协议、未收到飞控数据 + if(protocol.message_status == MESSAGE_OTA) + { + protocol.protocol_status = PROTOCOL_STATUS_IN_OTA; + } + else if(protocol.pro_type == PROTOCOL_IDLE) { protocol.protocol_status = PROTOCOL_STATUS_TYPE_IDLE; } else if(protocol.analysis_sussess_count == 0) { protocol.protocol_status = PROTOCOL_STATUS_NO_DATA; - } else if(protocol.message_status == MESSAGE_OTA) - { - protocol.protocol_status = PROTOCOL_STATUS_IN_OTA; } protocol.analysis_sussess_count = 0; diff --git a/app/drivers/sertrf/sertrf.c b/app/drivers/sertrf/sertrf.c index d258639..165ccd1 100644 --- a/app/drivers/sertrf/sertrf.c +++ b/app/drivers/sertrf/sertrf.c @@ -394,7 +394,12 @@ void resend_user_parse(void *resend_device) //设置协议状态,为了后续灯颜色变化 protocol_set_message_status(MESSAGE_OTA); // if(!sertrf.resend_device.status.resend_flag) + //初始化ota会占用大量系统资源,需要先把飞控获取数据关闭,不然会导致栈溢出 + sb_data_port_stop(sertrf.device.embedded_device); otau_init(&sertrf.otau); + + + sertrf.mode_status.task_state = DATA_HANDLE_OTA_DATA; resend_send_cmd(resend_device, RESEND_CMD_ACK, 0); } break;