| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /**
- * @file NbusCommunicator.h
- * @brief Declaration of hardware communication interface.
- * @date Nov 28, 2025
- * @author Juraj Dudak, Matus Necas
- */
- #ifndef SRC_NBUSCOMMUNICATOR_H_
- #define SRC_NBUSCOMMUNICATOR_H_
- #include "inttypes.h"
- #include "dataframe.h"
- #include "nbus_config.h"
- #include "nbus_defines.h"
- #include "stm32l4xx_hal.h"
- /** @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_ */
|