| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * @file AppBridge.cpp
- * @brief Implementation of nBus Slave.
- * @date Nov 27, 2025
- * @author Juraj Dudak, Matus Necas
- */
- #include <NbusSlave.h>
- void NbusSlave::setCommunicator(NbusCommunicator *nbus_comm)
- {
- _communicator = nbus_comm;
- }
- void NbusSlave::setModuleAddress(uint8_t addr)
- {
- _pdu.ma = addr;
- }
- uint8_t NbusSlave::getModuleAddress()
- {
- return _pdu.ma;
- }
- bool NbusSlave::isActive()
- {
- return _communicator != nullptr && _pdu.ma != 0;
- }
- DataFrame *NbusSlave::cmdProcessAnyRequest(DataFrame *slave_frame)
- {
- return _communicator->sendAndReceiveSlave(slave_frame);
- }
- DataFrame *NbusSlave::cmdGetData()
- {
- return _communicator->sendAndReceiveSlave(_makePacket(FC_DATA));
- }
- DataFrame *NbusSlave::cmdGetFormat()
- {
- return _communicator->sendAndReceiveSlave(_makePacket(FC_SENSOR_FORMAT));
- }
- Nbus_SensorCnt_t NbusSlave::cmdGetSensorCnt(bool check_hw)
- {
- if (check_hw == true)
- {
- DataFrame *df = _communicator->sendAndReceiveSlave(_makePacket(FC_SENSOR_CNT));
- _sensor_count.read_only_count = NBUS_RX_DATA0(df->GetFrame() + 1); // without length byte
- _sensor_count.read_write_count = NBUS_RX_DATA0(df->GetFrame() + 2);
- }
- return _sensor_count;
- }
- DataFrame* NbusSlave::_makePacket(Nbus_FC_e fc)
- {
- _cache_frame.Init();
- _cache_frame.AddUint8(_pdu.ma);
- _cache_frame.AddUint8(NBUS_BROADCAST_ADDRESS);
- _cache_frame.AddUint8(fc);
- _cache_frame.Commit();
- return &_cache_frame;
- }
|