NbusBridge.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * @file NbusBridge.h
  3. * @brief Deklarácia modulu nBus Brige
  4. * @date Mar 7, 2025
  5. * @author Juraj Dudak
  6. */
  7. #ifndef SRC_NBUSBRIDGE_H_
  8. #define SRC_NBUSBRIDGE_H_
  9. #include "NbusSlave.h"
  10. /* DEFINES BEGIN */
  11. #define MAX_SLAVES 16
  12. #define MODULE_ADDRESS(packet) packet[0]
  13. #define SENSOR_ADDRESS(packet) packet[1]
  14. #define FUNCTION_CODE(packet) packet[2]
  15. #define BROADCAST_ADDRESS 0
  16. #define RX_META 4
  17. #define DATAPACKET_SIZE (NBUS_MAX_FRAME_SIZE*MAX_SLAVES)
  18. /* DEFINES END */
  19. typedef enum {
  20. STATE_STOPPED,
  21. STATE_TO_STOP,
  22. STATE_RUNNING,
  23. }RunState_e;
  24. class NbusBridge {
  25. private:
  26. NbusCommunicator *_communicator;
  27. NbusSlave _slaves[MAX_SLAVES];
  28. uint8_t _slave_adress[MAX_SLAVES];
  29. uint8_t _num_slaves;
  30. RunState_e _run_state;
  31. DataFrame *_workerFrame;
  32. uint8_t _dataPacket[DATAPACKET_SIZE];
  33. DataFrame *_dataFrame;
  34. void transmit(DataFrame *packet);
  35. DataFrame *_frame_nbus_internal;
  36. Nbus_pdu _pdu;
  37. public:
  38. NbusBridge();
  39. void setCommunicator(NbusCommunicator *nc);
  40. virtual ~NbusBridge();
  41. void scan();
  42. uint8_t getNumSlaves();
  43. //bool call_echo(uint8_t slave);
  44. NbusSlave * getSlave(uint8_t index);
  45. void sendResponseToMaster(DataFrame *response_frame);
  46. void processRequest(uint8_t *rxFrame, uint8_t size);
  47. void broadcastStart();
  48. void broadcastStop();
  49. void processRunningState();
  50. void process_broadcast(uint8_t *rxFrame);
  51. };
  52. #endif /* SRC_NBUSBRIDGE_H_ */