Browse Source

better echo, remove redundant _address

Juraj Ďuďák 8 months ago
parent
commit
2c31f8cde9
2 changed files with 10 additions and 12 deletions
  1. 1 2
      Core/Inc/NbusSlave.h
  2. 9 10
      Core/Src/NbusSlave.cpp

+ 1 - 2
Core/Inc/NbusSlave.h

@@ -18,7 +18,6 @@
 class NbusSlave {
 
 private:
-	uint8_t _address;
 	NbusCommunicator* _communicator;
 	Nbus_pdu _pdu;
 	uint8_t _sensor_cache[16];
@@ -34,7 +33,7 @@ public:
 	bool isActive();
 	uint8_t getSensorAddress();
 	uint8_t getModuleAddress();
-	DataFrame* nbus_echo();
+	DataFrame* nbus_echo(uint8_t *echo_data, uint8_t size);
 	DataFrame* nbus_sensor_count();
 	DataFrame* nbus_sensor_type(uint8_t);
 	DataFrame* nbus_sensor_format(uint8_t);

+ 9 - 10
Core/Src/NbusSlave.cpp

@@ -9,13 +9,12 @@
 #include <NbusSlave.h>
 
 NbusSlave::NbusSlave() {
-	_address = 0;
 	_communicator = NULL;
 	_pdu.ma = 0;
+	_pdu.sa = 0;
 }
 
 NbusSlave::NbusSlave(uint8_t address, NbusCommunicator *comm) {
-	_address = address;
 	_communicator = comm;
 	_pdu.ma = address;
 }
@@ -29,8 +28,7 @@ void NbusSlave::setCommunicator(NbusCommunicator* comm){
 }
 
 void NbusSlave::setAddress(uint8_t address){
-	_address = address;
-	_pdu.ma = _address;
+	_pdu.ma = address;
 }
 
 uint8_t NbusSlave::getModuleAddress(){
@@ -42,16 +40,17 @@ uint8_t NbusSlave::getSensorAddress(){
 }
 
 bool NbusSlave::isActive(){
-	return _communicator != NULL && _address != 0;
+//	return _communicator != NULL;
+	return _communicator != NULL && _pdu.ma != 0;
 }
 
-DataFrame* NbusSlave::nbus_echo() {
+DataFrame* NbusSlave::nbus_echo(uint8_t *echo_data, uint8_t size) {
 	_pdu.sa = SLAVE_ADDRESS_MODULE;
 	_pdu.fc = FC_ECHO;
-	_sensor_cache[0] = 60 + _pdu.ma;
-	_sensor_cache[1] = 61 + _pdu.ma;
-	_sensor_cache[2] = 62 + _pdu.ma;
-	_sensor_cache[3] = 63 + _pdu.ma;
+	for(uint32_t i=0;i<size;i++){
+		_sensor_cache[i] = echo_data[i];
+	}
+
 	_sensor_count = 0;
 	return _communicator->sendAndReceive(&_pdu, _sensor_cache, 4);
 }