///*
//  DR16接收机通信任务（支持DR16和SBUS双协议）
//*/

///* Includes ----------------------------------------------------------------- */
//#include <string.h>
//#include "dr16.h"
//#include "LD_remote.h" // 新增 SBUS 支持
//#include "user_task.h"

///* Private typedef ---------------------------------------------------------- */
///* Private define ----------------------------------------------------------- */
//#define PROTOCOL_DR16  0
//#define PROTOCOL_SBUS  1

/* Private macro ------------------------------------------------------------ */
///* Private variables -------------------------------------------------------- */
//#ifdef DEBUG
//DR16_t dr16;
//CMD_RC_t cmd_rc;
//#else
//static DR16_t dr16;
//static CMD_RC_t cmd_rc;
//#endif

//static uint8_t protocol_type = PROTOCOL_DR16; // 当前协议类型
// uint8_t sbus_rx_buf[36]; // SBUS 数据缓冲区

///* Private function --------------------------------------------------------- */
///**
// * \brief 协议识别函数
// *
// * \param buf 接收到的数据缓冲区
// * \return uint8_t 协议类型：PROTOCOL_DR16 或 PROTOCOL_SBUS
// */
//static uint8_t Detect_Protocol(const uint8_t *buf) {
//  if (buf[0] == 0x0F && buf[24] == 0x00) { // SBUS 协议特征
//    return PROTOCOL_SBUS;
//  }
//  return PROTOCOL_DR16; // 默认 DR16
//}

///**
// * \brief 统一回调函数
// */
//static void UART_RxCpltCallback(void) {
//  if (Detect_Protocol(sbus_rx_buf) == PROTOCOL_SBUS) {
//    protocol_type = PROTOCOL_SBUS;
//  } else {
//    protocol_type = PROTOCOL_DR16;
//  }
//  osThreadFlagsSet(osThreadGetId(), SIGNAL_DR16_RAW_REDY);
//}

///* Exported functions ------------------------------------------------------- */

///**
// * \brief dr16接收机任务（支持DR16和SBUS双协议）
// *
// * \param argument 未使用
// */
//void Task_dr16(void *argument) {
//  (void)argument; /* 未使用，消除警告 */

//  DR16_Init(&dr16); /* 初始化 DR16 */
//  RC_New_Init();    /* 初始化 SBUS */

//  while (1) {
//#ifdef DEBUG
//    /* 调试信息：堆栈水位 */
//    task_runtime.stack_water_mark.dr16 = osThreadGetStackSpace(osThreadGetId());
//#endif

//    /* 开启 DMA 接收 */
//    if (protocol_type == PROTOCOL_DR16) {
//      DR16_StartDmaRecv(&dr16);
//    } else {
//      HAL_UARTEx_ReceiveToIdle_DMA(&huart3, sbus_rx_buf, sizeof(sbus_rx_buf));
//    }

//    /* 等待 DMA 完成 */
//    if (DR16_WaitDmaCplt(30)) {
//      if (protocol_type == PROTOCOL_DR16) {
//        /* DR16 数据处理 */
//        DR16_ParseRaw(&dr16);
//        DR16_ParseRC(&dr16, &cmd_rc);
//      } else {
//        /* SBUS 数据处理 */
//        const RC_Ctrl_New_t *sbus_data = RC_New_GetData();
//        cmd_rc.ch_r_x = sbus_data->ch[0] / 1000.0f; // 映射到 [-1, 1]
//        cmd_rc.ch_r_y = sbus_data->ch[1] / 1000.0f;
//        cmd_rc.ch_l_x = sbus_data->ch[2] / 1000.0f;
//        cmd_rc.ch_l_y = sbus_data->ch[3] / 1000.0f;
//      }
//    } else {
//      /* 处理遥控器离线 */
//      DR16_HandleOffline(&dr16, &cmd_rc);
//    }

//    /* 发送数据到消息队列 */
//    osMessageQueueReset(task_runtime.msgq.cmd.raw.rc);
//    osMessageQueuePut(task_runtime.msgq.cmd.raw.rc, &cmd_rc, 0, 0);
//  }
//}