| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /**
- * @file NbusCommunicator.h
- * @brief Declaration of hardware communication interface.
- * @date Jun 19, 2026
- * @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 "nbus_platform.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);
- void setLedOn();
- void setLedOff();
- void toggleLed();
- 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_ */
|