common_data.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdio.h>
  4. #define MAX_ACTUATORS_COUNT 8
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef enum{
  9. EVENT_TASK
  10. , EVENT_T1
  11. , EVENT_TOF
  12. , EVENT_T2
  13. , EVENT_LAND
  14. , EVENT_ABORT
  15. , EVENT_STOP
  16. , EVENT_RESUM
  17. , EVENT_MAX
  18. , EVENT_UNKNOWN // need be last
  19. } EVENT_t;
  20. typedef enum{
  21. ABORT_FALSE
  22. , ABORT_TRUE
  23. } ABORT_t;
  24. typedef enum{
  25. FCACTION_EMPTY
  26. , FCACTION_TAKEOFF
  27. , FCACTION_LAND
  28. , FCACTION_STOP
  29. , FCACTION_RESUM
  30. } FCACTION_t;
  31. typedef enum{
  32. STATE_INIT
  33. , STATE_PRESTART
  34. , STATE_TAKEOFF
  35. , STATE_STOP
  36. , STATE_RESUM
  37. , STATE_HOLD
  38. , STATE_DESCENT
  39. , STATE_MAX
  40. , STATE_UNKNOWN // need be last
  41. } STATE_t;
  42. typedef enum{
  43. ACTION_T1
  44. , ACTION_TAKEOFF
  45. , ACTION_T2
  46. , ACTION_LAND
  47. , ACTION_RESET
  48. , ACTION_LAND_RESET
  49. , ACTION_REINIT
  50. , ACTION_STOP
  51. , ACTION_RESUM
  52. , ACTION_MAX
  53. } ACTION_t;
  54. /*
  55. * Взято из MAVSDK для совместимости.
  56. */
  57. typedef enum{
  58. Unknown, /**< @brief Mode not known. */
  59. Ready, /**< @brief Armed and ready to take off. */
  60. Takeoff, /**< @brief Taking off. */
  61. Hold, /**< @brief Holding (hovering in place (or circling for fixed-wing vehicles). */
  62. Mission, /**< @brief In mission. */
  63. ReturnToLaunch, /**< @brief Returning to launch position (then landing). */
  64. Land, /**< @brief Landing. */
  65. Offboard, /**< @brief In 'offboard' mode. */
  66. FollowMe, /**< @brief In 'follow-me' mode. */
  67. Manual, /**< @brief In 'Manual' mode. */
  68. Altctl, /**< @brief In 'Altitude Control' mode. */
  69. Posctl, /**< @brief In 'Position Control' mode. */
  70. Acro, /**< @brief In 'Acro' mode. */
  71. Stabilized, /**< @brief In 'Stabilize' mode. */
  72. Rattitude, /**< @brief In 'Rattitude' mode. */
  73. } FlightMode;
  74. typedef enum{
  75. NoGps, /**< @brief No GPS connected. */
  76. NoFix, /**< @brief No position information, GPS is connected. */
  77. Fix2D, /**< @brief 2D position. */
  78. Fix3D, /**< @brief 3D position. */
  79. FixDgps, /**< @brief DGPS/SBAS aided 3D position. */
  80. RtkFloat, /**< @brief RTK float, 3D position. */
  81. RtkFixed, /**< @brief RTK Fixed, 3D position. */
  82. } FixType;
  83. // **********
  84. typedef enum{
  85. FAIL_UNDEFINED = -1
  86. , FAIL_GPS
  87. , FAIL_BATTERY
  88. , FAIL_MOTOR
  89. , FAIL_POWER
  90. , FAIL_UNKNOWN
  91. } FAIL_TYPE_t;
  92. /*
  93. * Полетное задание.
  94. * Чтение: BC_TLM_SRV, BC_FTC
  95. * Запись: BC_CTL_SRV (полная)
  96. */
  97. #pragma pack(push, 1)
  98. typedef struct{
  99. FAIL_TYPE_t type;
  100. int time;
  101. } fail_t;
  102. typedef struct{
  103. uint16_t hight;
  104. int start_time;
  105. int hang_time;
  106. } flight_task_t;
  107. /*
  108. * Телеметрия контроллера полетного задания.
  109. * Чтение: BC_TLM_SRV
  110. * Запись: BC_FTC (неполная)
  111. */
  112. typedef struct{
  113. STATE_t state_flg;
  114. int timer_1;
  115. int timer_2;
  116. EVENT_t event;
  117. } ftc_tlm_t;
  118. /*
  119. * Телеметрия полетного контроллера.
  120. * Чтение: BC_FTC, BC_TLM_SRV
  121. * Запись: BC_FC_TLM
  122. */
  123. typedef struct{
  124. FlightMode flight_mode;
  125. FixType gps_fix;
  126. uint8_t actuators_count;
  127. int actuators[MAX_ACTUATORS_COUNT];
  128. float hight;
  129. float speed;
  130. double lat;
  131. double lon;
  132. fail_t fail;
  133. } fc_tlm_t;
  134. /*
  135. * Телеметрия бортового компьютера.
  136. * Чтение: BC_TLM_SRV
  137. * Запись: BC_TLM_SRV
  138. */
  139. typedef struct{
  140. float temperature;
  141. } bc_tlm_t;
  142. typedef struct{
  143. fc_tlm_t fc_tlm;
  144. ftc_tlm_t ftc_tlm;
  145. bc_tlm_t bc_tlm;
  146. } gcs_tlm_t;
  147. #pragma pack(pop)
  148. void flight_task_init(flight_task_t*);
  149. void ftc_tlm_init(ftc_tlm_t*);
  150. void fc_tlm_init(fc_tlm_t*);
  151. void bc_tlm_init(bc_tlm_t*);
  152. void gcs_tlm_print(const gcs_tlm_t tlm);
  153. void fail_init(fail_t*);
  154. #ifdef __cplusplus
  155. };
  156. #endif