NbusSlave.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**
  2. * @file AppBridge.h
  3. * @brief nBus Slave module declaration.
  4. * @date Nov 26, 2025
  5. * @author Juraj Dudak, Matus Necas
  6. */
  7. #ifndef SRC_APPSLAVE_H_
  8. #define SRC_APPSLAVE_H_
  9. #include "inttypes.h"
  10. #include "dataframe.h"
  11. #include "NbusCommunicator.h"
  12. /** @brief Class for nBus slave communication
  13. */
  14. class NbusSlave
  15. {
  16. public:
  17. /** Set nBus communicator.
  18. * @param nbus_comm: communicator to set
  19. */
  20. void setCommunicator(NbusCommunicator* nbus_comm);
  21. /** Set nBus address.
  22. * @param addr: address to set
  23. */
  24. void setModuleAddress(uint8_t addr);
  25. /** Get slave active status.
  26. * @return: active status (1 = active, 0 = inactive)
  27. */
  28. bool isActive();
  29. /** Get nBus module address.
  30. * @return: actual address (0 if not set)
  31. */
  32. uint8_t getModuleAddress();
  33. /** Send any nBus request and get response.
  34. * @param slave_frame: data to send
  35. * @return: response data frame
  36. */
  37. DataFrame* cmdProcessAnyRequest(DataFrame *slave_frame);
  38. /** Send nBus request and get sensor data.
  39. * @return: response data frame
  40. */
  41. DataFrame* cmdGetData();
  42. /** Send nBus request and get sensor format.
  43. * @return: response data frame
  44. */
  45. DataFrame* cmdGetFormat();
  46. /** Send nBus request and get sensor count.
  47. * @param check_hw: 1 = load from bus, 0 = use local cache
  48. * @return: number of sensors / actuators
  49. */
  50. Nbus_SensorCnt_t cmdGetSensorCnt(bool check_hw);
  51. private:
  52. /** Make nBus packet for selected function code.
  53. * @param fc: function code
  54. * @return: _slave_cache
  55. */
  56. DataFrame* _makePacket(Nbus_FC_e fc);
  57. NbusCommunicator* _communicator{nullptr}; ///< hardware bus communicator
  58. Nbus_SensorCnt_t _sensor_count{0, 0}; ///< number of sensors / actuators
  59. Nbus_PDU_t _pdu{0, 0, FC_ECHO}; ///< slave PDU
  60. uint8_t _slave_cache[NBUS_SLAVE_CACHE_SIZE]{0}; ///< slave temporary data
  61. DataFrame _cache_frame{_slave_cache, NBUS_SLAVE_CACHE_SIZE, TYPE_PLAIN, CRC_ON}; ///< data frame of _slave_cache
  62. };
  63. #endif /* SRC_APPSLAVE_H_ */