/* * @file NbusBridge.h * @brief Deklarácia modulu nBus Brige * @date Mar 7, 2025 * @author Juraj Dudak */ #ifndef SRC_NBUSBRIDGE_H_ #define SRC_NBUSBRIDGE_H_ #include "NbusSlave.h" /* DEFINES BEGIN */ #define MAX_SLAVES 16 #define MODULE_ADDRESS(packet) packet[0] #define SENSOR_ADDRESS(packet) packet[1] #define FUNCTION_CODE(packet) packet[2] #define BROADCAST_ADDRESS 0 #define RX_META 4 /* DEFINES END */ typedef enum { STATE_STOPPED, STATE_RUNNING, }RunState_e; class NbusBridge { private: NbusCommunicator *_communicator; NbusSlave _slaves[MAX_SLAVES]; uint8_t _slave_adress[MAX_SLAVES]; uint8_t _num_slaves; RunState_e _run_state; DataFrame *_workerFrame; void transmit(DataFrame *packet); void process_broadcast(uint8_t *rxFrame); DataFrame *_frame_nbus_internal; Nbus_pdu _pdu; public: NbusBridge(NbusCommunicator *); virtual ~NbusBridge(); void scan(); uint8_t getNumSlaves(); bool call_echo(uint8_t slave); NbusSlave * getSlave(uint8_t index); void sendResponseToMaster(DataFrame *response_frame); void processRequest(uint8_t *rxFrame, uint8_t size); void broadcastStart(); void broadcastStop(); void processRunningState(); }; #endif /* SRC_NBUSBRIDGE_H_ */