uavcan.equipment.ice.reciprocating.CylinderStatus.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include <canard.h>
  5. #define UAVCAN_EQUIPMENT_ICE_RECIPROCATING_CYLINDERSTATUS_MAX_SIZE 10
  6. #define UAVCAN_EQUIPMENT_ICE_RECIPROCATING_CYLINDERSTATUS_SIGNATURE (0xD68AC83A89D5B36BULL)
  7. struct uavcan_equipment_ice_reciprocating_CylinderStatus {
  8. float ignition_timing_deg;
  9. float injection_time_ms;
  10. float cylinder_head_temperature;
  11. float exhaust_gas_temperature;
  12. float lambda_coefficient;
  13. };
  14. #ifdef __cplusplus
  15. extern "C"
  16. {
  17. #endif
  18. uint32_t _uavcan_equipment_ice_reciprocating_CylinderStatus_encode(struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, uint8_t* buffer
  19. #if CANARD_ENABLE_TAO_OPTION
  20. , bool tao
  21. #endif
  22. );
  23. bool _uavcan_equipment_ice_reciprocating_CylinderStatus_decode(const CanardRxTransfer* transfer, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg);
  24. static inline uint32_t uavcan_equipment_ice_reciprocating_CylinderStatus_encode(struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, uint8_t* buffer
  25. #if CANARD_ENABLE_TAO_OPTION
  26. , bool tao
  27. #endif
  28. ) {
  29. return _uavcan_equipment_ice_reciprocating_CylinderStatus_encode(msg, buffer
  30. #if CANARD_ENABLE_TAO_OPTION
  31. , tao
  32. #endif
  33. );
  34. }
  35. static inline bool uavcan_equipment_ice_reciprocating_CylinderStatus_decode(const CanardRxTransfer* transfer, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg) {
  36. return _uavcan_equipment_ice_reciprocating_CylinderStatus_decode(transfer, msg);
  37. }
  38. #if defined(CANARD_DSDLC_INTERNAL)
  39. static inline void __uavcan_equipment_ice_reciprocating_CylinderStatus_encode(uint8_t* buffer, uint32_t* bit_ofs, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, bool tao);
  40. static inline bool __uavcan_equipment_ice_reciprocating_CylinderStatus_decode(const CanardRxTransfer* transfer, uint32_t* bit_ofs, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, bool tao);
  41. void __uavcan_equipment_ice_reciprocating_CylinderStatus_encode(uint8_t* buffer, uint32_t* bit_ofs, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, bool tao) {
  42. (void)buffer;
  43. (void)bit_ofs;
  44. (void)msg;
  45. (void)tao;
  46. {
  47. uint16_t float16_val = canardConvertNativeFloatToFloat16(msg->ignition_timing_deg);
  48. canardEncodeScalar(buffer, *bit_ofs, 16, &float16_val);
  49. }
  50. *bit_ofs += 16;
  51. {
  52. uint16_t float16_val = canardConvertNativeFloatToFloat16(msg->injection_time_ms);
  53. canardEncodeScalar(buffer, *bit_ofs, 16, &float16_val);
  54. }
  55. *bit_ofs += 16;
  56. {
  57. uint16_t float16_val = canardConvertNativeFloatToFloat16(msg->cylinder_head_temperature);
  58. canardEncodeScalar(buffer, *bit_ofs, 16, &float16_val);
  59. }
  60. *bit_ofs += 16;
  61. {
  62. uint16_t float16_val = canardConvertNativeFloatToFloat16(msg->exhaust_gas_temperature);
  63. canardEncodeScalar(buffer, *bit_ofs, 16, &float16_val);
  64. }
  65. *bit_ofs += 16;
  66. {
  67. uint16_t float16_val = canardConvertNativeFloatToFloat16(msg->lambda_coefficient);
  68. canardEncodeScalar(buffer, *bit_ofs, 16, &float16_val);
  69. }
  70. *bit_ofs += 16;
  71. }
  72. /*
  73. decode uavcan_equipment_ice_reciprocating_CylinderStatus, return true on failure, false on success
  74. */
  75. bool __uavcan_equipment_ice_reciprocating_CylinderStatus_decode(const CanardRxTransfer* transfer, uint32_t* bit_ofs, struct uavcan_equipment_ice_reciprocating_CylinderStatus* msg, bool tao) {
  76. (void)transfer;
  77. (void)bit_ofs;
  78. (void)msg;
  79. (void)tao;
  80. {
  81. uint16_t float16_val;
  82. canardDecodeScalar(transfer, *bit_ofs, 16, true, &float16_val);
  83. msg->ignition_timing_deg = canardConvertFloat16ToNativeFloat(float16_val);
  84. }
  85. *bit_ofs += 16;
  86. {
  87. uint16_t float16_val;
  88. canardDecodeScalar(transfer, *bit_ofs, 16, true, &float16_val);
  89. msg->injection_time_ms = canardConvertFloat16ToNativeFloat(float16_val);
  90. }
  91. *bit_ofs += 16;
  92. {
  93. uint16_t float16_val;
  94. canardDecodeScalar(transfer, *bit_ofs, 16, true, &float16_val);
  95. msg->cylinder_head_temperature = canardConvertFloat16ToNativeFloat(float16_val);
  96. }
  97. *bit_ofs += 16;
  98. {
  99. uint16_t float16_val;
  100. canardDecodeScalar(transfer, *bit_ofs, 16, true, &float16_val);
  101. msg->exhaust_gas_temperature = canardConvertFloat16ToNativeFloat(float16_val);
  102. }
  103. *bit_ofs += 16;
  104. {
  105. uint16_t float16_val;
  106. canardDecodeScalar(transfer, *bit_ofs, 16, true, &float16_val);
  107. msg->lambda_coefficient = canardConvertFloat16ToNativeFloat(float16_val);
  108. }
  109. *bit_ofs += 16;
  110. return false; /* success */
  111. }
  112. #endif
  113. #ifdef CANARD_DSDLC_TEST_BUILD
  114. struct uavcan_equipment_ice_reciprocating_CylinderStatus sample_uavcan_equipment_ice_reciprocating_CylinderStatus_msg(void);
  115. #endif
  116. #ifdef __cplusplus
  117. } // extern "C"
  118. #ifdef DRONECAN_CXX_WRAPPERS
  119. #include <canard/cxx_wrappers.h>
  120. #endif
  121. #endif