mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	Fix handling of PropDescRead for special case PID=0. Answer with found property id for given property index.
This commit is contained in:
		
							parent
							
								
									94cbbb8244
								
							
						
					
					
						commit
						7e440ae816
					
				| @ -181,15 +181,16 @@ void Bau57B0::userMemoryWriteIndication(Priority priority, HopCountType hopType, | ||||
| void Bau57B0::propertyDescriptionReadIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex,  | ||||
|     uint8_t propertyId, uint8_t propertyIndex) | ||||
| { | ||||
| 	uint8_t pid = propertyId; | ||||
|     bool writeEnable = false; | ||||
|     uint8_t type = 0; | ||||
|     uint16_t numberOfElements = 0; | ||||
|     uint8_t access = 0; | ||||
|     InterfaceObject* obj = getInterfaceObject(objectIndex); | ||||
|     if (obj) | ||||
|         obj->readPropertyDescription(propertyId, propertyIndex, writeEnable, type, numberOfElements, access); | ||||
|         obj->readPropertyDescription(pid, propertyIndex, writeEnable, type, numberOfElements, access); | ||||
| 
 | ||||
|     _appLayer.propertyDescriptionReadResponse(AckRequested, priority, hopType, asap, objectIndex, propertyId, propertyIndex, | ||||
|     _appLayer.propertyDescriptionReadResponse(AckRequested, priority, hopType, asap, objectIndex, pid, propertyIndex, | ||||
|         writeEnable, type, numberOfElements, access); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| #include "interface_object.h" | ||||
| 
 | ||||
| void InterfaceObject::readPropertyDescription(uint8_t propertyId, uint8_t& propertyIndex, bool& writeEnable, uint8_t& type, uint16_t& numberOfElements, uint8_t& access) | ||||
| void InterfaceObject::readPropertyDescription(uint8_t& propertyId, uint8_t& propertyIndex, bool& writeEnable, uint8_t& type, uint16_t& numberOfElements, uint8_t& access) | ||||
| { | ||||
|     PropertyDescription* descriptions = propertyDescriptions(); | ||||
|     uint8_t count = propertyCount(); | ||||
| @ -22,7 +22,7 @@ void InterfaceObject::readPropertyDescription(uint8_t propertyId, uint8_t& prope | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         if (propertyIndex > 0 && propertyIndex < count)  | ||||
|         if (propertyIndex >= 0 && propertyIndex < count)  | ||||
|         { | ||||
|             desc = &descriptions[propertyIndex]; | ||||
|         } | ||||
| @ -30,6 +30,7 @@ void InterfaceObject::readPropertyDescription(uint8_t propertyId, uint8_t& prope | ||||
|      | ||||
|     if (desc != nullptr) | ||||
|     { | ||||
| 	    propertyId = desc->Id; | ||||
|         writeEnable = desc->WriteEnable; | ||||
|         type = desc->Type; | ||||
|         numberOfElements = desc->MaxElements; | ||||
|  | ||||
| @ -57,7 +57,7 @@ public: | ||||
|     virtual void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) = 0; | ||||
|     virtual void writeProperty(PropertyID id, uint8_t start, uint8_t* data, uint8_t count) = 0; | ||||
|     virtual uint8_t propertySize(PropertyID id) = 0; | ||||
|     void readPropertyDescription(uint8_t propertyId, uint8_t& propertyIndex, bool& writeEnable, uint8_t& type, uint16_t& numberOfElements, uint8_t& access); | ||||
|     void readPropertyDescription(uint8_t& propertyId, uint8_t& propertyIndex, bool& writeEnable, uint8_t& type, uint16_t& numberOfElements, uint8_t& access); | ||||
| protected: | ||||
|     virtual uint8_t propertyCount() = 0; | ||||
|     virtual PropertyDescription* propertyDescriptions() = 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user