god-yuan-hero/User/module/cmd.c
2025-10-31 18:08:29 +08:00

86 lines
2.9 KiB
C

/*
控制命令
*/
#include "module/cmd.h"
#include <string.h>
/*************************************************************************/
/*********************************仲裁器**********************************/
/*************************************************************************/
/*************************************************************************/
/**********************************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*************************************/
/*************************************************************************/
/*************************************************************************/
/*********************************分发命令*********************************/
/*************************************************************************/