#pragma once #include "device.h" #include "../led_strip/led_strip.h" #include "key.h" #include "protocol/p_protocol.h" #include "protocol/resend_protl.h" #include "protocol/stmisp.h" #include "ota_u.h" #include "tool.h" #include "ring_buffer.h" #include "../../config/app_config.h" #define FC_ADDRESS "0x08000000" #define DATA_HANDLE_BUFFER_SIZE 4096 typedef enum { DATA_HANDLE_IDLE = 0, DATA_HANDLE_OTA_DATA, DATA_HANDLE_OTA_DATA_END, }data_handle_e; typedef struct { data_handle_e task_state; }sertrf_mode_status_t; typedef struct { device_t device; // 任务 os_thread_t embedded_thread; //处理飞控接收 os_thread_t pc_thread; //处理app接收 os_thread_t task_thread; //处理其他任务 os_thread_t app_thread; //处理app任务 os_thread_t data_handle_thread; //数据处理任务 sertrf_mode_status_t mode_status; // ota ota_u_t otau; //自定义协议 resend_device_t resend_device; SemaphoreHandle_t resend_read_mutex; //STMISP协议 stmisp_device_t stmisp_device; // 环形buff RingBuffer data_handle_buffer; uint32_t fc_address; }sertrf_t; typedef struct { char ble_name[32]; char wifi_ap_ssid[32]; char wifi_ap_password[32]; char wifi_sta_ssid[32]; char wifi_sta_password[32]; }sertrf_stauct_t; /** * @brief 模块初始化 */ void sertrf_init(void); /** * @brief 模块启动 */ void sertrf_start(void); /** * @brief 模块停止 */ void sertrf_stop(void); /** * @brief 射频模块开关 */ void sertrf_rf_switch(uint8_t on); /** * @brief 模块数据查看 */ void sertrf_status(void); /** * @brief embedded thread */ void embedded_thread(void* arg); /** * @brief pc thread */ void pc_thread(void* arg); /** * @brief app thread */ void app_thread(void* arg); /** * @brief task thread */ void task_thread(void* arg); /** * @brief data handle thread */ void data_handle_thread(void* arg); /** * @brief 根据连接状态显示不同的颜色 * * @param connect 连接状态 */ void pc_link_rgb_color(device_t* device);