2 Commits e825d5ea3b ... 2c31f8cde9

Auteur SHA1 Message Date
  Juraj Ďuďák 2c31f8cde9 better echo, remove redundant _address il y a 8 mois
  Juraj Ďuďák 81ace4870e dataframe length as uint16 il y a 8 mois

+ 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);
 }

+ 4 - 4
Modules/dataframe/src/dataframe.cpp

@@ -134,7 +134,7 @@ static uint8_t crc8x_fast(void const *mem, uint16_t len)
 }
 
 
-DataFrame::DataFrame(uint8_t *frame, uint8_t size, DataframeType_t type,
+DataFrame::DataFrame(uint8_t *frame, uint16_t size, DataframeType_t type,
                      DataframeCrc_t useCrc) {
   _frame = frame;
   _capacity = size;
@@ -171,7 +171,7 @@ void DataFrame::Init(void) {
   }
 }
 
-void DataFrame::FromArray(uint8_t *data, uint8_t size){
+void DataFrame::FromArray(uint8_t *data, uint16_t size){
 	memcpy(_frame, data, size);
 //	_frame = data;
 	_length = size;
@@ -215,7 +215,7 @@ bool DataFrame::AddUint32(uint32_t d) {
   return true;
 }
 
-bool DataFrame::AddArray(uint8_t *data, uint8_t length) {
+bool DataFrame::AddArray(uint8_t *data, uint16_t length) {
   if ((_length + length) >= _capacity) {
     _error = ERROR_OVERFLOW;
     return false;
@@ -331,7 +331,7 @@ void DataFrame::AddHeader(DataframeType_t type){
 	  _frame[_length++] = HEADER_CHAR2;
   }
 }
-uint8_t DataFrame::GetLength(void){
+uint16_t DataFrame::GetLength(void){
 	return _length;
 }
 

+ 6 - 6
Modules/dataframe/src/dataframe.h

@@ -60,8 +60,8 @@ class DataFrame {
 
 private:
   uint8_t *_frame;
-  uint8_t _length;
-  uint8_t _capacity;
+  uint16_t _length;
+  uint16_t _capacity;
   DataframeType_t _type;
   DataframeCrc_t _crcUse;
   DataframeError_t _error;
@@ -73,7 +73,7 @@ public:
    * @param frame pointer to existing byte array
    * @param size size of buffer `frame`
    */
-  DataFrame(uint8_t *frame, uint8_t size, DataframeType_t type, DataframeCrc_t);
+  DataFrame(uint8_t *frame, uint16_t size, DataframeType_t type, DataframeCrc_t);
   /**
    * @brief Initialize packet
    * - set the header of packet
@@ -101,7 +101,7 @@ public:
    */
   bool AddUint32(uint32_t);
 
-  bool AddArray(uint8_t *data, uint8_t length);
+  bool AddArray(uint8_t *data, uint16_t length);
 
   /**
    * @brief add one byte signed variable to data frame
@@ -153,11 +153,11 @@ public:
    */
   DataframeError_t getError(void);
 
-  uint8_t GetLength(void);
+  uint16_t GetLength(void);
 
   bool IsEmpty(void);
 
-  void FromArray(uint8_t *data, uint8_t size);
+  void FromArray(uint8_t *data, uint16_t size);
   void AddHeader(DataframeType_t type);
 
 };