NbusCommunicator.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * @file NbusCommunicator.h
  3. * @brief Declaration of hardware communication interface.
  4. * @date Nov 28, 2025
  5. * @author Juraj Dudak, Matus Necas
  6. */
  7. #ifndef SRC_NBUSCOMMUNICATOR_H_
  8. #define SRC_NBUSCOMMUNICATOR_H_
  9. #include "inttypes.h"
  10. #include "dataframe.h"
  11. #include "nbus_config.h"
  12. #include "nbus_defines.h"
  13. #include "stm32l4xx_hal.h"
  14. /** @brief Class for NBus Communicator handle.
  15. */
  16. class NbusCommunicator
  17. {
  18. public:
  19. /** Constructor.
  20. * @param uart_nbus: pointer to UART nBus instance
  21. * @param uart_master: pointer to UART master instance
  22. */
  23. NbusCommunicator(UART_HandleTypeDef *uart_nbus, UART_HandleTypeDef *uart_master);
  24. /** Send data to master.
  25. * @param master_frame: data frame to send
  26. */
  27. void sendToMaster(DataFrame *master_frame);
  28. /** Send data to slave.
  29. * @param slave_frame: data frame to send
  30. */
  31. void sendToSlave(DataFrame *slave_frame);
  32. /** Send data to slave and receive response.
  33. * @param slave_frame: data frame to send
  34. * @return: response data frame
  35. */
  36. DataFrame* sendAndReceiveSlave(DataFrame *slave_frame);
  37. private:
  38. /** Receive data from slave.
  39. */
  40. void _receiveFromSlave();
  41. uint8_t _data_packet_tx[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw TX data packet
  42. uint8_t _data_packet_comm[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw common data packet
  43. uint8_t _data_packet_rx[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw RX data packet
  44. DataFrame _packet_tx{_data_packet_tx, NBUS_COMM_MAX_FRAME_SIZE, TYPE_PLAIN, CRC_ON}; ///< TX data frame
  45. DataFrame _packet_rx{_data_packet_rx, NBUS_COMM_MAX_FRAME_SIZE, TYPE_PLAIN, CRC_OFF}; ///< RX data frame
  46. UART_HandleTypeDef *_uart_nbus{nullptr}; ///< pointer to UART nBus
  47. UART_HandleTypeDef *_uart_master{nullptr}; ///< pointer to UART master
  48. };
  49. #endif /* SRC_NBUSCOMMUNICATOR_H_ */