command.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef __COMMAND_H__
  2. #define __COMMAND_H__
  3. #include <rtthread.h>
  4. /* Command */
  5. // down-link
  6. #define COMMAND_NONE 0X0000
  7. #define COMMAND_CAR_STOP 0X0001
  8. #define COMMAND_CAR_FORWARD 0X0002
  9. #define COMMAND_CAR_BACKWARD 0X0003
  10. #define COMMAND_CAR_TURNLEFT 0X0004
  11. #define COMMAND_CAR_TURNRIGHT 0X0005
  12. #define COMMAND_CAR_FORWARD_WITH_PARAM 0X1002
  13. #define COMMAND_CAR_BACKWARD_WITH_PARAM 0X1003
  14. #define COMMAND_CAR_TURNLEFT_WITH_PARAM 0X1004
  15. #define COMMAND_CAR_TURNRIGHT_WITH_PARAM 0X1005
  16. #define COMMAND_SET_PID 0x3000
  17. #define COMMAND_RESET_PID 0x4000
  18. #define COMMAND_REQUEST_PID 0x5000
  19. // up-link
  20. #define COMMAND_RC_VIBRATE 0x2000
  21. #define COMMAND_SEND_PID 0x6000
  22. #define COMMAND_SEND_SENSOR 0x6001
  23. #define COMMAND_SEND_RPY 0x6002
  24. struct cmd_dt_pid
  25. {
  26. int id;
  27. float kp;
  28. float ki;
  29. float kd;
  30. };
  31. struct cmd_dt_sensor
  32. {
  33. int32_t acc_x;
  34. int32_t acc_y;
  35. int32_t acc_z;
  36. int32_t gyro_x;
  37. int32_t gyro_y;
  38. int32_t gyro_z;
  39. int32_t mag_x;
  40. int32_t mag_y;
  41. int32_t mag_z;
  42. };
  43. struct cmd_dt_rpy
  44. {
  45. float roll;
  46. float pitch;
  47. float yaw;
  48. };
  49. struct command_sender
  50. {
  51. char *name;
  52. rt_err_t (*send)(rt_int16_t cmd, void *param, rt_uint16_t size);
  53. };
  54. typedef struct command_sender *command_sender_t;
  55. struct command_info
  56. {
  57. rt_int16_t cmd;
  58. void *target;
  59. };
  60. typedef struct command_info *command_info_t;
  61. rt_err_t command_register(rt_int16_t cmd, void (*handler)(command_info_t info, void *param, rt_uint16_t size));
  62. rt_err_t command_unregister(rt_int16_t cmd);
  63. rt_err_t command_handle(rt_int16_t cmd, void *param, rt_uint16_t size, void *target);
  64. rt_err_t command_send(command_sender_t sender, rt_int16_t cmd, void *param, rt_uint16_t size);
  65. #endif