NbusCommunicator.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * @file NbusCommunicator.h
  3. * @brief Deklarácia komunikačnej vrstvy: 1) internej 2) externej
  4. * @date Mar 7, 2025
  5. * @author Juraj Dudak
  6. */
  7. #ifndef SRC_NBUSCOMMUNICATOR_H_
  8. #define SRC_NBUSCOMMUNICATOR_H_
  9. #include "inttypes.h"
  10. #include "dataframe.h"
  11. #include "nbus_structs.h"
  12. #include "stm32l4xx_hal.h"
  13. /* DEFINES BEGIN */
  14. #define NBUS_MAX_FRAME_SIZE 64
  15. #define UART_NBUS_RX_TIMEOUT 5
  16. /* DEFINES END */
  17. class NbusCommunicator {
  18. private:
  19. uint8_t _data_packet_tx[NBUS_MAX_FRAME_SIZE];
  20. uint8_t _data_packet_comm[NBUS_MAX_FRAME_SIZE];
  21. uint8_t _data_packet_rx[NBUS_MAX_FRAME_SIZE];
  22. DataFrame *_packet_tx;
  23. DataFrame *_packet_rx;
  24. UART_HandleTypeDef *_uart_nbus;
  25. UART_HandleTypeDef *_uart_master;
  26. void _receive();
  27. public:
  28. NbusCommunicator(UART_HandleTypeDef*, UART_HandleTypeDef*);
  29. void sendToMaster(DataFrame *master_frame);
  30. virtual ~NbusCommunicator();
  31. DataFrame* sendAndReceive(Nbus_pdu *pdu, uint8_t *data, uint8_t data_len);
  32. DataFrame* formatSlaveInfo(uint8_t rx_frame[], uint8_t slave_address[], uint8_t num);
  33. void send(Nbus_pdu *pdu, uint8_t *data, uint8_t data_len);
  34. DataFrame *formatPacket(uint8_t *rxFrame, uint8_t size);
  35. };
  36. #endif /* SRC_NBUSCOMMUNICATOR_H_ */