| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- * @file NbusCommunicator.h
- * @brief Declaration of hardware communication interface.
- * @date Nov 27, 2025
- * @author Juraj Dudak, Matus Necas
- */
- #ifndef SRC_NBUSCOMMUNICATOR_H_
- #define SRC_NBUSCOMMUNICATOR_H_
- #include "inttypes.h"
- #include "dataframe.h"
- #include "nbus_structs.h"
- #include "stm32l4xx_hal.h"
- /* DEFINES BEGIN */
- /** Macro for frame size of nBus Communicator. */
- #define NBUS_COMM_MAX_FRAME_SIZE 64
- /** Macro for receive timeout in ms. */
- #define NBUS_COMM_UART_RX_TIMEOUT 5
- /** Macro for transfer timeout in ms. */
- #define NBUS_COMM_UART_TX_TIMEOUT 10
- /* DEFINES END */
- /** @brief Class for NBus Communicator handle.
- */
- class NbusCommunicator
- {
- public:
- /** Constructor.
- * @param uart_nbus: pointer to UART nBus instance
- * @param uart_master: pointer to UART master instance
- */
- NbusCommunicator(UART_HandleTypeDef *uart_nbus, UART_HandleTypeDef *uart_master);
- /** Send data to master.
- * @param master_frame: data frame to send
- */
- void sendToMaster(DataFrame *master_frame);
- /** Send data to slave.
- * @param slave_frame: data frame to send
- */
- void sendToSlave(DataFrame *slave_frame);
- /** Send data to slave and receive response.
- * @param slave_frame: data frame to send
- * @return: response data frame
- */
- DataFrame* sendAndReceiveSlave(DataFrame *slave_frame);
- private:
- /** Receive data from slave.
- */
- void _receiveFromSlave();
- uint8_t _data_packet_tx[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw TX data packet
- uint8_t _data_packet_comm[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw common data packet
- uint8_t _data_packet_rx[NBUS_COMM_MAX_FRAME_SIZE]{0}; ///< raw RX data packet
- DataFrame _packet_tx{_data_packet_tx, NBUS_COMM_MAX_FRAME_SIZE, TYPE_PLAIN, CRC_ON}; ///< TX data frame
- DataFrame _packet_rx{_data_packet_rx, NBUS_COMM_MAX_FRAME_SIZE, TYPE_PLAIN, CRC_OFF}; ///< RX data frame
- UART_HandleTypeDef *_uart_nbus{nullptr}; ///< pointer to UART nBus
- UART_HandleTypeDef *_uart_master{nullptr}; ///< pointer to UART master
- };
- #endif /* SRC_NBUSCOMMUNICATOR_H_ */
|