NbusSlave.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * @file AppBridge.cpp
  3. * @brief Implementation of nBus Slave.
  4. * @date Nov 26, 2025
  5. * @author Juraj Dudak, Matus Necas
  6. */
  7. #include <NbusSlave.h>
  8. void NbusSlave::setCommunicator(NbusCommunicator *nbus_comm)
  9. {
  10. _communicator = nbus_comm;
  11. }
  12. void NbusSlave::setAddress(uint8_t addr)
  13. {
  14. _pdu.ma = addr;
  15. }
  16. uint8_t NbusSlave::getModuleAddress()
  17. {
  18. return _pdu.ma;
  19. }
  20. bool NbusSlave::isActive()
  21. {
  22. return _communicator != nullptr && _pdu.ma != 0;
  23. }
  24. DataFrame *NbusSlave::nbusSlaveCmd_processRequest(DataFrame *slave_frame)
  25. {
  26. return _communicator->sendAndReceiveSlave(slave_frame);
  27. }
  28. DataFrame *NbusSlave::nbusSlaveCmd_getData()
  29. {
  30. _pdu.sa = SLAVE_ADDRESS_MODULE;
  31. _pdu.fc = FC_DATA;
  32. return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0);
  33. }
  34. uint8_t NbusSlave::nbusSlaveCmd_getSensorCnt(bool check_hw)
  35. {
  36. if (_sensor_count == 0 || check_hw == true)
  37. {
  38. _pdu.sa = SLAVE_ADDRESS_MODULE;
  39. _pdu.fc = FC_SENSOR_CNT;
  40. DataFrame *df = _communicator->sendAndReceive(&_pdu, _sensor_cache, 0);
  41. _sensor_count = df->GetFrame()[3];
  42. }
  43. return _sensor_count;
  44. }