Browse Source

Redefined CMD_SLAVES

xnecas 1 week ago
parent
commit
cb3e2df5e9
3 changed files with 19 additions and 9 deletions
  1. 2 2
      Core/Inc/NbusSlave.h
  2. 14 4
      Core/Src/NbusBridge.cpp
  3. 3 3
      Core/Src/NbusSlave.cpp

+ 2 - 2
Core/Inc/NbusSlave.h

@@ -24,7 +24,7 @@ public:
 	/** Set nBus address.
 	 * @param addr: address to set
 	 */
-	void setAddress(uint8_t addr);
+	void setModuleAddress(uint8_t addr);
 
 	/** Get slave active status.
 	 * @return: active status (1 = active, 0 = inactive)
@@ -56,7 +56,7 @@ public:
 	 * @param check_hw: 1 = load from bus, 0 = use local cache
 	 * @return: response data frame
 	 */
-	uint8_t nbusSlaveCmd_getSensorCnt(bool check_hw);
+	uint8_t cmdGetSensorCnt(bool check_hw);
 
 private:
 	/** Make nBus packet for selected function code.

+ 14 - 4
Core/Src/NbusBridge.cpp

@@ -62,10 +62,10 @@ void NbusBridge::scanNetwork()
             	NBUS_TX_DATA0(response_raw + 2) == NBUS_BRIDGE_ECHO_SCAN_BYTE2 && NBUS_TX_DATA0(response_raw + 3) == NBUS_BRIDGE_ECHO_SCAN_BYTE3)
             {
                 _num_slaves++;
-                _slaves[i].setAddress(i);
+                _slaves[i].setModuleAddress(i);
                 _slaves[i].setCommunicator(_communicator);
                 _slave_adress[slave_index++] = i;
-                _slaves[i].nbusSlaveCmd_getSensorCnt(true); 	// retrieve sensor count for each slave
+                _slaves[i].cmdGetSensorCnt(true); 	// retrieve sensor count for each slave
             }
         }
     }
@@ -296,15 +296,25 @@ DataFrame * NbusBridge::_cmdGetFormat()
 
 DataFrame* NbusBridge::_cmdGetSlaves()
 {
+	NbusSlave * slave_ptr = nullptr;
+
 	_default_frame.Init();
 	_default_frame.AddUint8(NBUS_BROADCAST_ADDRESS);
 	_default_frame.AddUint8(NBUS_BRIDGE_ADDRESS);
 	_default_frame.AddUint8(FC_SLAVES);
+	_default_frame.AddUint8(_num_slaves);
+
+
 
 	for (uint8_t i = 0; i < _num_slaves; i++)
     {
-		_default_frame.AddUint8(i + 1);
-		_default_frame.AddUint8(_slave_adress[i]);
+		slave_ptr = _getSlave(_slave_adress[i]);
+
+		if (slave_ptr != nullptr)
+		{
+			_default_frame.AddUint8(slave_ptr->getModuleAddress());
+			_default_frame.AddUint8(slave_ptr->cmdGetSensorCnt(false));
+		}
     }
 
 	_default_frame.Commit();

+ 3 - 3
Core/Src/NbusSlave.cpp

@@ -12,7 +12,7 @@ void NbusSlave::setCommunicator(NbusCommunicator *nbus_comm)
     _communicator = nbus_comm;
 }
 
-void NbusSlave::setAddress(uint8_t addr)
+void NbusSlave::setModuleAddress(uint8_t addr)
 {
     _pdu.ma = addr;
 }
@@ -42,12 +42,12 @@ DataFrame *NbusSlave::cmdGetFormat()
 	return _communicator->sendAndReceiveSlave(_makePacket(FC_SENSOR_FORMAT));
 }
 
-uint8_t NbusSlave::nbusSlaveCmd_getSensorCnt(bool check_hw)
+uint8_t NbusSlave::cmdGetSensorCnt(bool check_hw)
 {
     if (_sensor_count == 0 || check_hw == true)
     {
 		DataFrame *df = _communicator->sendAndReceiveSlave(_makePacket(FC_SENSOR_CNT));
-		_sensor_count = df->GetFrame()[3];
+		_sensor_count = NBUS_RX_DATA0(df->GetFrame() + 1);
     }
 
     return _sensor_count;