change signature of propertyRead/Write

This commit is contained in:
Thomas Kunze 2019-12-10 23:42:27 +01:00
parent 10b83b46bc
commit c64b7f6a01
28 changed files with 131 additions and 90 deletions

View File

@ -111,7 +111,7 @@
<ImportedPropertySheets /> <ImportedPropertySheets />
<CodeSense> <CodeSense>
<Enabled>True</Enabled> <Enabled>True</Enabled>
<CXXFLAGS>-DMEDIUM_TYPE=5</CXXFLAGS> <CXXFLAGS>-DMEDIUM_TYPE=5 -DUSE_CEMI_SERVER</CXXFLAGS>
<ExtraSettings> <ExtraSettings>
<HideErrorsInSystemHeaders>true</HideErrorsInSystemHeaders> <HideErrorsInSystemHeaders>true</HideErrorsInSystemHeaders>
<SupportLightweightReferenceAnalysis>true</SupportLightweightReferenceAnalysis> <SupportLightweightReferenceAnalysis>true</SupportLightweightReferenceAnalysis>

View File

@ -83,6 +83,9 @@
<ClInclude Include="..\src\knx\bau_systemB.h" /> <ClInclude Include="..\src\knx\bau_systemB.h" />
<ClInclude Include="..\src\knx\bits.h" /> <ClInclude Include="..\src\knx\bits.h" />
<ClInclude Include="..\src\knx\cemi_frame.h" /> <ClInclude Include="..\src\knx\cemi_frame.h" />
<ClInclude Include="..\src\knx\cemi_server.h" />
<ClInclude Include="..\src\knx\cemi_server_object.h" />
<ClInclude Include="..\src\knx\datapoint_types.h" />
<ClInclude Include="..\src\knx\data_link_layer.h" /> <ClInclude Include="..\src\knx\data_link_layer.h" />
<ClInclude Include="..\src\knx\device_object.h" /> <ClInclude Include="..\src\knx\device_object.h" />
<ClInclude Include="..\src\knx\dpt.h" /> <ClInclude Include="..\src\knx\dpt.h" />
@ -99,7 +102,7 @@
<ClInclude Include="..\src\knx\network_layer.h" /> <ClInclude Include="..\src\knx\network_layer.h" />
<ClInclude Include="..\src\knx\npdu.h" /> <ClInclude Include="..\src\knx\npdu.h" />
<ClInclude Include="..\src\knx\platform.h" /> <ClInclude Include="..\src\knx\platform.h" />
<ClInclude Include="..\src\knx\property_types.h" /> <ClInclude Include="..\src\knx\property.h" />
<ClInclude Include="..\src\knx\rf_data_link_layer.h" /> <ClInclude Include="..\src\knx\rf_data_link_layer.h" />
<ClInclude Include="..\src\knx\rf_medium_object.h" /> <ClInclude Include="..\src\knx\rf_medium_object.h" />
<ClInclude Include="..\src\knx\rf_physical_layer.h" /> <ClInclude Include="..\src\knx\rf_physical_layer.h" />
@ -108,6 +111,7 @@
<ClInclude Include="..\src\knx\tpdu.h" /> <ClInclude Include="..\src\knx\tpdu.h" />
<ClInclude Include="..\src\knx\tpuart_data_link_layer.h" /> <ClInclude Include="..\src\knx\tpuart_data_link_layer.h" />
<ClInclude Include="..\src\knx\transport_layer.h" /> <ClInclude Include="..\src\knx\transport_layer.h" />
<ClInclude Include="..\src\knx\usb_tunnel_interface.h" />
<ClInclude Include="..\src\knx_facade.h" /> <ClInclude Include="..\src\knx_facade.h" />
<ClInclude Include="..\src\linux_platform.h" /> <ClInclude Include="..\src\linux_platform.h" />
</ItemGroup> </ItemGroup>
@ -131,6 +135,9 @@
<ClCompile Include="..\src\knx\bau_systemB.cpp" /> <ClCompile Include="..\src\knx\bau_systemB.cpp" />
<ClCompile Include="..\src\knx\bits.cpp" /> <ClCompile Include="..\src\knx\bits.cpp" />
<ClCompile Include="..\src\knx\cemi_frame.cpp" /> <ClCompile Include="..\src\knx\cemi_frame.cpp" />
<ClCompile Include="..\src\knx\cemi_server.cpp" />
<ClCompile Include="..\src\knx\cemi_server_object.cpp" />
<ClCompile Include="..\src\knx\datapoint_types.cpp" />
<ClCompile Include="..\src\knx\data_link_layer.cpp" /> <ClCompile Include="..\src\knx\data_link_layer.cpp" />
<ClCompile Include="..\src\knx\device_object.cpp" /> <ClCompile Include="..\src\knx\device_object.cpp" />
<ClCompile Include="..\src\knx\dpt.cpp" /> <ClCompile Include="..\src\knx\dpt.cpp" />
@ -153,6 +160,7 @@
<ClCompile Include="..\src\knx\tpdu.cpp" /> <ClCompile Include="..\src\knx\tpdu.cpp" />
<ClCompile Include="..\src\knx\tpuart_data_link_layer.cpp" /> <ClCompile Include="..\src\knx\tpuart_data_link_layer.cpp" />
<ClCompile Include="..\src\knx\transport_layer.cpp" /> <ClCompile Include="..\src\knx\transport_layer.cpp" />
<ClCompile Include="..\src\knx\usb_tunnel_interface.cpp" />
<ClCompile Include="..\src\knx_facade.cpp" /> <ClCompile Include="..\src\knx_facade.cpp" />
<ClCompile Include="..\src\linux_platform.cpp" /> <ClCompile Include="..\src\linux_platform.cpp" />
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />

View File

@ -104,9 +104,6 @@
<ClInclude Include="..\src\knx\platform.h"> <ClInclude Include="..\src\knx\platform.h">
<Filter>Header files\knx</Filter> <Filter>Header files\knx</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\knx\property_types.h">
<Filter>Header files\knx</Filter>
</ClInclude>
<ClInclude Include="..\src\knx\save_restore.h"> <ClInclude Include="..\src\knx\save_restore.h">
<Filter>Header files\knx</Filter> <Filter>Header files\knx</Filter>
</ClInclude> </ClInclude>
@ -152,6 +149,21 @@
<ClInclude Include="..\src\knx\rf_physical_layer.h"> <ClInclude Include="..\src\knx\rf_physical_layer.h">
<Filter>Header files\knx</Filter> <Filter>Header files\knx</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\knx\property.h">
<Filter>Header files\knx</Filter>
</ClInclude>
<ClInclude Include="..\src\knx\cemi_server.h">
<Filter>Header files\knx</Filter>
</ClInclude>
<ClInclude Include="..\src\knx\cemi_server_object.h">
<Filter>Header files\knx</Filter>
</ClInclude>
<ClInclude Include="..\src\knx\datapoint_types.h">
<Filter>Header files\knx</Filter>
</ClInclude>
<ClInclude Include="..\src\knx\usb_tunnel_interface.h">
<Filter>Header files\knx</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\src\knx\address_table_object.cpp"> <ClCompile Include="..\src\knx\address_table_object.cpp">
@ -265,5 +277,17 @@
<ClCompile Include="..\src\knx\platform.cpp"> <ClCompile Include="..\src\knx\platform.cpp">
<Filter>Source files\knx</Filter> <Filter>Source files\knx</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\knx\cemi_server.cpp">
<Filter>Source files\knx</Filter>
</ClCompile>
<ClCompile Include="..\src\knx\cemi_server_object.cpp">
<Filter>Source files\knx</Filter>
</ClCompile>
<ClCompile Include="..\src\knx\datapoint_types.cpp">
<Filter>Source files\knx</Filter>
</ClCompile>
<ClCompile Include="..\src\knx\usb_tunnel_interface.cpp">
<Filter>Source files\knx</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -11,7 +11,7 @@ AddressTableObject::AddressTableObject(Memory& memory)
} }
void AddressTableObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) void AddressTableObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (id) switch (id)
{ {

View File

@ -18,9 +18,9 @@ class AddressTableObject : public TableObject
* @param memory This parameter is only passed to the custructor of TableObject an not used by this class. * @param memory This parameter is only passed to the custructor of TableObject an not used by this class.
*/ */
AddressTableObject(Memory& memory); AddressTableObject(Memory& memory);
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data) override;
uint8_t* restore(uint8_t* buffer); uint8_t* restore(uint8_t* buffer) override;
ObjectType objectType() { return OT_ADDR_TABLE; } ObjectType objectType() override { return OT_ADDR_TABLE; }
/** /**
* returns the number of group addresses of the object. * returns the number of group addresses of the object.

View File

@ -7,7 +7,7 @@ ApplicationProgramObject::ApplicationProgramObject(Memory& memory)
} }
void ApplicationProgramObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) void ApplicationProgramObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (id) switch (id)
{ {
@ -25,7 +25,7 @@ void ApplicationProgramObject::readProperty(PropertyID id, uint32_t start, uint3
} }
} }
void ApplicationProgramObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) void ApplicationProgramObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -6,8 +6,8 @@ class ApplicationProgramObject : public TableObject
{ {
public: public:
ApplicationProgramObject(Memory& memory); ApplicationProgramObject(Memory& memory);
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count); void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
uint8_t propertySize(PropertyID id); uint8_t propertySize(PropertyID id);
ObjectType objectType() { return OT_APPLICATION_PROG; } ObjectType objectType() { return OT_APPLICATION_PROG; }
uint8_t* data(uint32_t addr); uint8_t* data(uint32_t addr);

View File

@ -11,7 +11,7 @@ AssociationTableObject::AssociationTableObject(Memory& memory)
} }
void AssociationTableObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) void AssociationTableObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (id) switch (id)
{ {

View File

@ -6,7 +6,7 @@ class AssociationTableObject : public TableObject
{ {
public: public:
AssociationTableObject(Memory& memory); AssociationTableObject(Memory& memory);
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
ObjectType objectType() { return OT_ASSOC_TABLE; } ObjectType objectType() { return OT_ASSOC_TABLE; }
uint8_t* restore(uint8_t* buffer); uint8_t* restore(uint8_t* buffer);

View File

@ -8,19 +8,19 @@ void BusAccessUnit::groupValueReadIndication(uint16_t asap, Priority priority, H
{ {
} }
void BusAccessUnit::groupValueReadResponseConfirm(AckType ack, uint16_t asap, Priority priority, HopCountType hopTtype, uint8_t * data, uint8_t dataLength, bool status) void BusAccessUnit::groupValueReadResponseConfirm(AckType ack, uint16_t asap, Priority priority, HopCountType hopTtype, uint8_t* data, uint8_t dataLength, bool status)
{ {
} }
void BusAccessUnit::groupValueReadAppLayerConfirm(uint16_t asap, Priority priority, HopCountType hopType, uint8_t * data, uint8_t dataLength) void BusAccessUnit::groupValueReadAppLayerConfirm(uint16_t asap, Priority priority, HopCountType hopType, uint8_t* data, uint8_t dataLength)
{ {
} }
void BusAccessUnit::groupValueWriteLocalConfirm(AckType ack, uint16_t asap, Priority priority, HopCountType hopType, uint8_t * data, uint8_t dataLength, bool status) void BusAccessUnit::groupValueWriteLocalConfirm(AckType ack, uint16_t asap, Priority priority, HopCountType hopType, uint8_t* data, uint8_t dataLength, bool status)
{ {
} }
void BusAccessUnit::groupValueWriteIndication(uint16_t asap, Priority priority, HopCountType hopType, uint8_t * data, uint8_t dataLength) void BusAccessUnit::groupValueWriteIndication(uint16_t asap, Priority priority, HopCountType hopType, uint8_t* data, uint8_t dataLength)
{ {
} }
@ -48,7 +48,7 @@ void BusAccessUnit::individualAddressReadAppLayerConfirm(HopCountType hopType, u
{ {
} }
void BusAccessUnit::individualAddressSerialNumberReadLocalConfirm(AckType ack, HopCountType hopType, uint8_t * serialNumber, bool status) void BusAccessUnit::individualAddressSerialNumberReadLocalConfirm(AckType ack, HopCountType hopType, uint8_t* serialNumber, bool status)
{ {
} }
@ -56,11 +56,11 @@ void BusAccessUnit::individualAddressSerialNumberReadIndication(Priority priorit
{ {
} }
void BusAccessUnit::individualAddressSerialNumberReadResponseConfirm(AckType ack, HopCountType hopType, uint8_t * serialNumber, uint16_t domainAddress, bool status) void BusAccessUnit::individualAddressSerialNumberReadResponseConfirm(AckType ack, HopCountType hopType, uint8_t* serialNumber, uint16_t domainAddress, bool status)
{ {
} }
void BusAccessUnit::individualAddressSerialNumberReadAppLayerConfirm(HopCountType hopType, uint8_t * serialNumber, uint16_t individualAddress, uint16_t domainAddress) void BusAccessUnit::individualAddressSerialNumberReadAppLayerConfirm(HopCountType hopType, uint8_t* serialNumber, uint16_t individualAddress, uint16_t domainAddress)
{ {
} }
@ -81,12 +81,12 @@ void BusAccessUnit::deviceDescriptorReadIndication(Priority priority, HopCountTy
{ {
} }
void BusAccessUnit::deviceDescriptorReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t descriptor_type, void BusAccessUnit::deviceDescriptorReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t descriptor_type,
uint8_t * device_descriptor, bool status) uint8_t* device_descriptor, bool status)
{ {
} }
void BusAccessUnit::deviceDescriptorReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t descriptortype, uint8_t * deviceDescriptor) void BusAccessUnit::deviceDescriptorReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t descriptortype, uint8_t* deviceDescriptor)
{ {
} }
@ -106,19 +106,19 @@ void BusAccessUnit::propertyValueReadIndication(Priority priority, HopCountType
{ {
} }
void BusAccessUnit::propertyValueReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t * data, uint8_t length, bool status) void BusAccessUnit::propertyValueReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length, bool status)
{ {
} }
void BusAccessUnit::propertyValueReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t * data, uint8_t length) void BusAccessUnit::propertyValueReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length)
{ {
} }
void BusAccessUnit::propertyValueWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t * data, uint8_t length, bool status) void BusAccessUnit::propertyValueWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length, bool status)
{ {
} }
void BusAccessUnit::propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t * data, uint8_t length) void BusAccessUnit::propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length)
{ {
} }
@ -150,19 +150,19 @@ void BusAccessUnit::memoryReadIndication(Priority priority, HopCountType hopType
{ {
} }
void BusAccessUnit::memoryReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t * data, bool status) void BusAccessUnit::memoryReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t* data, bool status)
{ {
} }
void BusAccessUnit::memoryReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t * data) void BusAccessUnit::memoryReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t* data)
{ {
} }
void BusAccessUnit::memoryWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t * data, bool status) void BusAccessUnit::memoryWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t* data, bool status)
{ {
} }
void BusAccessUnit::memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t * data) void BusAccessUnit::memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint16_t memoryAddress, uint8_t* data)
{ {
} }
@ -174,19 +174,19 @@ void BusAccessUnit::userMemoryReadIndication(Priority priority, HopCountType hop
{ {
} }
void BusAccessUnit::userMemoryReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t * memoryData, bool status) void BusAccessUnit::userMemoryReadResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t* memoryData, bool status)
{ {
} }
void BusAccessUnit::userMemoryReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t * memoryData) void BusAccessUnit::userMemoryReadAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t* memoryData)
{ {
} }
void BusAccessUnit::userMemoryWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t * memoryData, bool status) void BusAccessUnit::userMemoryWriteLocalConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t* memoryData, bool status)
{ {
} }
void BusAccessUnit::userMemoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t * memoryData) void BusAccessUnit::userMemoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t number, uint32_t memoryAddress, uint8_t* memoryData)
{ {
} }
@ -198,11 +198,11 @@ void BusAccessUnit::userManufacturerInfoIndication(Priority priority, HopCountTy
{ {
} }
void BusAccessUnit::userManufacturerInfoResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t * info, bool status) void BusAccessUnit::userManufacturerInfoResponseConfirm(AckType ack, Priority priority, HopCountType hopType, uint16_t asap, uint8_t* info, bool status)
{ {
} }
void BusAccessUnit::userManufacturerInfoAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t * info) void BusAccessUnit::userManufacturerInfoAppLayerConfirm(Priority priority, HopCountType hopType, uint16_t asap, uint8_t* info)
{ {
} }
@ -243,12 +243,12 @@ void BusAccessUnit::connectConfirm(uint16_t destination)
} }
void BusAccessUnit::systemNetworkParameterReadIndication(Priority priority, HopCountType hopType, uint16_t objectType, void BusAccessUnit::systemNetworkParameterReadIndication(Priority priority, HopCountType hopType, uint16_t objectType,
uint16_t propertyId, uint8_t* testInfo, uint16_t testInfoLength) uint16_t propertyId, uint8_t* testInfo, uint16_t testInfoLength)
{ {
} }
void BusAccessUnit::domainAddressSerialNumberWriteIndication(Priority priority, HopCountType hopType, uint8_t* rfDoA, void BusAccessUnit::domainAddressSerialNumberWriteIndication(Priority priority, HopCountType hopType, uint8_t* rfDoA,
uint8_t* knxSerialNumber) uint8_t* knxSerialNumber)
{ {
} }
@ -257,15 +257,13 @@ void BusAccessUnit::domainAddressSerialNumberReadIndication(Priority priority, H
} }
void BusAccessUnit::propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void BusAccessUnit::propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t **data, uint32_t &length) uint8_t** data, uint32_t& length)
{ {
} }
void BusAccessUnit::propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void BusAccessUnit::propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t* data, uint32_t length) uint8_t* data, uint32_t length)
{ {
} }

View File

@ -120,10 +120,10 @@ class BusAccessUnit
virtual void domainAddressSerialNumberReadIndication(Priority priority, HopCountType hopType, uint8_t* knxSerialNumber); virtual void domainAddressSerialNumberReadIndication(Priority priority, HopCountType hopType, uint8_t* knxSerialNumber);
virtual void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, virtual void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t **data, uint32_t &length); uint8_t** data, uint32_t& length);
virtual void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, virtual void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t* data, uint32_t length); uint8_t* data, uint32_t length);
}; };

View File

@ -207,18 +207,17 @@ void BauSystemB::propertyDescriptionReadIndication(Priority priority, HopCountTy
void BauSystemB::propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, void BauSystemB::propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex,
uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length) uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length)
{ {
uint32_t elementCount = numberOfElements;
InterfaceObject* obj = getInterfaceObject(objectIndex); InterfaceObject* obj = getInterfaceObject(objectIndex);
if(obj) if(obj)
obj->writeProperty((PropertyID)propertyId, startIndex, data, elementCount); obj->writeProperty((PropertyID)propertyId, startIndex, data, numberOfElements);
propertyValueReadIndication(priority, hopType, asap, objectIndex, propertyId, elementCount, startIndex); propertyValueReadIndication(priority, hopType, asap, objectIndex, propertyId, numberOfElements, startIndex);
} }
void BauSystemB::propertyValueReadIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex, void BauSystemB::propertyValueReadIndication(Priority priority, HopCountType hopType, uint16_t asap, uint8_t objectIndex,
uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex) uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex)
{ {
uint8_t size = 0; uint8_t size = 0;
uint32_t elementCount = numberOfElements; uint8_t elementCount = numberOfElements;
InterfaceObject* obj = getInterfaceObject(objectIndex); InterfaceObject* obj = getInterfaceObject(objectIndex);
if (obj) if (obj)
{ {
@ -389,11 +388,11 @@ void BauSystemB::systemNetworkParameterReadIndication(Priority priority, HopCoun
} }
void BauSystemB::propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void BauSystemB::propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t &numberOfElements, uint16_t startIndex,
uint8_t **data, uint32_t &length) uint8_t **data, uint32_t &length)
{ {
uint32_t size = 0; uint32_t size = 0;
uint32_t elementCount = numberOfElements; uint8_t elementCount = numberOfElements;
InterfaceObject* obj = getInterfaceObject(objectType, objectInstance); InterfaceObject* obj = getInterfaceObject(objectType, objectInstance);
@ -415,7 +414,7 @@ void BauSystemB::propertyValueRead(ObjectType objectType, uint8_t objectInstance
} }
void BauSystemB::propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void BauSystemB::propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t &numberOfElements, uint16_t startIndex,
uint8_t* data, uint32_t length) uint8_t* data, uint32_t length)
{ {
InterfaceObject* obj = getInterfaceObject(objectType, objectInstance); InterfaceObject* obj = getInterfaceObject(objectType, objectInstance);

View File

@ -29,12 +29,12 @@ class BauSystemB : protected BusAccessUnit
void writeMemory(); void writeMemory();
void addSaveRestore(SaveRestore* obj); void addSaveRestore(SaveRestore* obj);
bool restartRequest(uint16_t asap); bool restartRequest(uint16_t asap);
void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t **data, uint32_t &length) override; uint8_t **data, uint32_t &length) override;
void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
uint32_t &numberOfElements, uint16_t startIndex, uint8_t& numberOfElements, uint16_t startIndex,
uint8_t* data, uint32_t length) override; uint8_t* data, uint32_t length) override;
protected: protected:

View File

@ -4,7 +4,7 @@
#include "cemi_server_object.h" #include "cemi_server_object.h"
#include "bits.h" #include "bits.h"
void CemiServerObject::readProperty(PropertyID propertyId, uint32_t start, uint32_t& count, uint8_t* data) void CemiServerObject::readProperty(PropertyID propertyId, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (propertyId) switch (propertyId)
{ {
@ -47,7 +47,7 @@ void CemiServerObject::readProperty(PropertyID propertyId, uint32_t start, uint3
} }
} }
void CemiServerObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) void CemiServerObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -5,8 +5,8 @@
class CemiServerObject: public InterfaceObject class CemiServerObject: public InterfaceObject
{ {
public: public:
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) override; void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data) override;
void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) override; void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count) override;
uint8_t propertySize(PropertyID id) override; uint8_t propertySize(PropertyID id) override;
uint8_t* save(uint8_t* buffer); uint8_t* save(uint8_t* buffer);
uint8_t* restore(uint8_t* buffer); uint8_t* restore(uint8_t* buffer);

View File

@ -2,7 +2,7 @@
#include "device_object.h" #include "device_object.h"
#include "bits.h" #include "bits.h"
void DeviceObject::readProperty(PropertyID propertyId, uint32_t start, uint32_t& count, uint8_t* data) void DeviceObject::readProperty(PropertyID propertyId, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (propertyId) switch (propertyId)
{ {
@ -59,7 +59,7 @@ void DeviceObject::readProperty(PropertyID propertyId, uint32_t start, uint32_t&
} }
} }
void DeviceObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) void DeviceObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -7,8 +7,8 @@
class DeviceObject: public InterfaceObject class DeviceObject: public InterfaceObject
{ {
public: public:
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count); void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
uint8_t propertySize(PropertyID id); uint8_t propertySize(PropertyID id);
uint8_t* save(uint8_t* buffer); uint8_t* save(uint8_t* buffer);
uint8_t* restore(uint8_t* buffer); uint8_t* restore(uint8_t* buffer);

View File

@ -14,7 +14,7 @@ GroupObjectTableObject::~GroupObjectTableObject()
freeGroupObjects(); freeGroupObjects();
} }
void GroupObjectTableObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) void GroupObjectTableObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (id) switch (id)
{ {

View File

@ -10,7 +10,7 @@ class GroupObjectTableObject : public TableObject
public: public:
GroupObjectTableObject(Memory& memory); GroupObjectTableObject(Memory& memory);
virtual ~GroupObjectTableObject(); virtual ~GroupObjectTableObject();
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
ObjectType objectType() { return OT_GRP_OBJ_TABLE; } ObjectType objectType() { return OT_GRP_OBJ_TABLE; }
uint16_t entryCount(); uint16_t entryCount();
GroupObject& get(uint16_t asap); GroupObject& get(uint16_t asap);

View File

@ -46,14 +46,14 @@ void InterfaceObject::readPropertyDescription(uint8_t& propertyId, uint8_t& prop
} }
} }
void InterfaceObject::readProperty(PropertyID id, uint32_t start, uint32_t &count, uint8_t *data) void InterfaceObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
// Set number of elements to zero as we are in the end of the call chain // Set number of elements to zero as we are in the end of the call chain
// Nobody processed the property before. // Nobody processed the property before.
count = 0; count = 0;
} }
void InterfaceObject::writeProperty(PropertyID id, uint32_t start, uint8_t *data, uint32_t &count) void InterfaceObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
// Set number of elements to zero as we are in the end of the call chain // Set number of elements to zero as we are in the end of the call chain
// Nobody processed the property before. // Nobody processed the property before.

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <stddef.h> #include <stddef.h>
#include "property_types.h" #include "property.h"
#include "save_restore.h" #include "save_restore.h"
/** Enum for the type of an interface object. See Section 2.2 of knx:3/7/3 */ /** Enum for the type of an interface object. See Section 2.2 of knx:3/7/3 */
@ -75,7 +75,7 @@ class InterfaceObject : public SaveRestore
* *
* @param[out] data The requested data of the property. * @param[out] data The requested data of the property.
*/ */
virtual void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); virtual void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
/** /**
* Write property of the interface object. If the interface object does not have the property this * Write property of the interface object. If the interface object does not have the property this
* method does nothing. See section 4.8.4.4 of @cite knx:3/4/1. * method does nothing. See section 4.8.4.4 of @cite knx:3/4/1.
@ -89,7 +89,7 @@ class InterfaceObject : public SaveRestore
* *
* @param[in] data The data that should be written. * @param[in] data The data that should be written.
*/ */
virtual void writeProperty(PropertyID id, uint32_t start, uint8_t *data, uint32_t &count); virtual void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
/** /**
* Gets the size of of property in bytes. * Gets the size of of property in bytes.
* *

View File

@ -10,7 +10,7 @@ IpParameterObject::IpParameterObject(DeviceObject& deviceObject, Platform& platf
_platform(platform) _platform(platform)
{} {}
void IpParameterObject::readProperty(PropertyID propertyId, uint32_t start, uint32_t& count, uint8_t* data) void IpParameterObject::readProperty(PropertyID propertyId, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (propertyId) switch (propertyId)
{ {
@ -79,7 +79,7 @@ void IpParameterObject::readProperty(PropertyID propertyId, uint32_t start, uint
} }
} }
void IpParameterObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) void IpParameterObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -8,8 +8,8 @@ class IpParameterObject : public InterfaceObject
{ {
public: public:
IpParameterObject(DeviceObject& deviceObject, Platform& platform); IpParameterObject(DeviceObject& deviceObject, Platform& platform);
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count); void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
uint8_t propertySize(PropertyID id); uint8_t propertySize(PropertyID id);
ObjectType objectType() { return OT_IP_PARAMETER; } ObjectType objectType() { return OT_IP_PARAMETER; }

View File

@ -215,12 +215,24 @@ enum AccessLevel
WriteLv3 = 0x03, WriteLv3 = 0x03,
}; };
class PropertyDescription struct PropertyDescription
{ {
public:
PropertyID Id; PropertyID Id;
bool WriteEnable; bool WriteEnable;
PropertyDataType Type; PropertyDataType Type;
uint16_t MaxElements; uint16_t MaxElements;
uint8_t Access; uint8_t Access;
};
class Property
{
public:
PropertyID Id();
bool WriteEnable();
PropertyDataType Type();
uint16_t MaxElements();
uint8_t Access();
uint16_t CurrentElements();
uint8_t ElementSize();
void read(uint32_t start, uint32_t& count, uint8_t* data);
}; };

View File

@ -2,7 +2,7 @@
#include "rf_medium_object.h" #include "rf_medium_object.h"
#include "bits.h" #include "bits.h"
void RfMediumObject::readProperty(PropertyID propertyId, uint32_t start, uint32_t& count, uint8_t* data) void RfMediumObject::readProperty(PropertyID propertyId, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (propertyId) switch (propertyId)
{ {
@ -37,7 +37,7 @@ void RfMediumObject::readProperty(PropertyID propertyId, uint32_t start, uint32_
} }
} }
void RfMediumObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count) void RfMediumObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -5,8 +5,8 @@
class RfMediumObject: public InterfaceObject class RfMediumObject: public InterfaceObject
{ {
public: public:
void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count); void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
uint8_t propertySize(PropertyID id); uint8_t propertySize(PropertyID id);
uint8_t* save(uint8_t* buffer); uint8_t* save(uint8_t* buffer);
uint8_t* restore(uint8_t* buffer); uint8_t* restore(uint8_t* buffer);

View File

@ -9,7 +9,7 @@ TableObject::TableObject(Memory& memory): _memory(memory)
} }
void TableObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data) void TableObject::readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data)
{ {
switch (id) switch (id)
{ {
@ -30,7 +30,7 @@ void TableObject::readProperty(PropertyID id, uint32_t start, uint32_t& count, u
} }
} }
void TableObject::writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t &count) void TableObject::writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count)
{ {
switch (id) switch (id)
{ {

View File

@ -16,8 +16,8 @@ class TableObject: public InterfaceObject
* @param memory The instance of the memory management class to use. * @param memory The instance of the memory management class to use.
*/ */
TableObject(Memory& memory); TableObject(Memory& memory);
virtual void readProperty(PropertyID id, uint32_t start, uint32_t& count, uint8_t* data); virtual void readProperty(PropertyID id, uint16_t start, uint8_t& count, uint8_t* data);
virtual void writeProperty(PropertyID id, uint32_t start, uint8_t* data, uint32_t& count); virtual void writeProperty(PropertyID id, uint16_t start, uint8_t* data, uint8_t& count);
virtual uint8_t propertySize(PropertyID id); virtual uint8_t propertySize(PropertyID id);
/** /**
* The destructor. * The destructor.