user_server.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #ifndef _USER_SERVER_H__
  2. #define _USER_SERVER_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #include "user_can.h"
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #define USER_SERVER_INTERVAL 10
  11. #define S_INS_WR_BYTE 0x2F //写操作发送命令字1个字节
  12. #define S_INS_WR_WORD 0x2B //写操作发送命令字2个字节
  13. #define S_INS_WR_DWORD 0x23 //写操作发送命令字4个字节
  14. #define R_INS_WR_SUCC 0x60 //写操作成功接收命令字
  15. #define R_INS_WR_FAIL 0x80 //写操作失败接收命令字
  16. #define S_INS_RD 0x40 //读操作发送命令字
  17. #define R_INS_RD_BYTE 0x4F //读操作接收命令字1个字节
  18. #define R_INS_RD_WORD 0x4B //读操作接收命令字2个字节
  19. #define R_INS_RD_DWORD 0x43 //读操作接收命令字4个字节
  20. #define R_INS_WR_FAIL 0x80 //读错误接收命令字
  21. #define DEV_TYPE 0x0000
  22. #define REG_DEV_TYPE_IDX 0x6000
  23. #define REG_DEV_TYPE_SUBIDX 0x00
  24. #define REG_VERSION_IDX 0x6003
  25. #define REG_VERSION_SUBIDX 0x00
  26. #define REG_ELECT_STAT_IDX 0x6011
  27. #define REG_ELECT_STAT_SUBIDX 0x00
  28. #define REG_LIGHT_STAT_IDX 0x6015
  29. #define REG_LIGHT_STAT_SUBIDX 0x00
  30. #define REG_RGB_STAT_ID_IDX 0x6016
  31. #define REG_RGB_STAT_LEFT_ID_SUBIDX 0x00
  32. #define REG_RGB_STAT_RIGHT_ID_SUBIDX 0x01
  33. #define REG_TEMP_ID_IDX 0x6017
  34. #define REG_TEMP_ONBOAD_ID_SUBIDX 0x00
  35. #define REG_HUMI_ID_IDX 0x6018
  36. #define REG_HUMI_ONBOAD_ID_SUBIDX 0x00
  37. typedef struct{
  38. uint16_t left_elect_control:1;
  39. uint16_t :3;
  40. uint16_t right_elect_control:1;
  41. uint16_t :3;
  42. uint16_t left_elect_enable:1;
  43. uint16_t :3;
  44. uint16_t right_elect_enable:1;
  45. uint16_t :3;
  46. }__attribute__((packed))cabi_elect_control_s;
  47. typedef struct{
  48. uint16_t left_elect_stat:1;
  49. uint16_t :3;
  50. uint16_t right_elect_stat:1;
  51. uint16_t :3;
  52. uint16_t :8;
  53. }__attribute__((packed))cabi_elect_stat_s;
  54. typedef struct{
  55. uint32_t right_pwm_bright:7;
  56. uint32_t right_pwm_enable:1;
  57. uint32_t left_pwm_bright:7;
  58. uint32_t left_pwm_enable:1;
  59. uint32_t right_light_bright:7;
  60. uint32_t right_light_enable:1;
  61. uint32_t left_light_bright:7;
  62. uint32_t left_light_enable:1;
  63. }__attribute__((packed))cabi_light_control_s;
  64. typedef struct{
  65. uint32_t left_light_bright:8;
  66. uint32_t right_light_bright:8;
  67. uint32_t left_pwm_bright:8;
  68. uint32_t right_pwm_bright:8;
  69. }__attribute__((packed))cabi_light_stat_s;
  70. typedef struct{
  71. uint32_t blue:8;
  72. uint32_t green:8;
  73. uint32_t red:8;
  74. uint32_t flickerstat:3; //状态 0:常暗 1:常亮 2:闪烁 3:呼吸灯 4:流水灯
  75. uint32_t flickerTime:3; //闪烁或呼吸灯变化时间,数值+1
  76. uint32_t flickerType:1; //闪烁或呼吸灯变化时间单位,0代表数值乘以100ms,1代表数值乘以1000ms
  77. uint32_t lock:1; //锁定控制权 0:不锁定 1:锁定
  78. }__attribute__((packed))cabi_rgb_stat_s;
  79. typedef struct{
  80. cabi_elect_stat_s elect_stat;
  81. cabi_light_stat_s light_stat;
  82. cabi_rgb_stat_s left_rgb;
  83. cabi_rgb_stat_s right_rgb;
  84. int16_t temperature;
  85. uint16_t humidity;
  86. }__attribute__((packed))cabi_data_s;
  87. typedef struct{
  88. uint8_t ins;
  89. uint16_t idx;
  90. uint8_t subidx;
  91. uint8_t data[4];
  92. }__attribute__((packed))can_open_data_s;
  93. typedef enum
  94. {
  95. SERVER_QUEUE_TIME = 0,
  96. SERVER_QUEUE_CAN = 1,
  97. SERVER_BLE_RST = 2,
  98. }USER_SERVER_QUEUE_TYPE;
  99. void vUser_server_init(void);
  100. void vUser_server_task_start(void);
  101. cabi_data_s *vUser_server_get_cabi_data(void);
  102. extern tmosTaskID user_server_task_id;
  103. #ifdef __cplusplus
  104. }
  105. #endif
  106. #endif // ACTION_MOTOR_H__
  107. /** @} */