/* 控制命令 */ #include "module/cmd.h" #include /*************************************************************************/ /*********************************仲裁器**********************************/ /*************************************************************************/ /*************************************************************************/ /**********************************RC*************************************/ /*************************************************************************/ /* Includes ----------------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */ /* Private macro ------------------------------------------------------------ */ /* Private variables -------------------------------------------------------- */ /* Private function -------------------------------------------------------- */ /* Exported functions ------------------------------------------------------- */ #define RC_SELECT_Index 1 /* 扩展接口 */ #if RC_SELECT_Index == 0 #define FOR_EACH_RC(_) _(dr16, DR16) #elif RC_SELECT_Index == 1 #define FOR_EACH_RC(_) _(at9s, AT9S) #endif #if RC_SELECT_Index == 0 #include "device/dr16.h" #elif RC_SELECT_Index == 1 #include "device/at9s_pro.h" #endif #define X_FIELD(name, NAME) DEVICE_##NAME##_t name; #define X_EXTERN(name, NAME) extern DEVICE_##NAME##_t name##_out; #define X_COPY(name, NAME) \ static void copy_##name(rc_u *dst) { dst->name = name##_out; } #define X_REF(name, NAME) copy_##name, union rc_u{ FOR_EACH_RC(X_FIELD) }; FOR_EACH_RC(X_EXTERN) FOR_EACH_RC(X_COPY) /*静态缓冲区,供返回使用*/ static rc_u rc_buffer; CMD_RCInputData_t rc; int8_t Cmd_get_rc(CMD_RCInputData_t *dst) { FOR_EACH_RC(X_REF)(&rc_buffer); dst->rc = &rc_buffer; dst->rc_type = RC_SELECT_Index; return CMD_OK; } /*************************************************************************/ /**********************************PC*************************************/ /*************************************************************************/ /*************************************************************************/ /**********************************NUC*************************************/ /*************************************************************************/ /*************************************************************************/ /**********************************REF*************************************/ /*************************************************************************/ /*************************************************************************/ /*********************************分发命令*********************************/ /*************************************************************************/