86 lines
2.9 KiB
C
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*************************************/
|
|
/*************************************************************************/
|
|
|
|
|
|
/*************************************************************************/
|
|
/*********************************分发命令*********************************/
|
|
/*************************************************************************/
|