#ifndef _USER_SERVER_H__ #define _USER_SERVER_H__ #include #include #include "define.h" #include "user_can.h" #ifdef __cplusplus extern "C" { #endif #define USER_SERVER_INTERVAL 10 #define S_INS_WR_BYTE 0x2F //写操作发送命令字1个字节 #define S_INS_WR_WORD 0x2B //写操作发送命令字2个字节 #define S_INS_WR_DWORD 0x23 //写操作发送命令字4个字节 #define R_INS_WR_SUCC 0x60 //写操作成功接收命令字 #define R_INS_WR_FAIL 0x80 //写操作失败接收命令字 #define S_INS_RD 0x40 //读操作发送命令字 #define R_INS_RD_BYTE 0x4F //读操作接收命令字1个字节 #define R_INS_RD_WORD 0x4B //读操作接收命令字2个字节 #define R_INS_RD_DWORD 0x43 //读操作接收命令字4个字节 #define R_INS_WR_FAIL 0x80 //读错误接收命令字 #define DEV_TYPE 0x0000 #define REG_DEV_TYPE_IDX 0x6000 #define REG_DEV_TYPE_SUBIDX 0x00 #define REG_VERSION_IDX 0x6003 #define REG_VERSION_SUBIDX 0x00 #define REG_KEY_STAT_IDX 0x6010 #define REG_KEY_STAT_SUBIDX 0x00 #define REG_ELECT_STAT_IDX 0x6011 #define REG_ELECT_STAT_SUBIDX 0x00 #define REG_LEFT_KEY_ID_IDX 0x6020 #define REG_LEFT_KEY_ID_SUBIDX 0x00 #define REG_RIGHT_KEY_ID_IDX 0x6024 #define REG_RIGHT_KEY_ID_SUBIDX 0x00 typedef struct{ uint16_t left_key_stat:1; uint16_t left_charge_stat:1; uint16_t :6; uint16_t right_key_stat:1; uint16_t right_charge_stat:1; uint16_t :6; }__attribute__((packed))key_stat_s; typedef struct{ uint16_t left_elect_control:1; uint16_t left_charge_control:1; uint16_t :2; uint16_t right_elect_control:1; uint16_t right_charge_control:1; uint16_t :2; uint16_t left_elect_enable:1; uint16_t left_charge_enable:1; uint16_t :2; uint16_t right_elect_enable:1; uint16_t right_charge_enable:1; uint16_t :2; }__attribute__((packed))key_elect_control_s; typedef struct{ uint16_t left_key_elect_stat:1; uint16_t left_charge_stat:1; uint16_t :2; uint16_t right_key_elect_stat:1; uint16_t right_charge_stat:1; uint16_t :2; uint16_t :8; }__attribute__((packed))key_elect_stat_s; typedef struct{ key_stat_s key_stat; key_elect_stat_s elect_stat; uint8_t left_key_id[4]; uint8_t right_key_id[4]; }__attribute__((packed))key_data_s; typedef struct{ uint8_t ins; uint16_t idx; uint8_t subidx; uint8_t data[4]; }__attribute__((packed))can_open_data_s; typedef enum { SERVER_QUEUE_TIME = 0, SERVER_QUEUE_CAN = 1, SERVER_BLE_RST = 2, }USER_SERVER_QUEUE_TYPE; void vUser_server_init(void); void vUser_server_task_start(void); key_data_s *vUser_server_get_key_data(void); extern tmosTaskID user_server_task_id; #ifdef __cplusplus } #endif #endif // ACTION_MOTOR_H__ /** @} */