|
|
@@ -172,7 +172,7 @@ void NbusBridge::_processBridgeRequest(uint8_t *rx_frame, uint8_t size)
|
|
|
{
|
|
|
switch (NBUS_RX_FUNCTION_CODE(rx_frame))
|
|
|
{
|
|
|
- case FC_ECHO: /* GET 1 */
|
|
|
+ case FC_ECHO: /* GET 1 */
|
|
|
_worker_frame_ptr = _forwardPacket(rx_frame, size);
|
|
|
break;
|
|
|
|
|
|
@@ -189,15 +189,19 @@ void NbusBridge::_processBridgeRequest(uint8_t *rx_frame, uint8_t size)
|
|
|
_worker_frame_ptr = _rspSetStatus(STATUS_SUCCESS);
|
|
|
break;
|
|
|
|
|
|
- case FC_DATA: /* GET 11 */
|
|
|
+ case FC_DATA: /* GET 11 */
|
|
|
_worker_frame_ptr = _cmdGetData();
|
|
|
break;
|
|
|
|
|
|
- case FC_INFO: /* GET 0xE => 15 */
|
|
|
+ case FC_INFO: /* GET 14 */
|
|
|
_worker_frame_ptr = _cmdGetInfo();
|
|
|
break;
|
|
|
|
|
|
- case FC_SLAVES: /* GET 0x10 => 16 */
|
|
|
+ case FC_SENSOR_FORMAT: /* GET 15 */
|
|
|
+ _worker_frame_ptr = _cmdGetFormat();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case FC_SLAVES: /* GET 16 */
|
|
|
_worker_frame_ptr = _cmdGetSlaves();
|
|
|
break;
|
|
|
|
|
|
@@ -229,8 +233,10 @@ DataFrame* NbusBridge::_cmdGetData()
|
|
|
NbusSlave * slave_ptr = nullptr;
|
|
|
|
|
|
_bridge_cast_frame.Init();
|
|
|
+ _bridge_cast_frame.AddHeader(TYPE_HEADER_2B);
|
|
|
_bridge_cast_frame.AddInt32(HAL_GetTick());
|
|
|
|
|
|
+
|
|
|
for (uint32_t i = 0; i < _num_slaves; i++)
|
|
|
{
|
|
|
slave_ptr = _getSlave(_slave_adress[i]);
|
|
|
@@ -242,8 +248,8 @@ DataFrame* NbusBridge::_cmdGetData()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- _bridge_cast_frame.AddInt8(NBUS_BRIDGE_TERMINATOR);
|
|
|
- _bridge_cast_frame.AddInt8(NBUS_BRIDGE_TERMINATOR);
|
|
|
+ _bridge_cast_frame.AddInt8(NBUS_BRIDGE_FOOTER_BYTE0);
|
|
|
+ _bridge_cast_frame.AddInt8(NBUS_BRIDGE_FOOTER_BYTE1);
|
|
|
_bridge_cast_frame.Commit();
|
|
|
|
|
|
return &_bridge_cast_frame;
|
|
|
@@ -263,6 +269,31 @@ DataFrame * NbusBridge::_cmdGetInfo()
|
|
|
return &_default_frame;
|
|
|
}
|
|
|
|
|
|
+DataFrame * NbusBridge::_cmdGetFormat()
|
|
|
+{
|
|
|
+ NbusSlave * slave_ptr = nullptr;
|
|
|
+
|
|
|
+ _default_frame.Init();
|
|
|
+ _default_frame.AddUint8(NBUS_BROADCAST_ADDRESS);
|
|
|
+ _default_frame.AddUint8(NBUS_BRIDGE_ADDRESS);
|
|
|
+ _default_frame.AddUint8(FC_SENSOR_FORMAT);
|
|
|
+
|
|
|
+ for (uint32_t i = 0; i < _num_slaves; i++)
|
|
|
+ {
|
|
|
+ slave_ptr = _getSlave(_slave_adress[i]);
|
|
|
+ if (slave_ptr != nullptr)
|
|
|
+ {
|
|
|
+ _default_frame.AddInt8(slave_ptr->getModuleAddress());
|
|
|
+ _worker_frame_ptr = slave_ptr->cmdGetFormat();
|
|
|
+ _default_frame.AddArray(&NBUS_RX_DATA0(_worker_frame_ptr->GetFrame() + 1), _worker_frame_ptr->GetLength() - (NBUS_RX_META_SIZE + 1)); // add without length byte
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ _default_frame.Commit();
|
|
|
+
|
|
|
+ return &_default_frame;
|
|
|
+}
|
|
|
+
|
|
|
DataFrame* NbusBridge::_cmdGetSlaves()
|
|
|
{
|
|
|
_default_frame.Init();
|