nbus_defines.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /**
  2. * @file nbus_defines.h
  3. *
  4. * @date: Nov 26, 2025
  5. * @author: Juraj Dudak, Matus Necas
  6. */
  7. #ifndef INC_NBUS_DEFINES_H_
  8. #define INC_NBUS_DEFINES_H_
  9. #if defined(STM32F401xC) || defined(STM32F401xE)
  10. #include "stm32f4xx_hal.h"
  11. #endif
  12. #if defined (STM32L432xx)
  13. #include "stm32l4xx_hal.h"
  14. #endif
  15. #if defined (STM32L031xx) || defined (STM32L082xx)
  16. #include "stm32l0xx_hal.h"
  17. #endif
  18. /* BEGIN GENERAL NBUS DEFINES */
  19. /** @brief Macro for broadcast address (MA = 0). */
  20. #define NBUS_BROADCAST_ADDRESS 0x00
  21. /** @brief Macro for NBus Bridge address (MA = 0, SA = BRIDGE). */
  22. #define NBUS_BRIDGE_ADDRESS 0xFF
  23. /** @brief Macro for RX meta size in bytes. */
  24. #define NBUS_RX_META_SIZE 4
  25. /** @brief Macro for module address in RX packet. */
  26. #define NBUS_RX_MODULE_ADDRESS(packet) (packet)[0]
  27. /** @brief Macro for sensor address in RX packet. */
  28. #define NBUS_RX_SENSOR_ADDRESS(packet) (packet)[1]
  29. /** @brief Macro for function code in RX packet. */
  30. #define NBUS_RX_FUNCTION_CODE(packet) (packet)[2]
  31. /** @brief Macro for #0 data byte in RX packet. */
  32. #define NBUS_RX_DATA0(packet) (packet)[3]
  33. /** @brief Macro for CRC8 byte in RX packet. */
  34. #define NBUS_RX_CRC8(packet, size) (packet)[(size) - 1]
  35. /** @brief Macro for TX meta size in bytes. */
  36. #define NBUS_TX_META_SIZE 5
  37. /** @brief Macro for #0 data byte in TX packet. */
  38. #define NBUS_TX_DATA0(packet) (packet)[4]
  39. /** @brief Macro for set command flag. */
  40. #define NBUS_SET_CMD(cmd) ((cmd) | 0x20)
  41. /** @brief Macro to set error response. */
  42. #define NBUS_SET_ERR_RESPONSE(fc) ((fc) | 0x80)
  43. #define NBUS_CHECK_ERR_RESPONSE(packet) ((packet)[2] & 0x80)
  44. /* END GENERAL NBUS DEFINES */
  45. /** @brief Enumerate for function codes */
  46. typedef enum {
  47. FC_FIND = 0,
  48. FC_ECHO, /* 1 */
  49. FC_STOP, /* 2 */
  50. FC_START, /* 3 */
  51. FC_PARAM, /* 4 */
  52. FC_SENSOR_CNT, /* 5 */
  53. FC_SLEEP, /* 6 */
  54. FC_WAKEUP, /* 7 */
  55. FC_CALIBRATE, /* 8 */
  56. FC_RESET, /* 9 */
  57. FC_STORE, /* 0xA => 10 */
  58. FC_DATA, /* 0xB => 11 */
  59. FC_SYNC, /* 0xC => 12 */
  60. FC_SENSOR_TYPE, /* 0xD => 13 */
  61. FC_INFO, /* 0xE => 14 */
  62. FC_SENSOR_FORMAT, /* 0xF => 15 */
  63. FC_SLAVES, /* 0x10 => 16 */
  64. } Nbus_FC_e;
  65. /** @brief Enumerate for Bridge run state. */
  66. typedef enum {
  67. STATE_STOPPED,
  68. STATE_TO_STOP,
  69. STATE_RUNNING,
  70. } Nbus_RunState_e;
  71. /** @brief Structure for PDU data. */
  72. typedef struct {
  73. uint8_t ma;
  74. uint8_t sa;
  75. Nbus_FC_e fc;
  76. } Nbus_PDU_t;
  77. /** @brief Structure for sensor count. */
  78. typedef struct
  79. {
  80. uint8_t read_only_count;
  81. uint8_t read_write_count;
  82. } Nbus_SensorCnt_t;
  83. /** @brief Enumerate for error codes. */
  84. typedef enum {
  85. OK_CODE = 0x00,
  86. ILLEGAL_FUNCTION = 0x01,
  87. ILLEGAL_DEVICE_ADDRESS = 0x02,
  88. ILLEGAL_DATA_VALUE = 0x03,
  89. SLAVE_DEVICE_FAILURE = 0x04,
  90. ACKNOWLEDGE = 0x05,
  91. DEVICE_BUSY = 0x06,
  92. DEVICE_NOT_READY = 0x07,
  93. PARAM_NOT_IMPLEMENTED = 0x10,
  94. ILLEGAL_FUNCTION_PARAM = 0x11,
  95. DEVICE_IS_READ_ONLY = 0x12,
  96. GENERIC_SUBSLAVE_ERROR = 0x13,
  97. ERR_SUBSLAVE_INIT_FAIL = 0x14,
  98. SUBSLAVE_CUSTOM_ERR_1 = 0x1A,
  99. SUBSLAVE_CUSTOM_ERR_2 = 0x1B,
  100. SUBSLAVE_CUSTOM_ERR_3 = 0x1C,
  101. SUBSLAVE_CUSTOM_ERR_4 = 0x1D,
  102. SUBSLAVE_CUSTOM_ERR_5 = 0x1E,
  103. SUBSLAVE_CUSTOM_ERR_6 = 0x1F,
  104. ERR_OUTPUT_ONLY = 0x21,
  105. ERR_INPUT_ONLY = 0x22
  106. } Nbus_EC_e;
  107. /** @brief Enumerate for status codes. */
  108. typedef enum {
  109. STATUS_NOT_SUPPORTED = 0xFF,
  110. STATUS_SUCCESS = 0x00,
  111. STATUS_FAIL = 0x01
  112. } Nbus_SC_e;
  113. #endif /* INC_NBUS_DEFINES_H_ */