| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * @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
- #define DATAPACKET_SIZE (NBUS_MAX_FRAME_SIZE*MAX_SLAVES)
- /* DEFINES END */
- typedef enum {
- STATE_STOPPED,
- STATE_TO_STOP,
- 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;
- uint8_t _dataPacket[DATAPACKET_SIZE];
- DataFrame *_dataFrame;
- void transmit(DataFrame *packet);
- DataFrame *_frame_nbus_internal;
- Nbus_pdu _pdu;
- public:
- NbusBridge();
- void setCommunicator(NbusCommunicator *nc);
- 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();
- void process_broadcast(uint8_t *rxFrame);
- };
- #endif /* SRC_NBUSBRIDGE_H_ */
|