mirror of
https://github.com/thelsing/knx.git
synced 2024-12-18 19:08:18 +01:00
add some convienience methods to Property class
This commit is contained in:
parent
398ba7408b
commit
b9571112d6
@ -86,39 +86,21 @@ DataProperty::DataProperty(PropertyID id, bool writeEnable, PropertyDataType typ
|
|||||||
uint16_t maxElements, uint8_t access, uint16_t value)
|
uint16_t maxElements, uint8_t access, uint16_t value)
|
||||||
: Property(id, writeEnable, type, maxElements, access)
|
: Property(id, writeEnable, type, maxElements, access)
|
||||||
{
|
{
|
||||||
uint8_t elementSize = ElementSize();
|
Property::write(value);
|
||||||
if (elementSize == 2)
|
|
||||||
{
|
|
||||||
uint8_t data[elementSize];
|
|
||||||
pushWord(value, data);
|
|
||||||
write(1, 1, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DataProperty::DataProperty(PropertyID id, bool writeEnable, PropertyDataType type,
|
DataProperty::DataProperty(PropertyID id, bool writeEnable, PropertyDataType type,
|
||||||
uint16_t maxElements, uint8_t access, uint32_t value)
|
uint16_t maxElements, uint8_t access, uint32_t value)
|
||||||
: Property(id, writeEnable, type, maxElements, access)
|
: Property(id, writeEnable, type, maxElements, access)
|
||||||
{
|
{
|
||||||
uint8_t elementSize = ElementSize();
|
Property::write(value);
|
||||||
if (elementSize == 4)
|
|
||||||
{
|
|
||||||
uint8_t data[elementSize];
|
|
||||||
pushInt(value, data);
|
|
||||||
write(1, 1, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DataProperty::DataProperty(PropertyID id, bool writeEnable, PropertyDataType type,
|
DataProperty::DataProperty(PropertyID id, bool writeEnable, PropertyDataType type,
|
||||||
uint16_t maxElements, uint8_t access, uint8_t value)
|
uint16_t maxElements, uint8_t access, uint8_t value)
|
||||||
: Property(id, writeEnable, type, maxElements, access)
|
: Property(id, writeEnable, type, maxElements, access)
|
||||||
{
|
{
|
||||||
uint8_t elementSize = ElementSize();
|
Property::write(value);
|
||||||
if (elementSize == 1)
|
|
||||||
{
|
|
||||||
uint8_t data[elementSize];
|
|
||||||
data[0] = value;
|
|
||||||
write(1, 1, data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t DataProperty::saveSize()
|
uint16_t DataProperty::saveSize()
|
||||||
|
@ -100,12 +100,8 @@ uint32_t IpParameterObject::multicastAddress() const
|
|||||||
{
|
{
|
||||||
const Property* prop = property(PID_ROUTING_MULTICAST_ADDRESS);
|
const Property* prop = property(PID_ROUTING_MULTICAST_ADDRESS);
|
||||||
|
|
||||||
uint8_t data[4];
|
|
||||||
uint8_t count = prop->read(1, 1, data);
|
|
||||||
|
|
||||||
uint32_t value = DEFAULT_MULTICAST_ADDR;
|
uint32_t value = DEFAULT_MULTICAST_ADDR;
|
||||||
if (count == 1)
|
prop->read(value);
|
||||||
popInt(value, data);
|
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@ -114,8 +110,8 @@ uint8_t IpParameterObject::ttl() const
|
|||||||
{
|
{
|
||||||
const Property* prop = property(PID_TTL);
|
const Property* prop = property(PID_TTL);
|
||||||
|
|
||||||
uint8_t data[1];
|
uint8_t value = 0;
|
||||||
prop->read(1, 1, data);
|
prop->read(value);
|
||||||
return data[0];
|
return value;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
@ -111,3 +111,73 @@ Property::Property(PropertyID id, bool writeEnable, PropertyDataType type,
|
|||||||
|
|
||||||
Property::~Property()
|
Property::~Property()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::read(uint8_t& value) const
|
||||||
|
{
|
||||||
|
if (ElementSize() != 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return read(1, 1, &value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::read(uint16_t& value) const
|
||||||
|
{
|
||||||
|
if (ElementSize() != 2)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint8_t data[2];
|
||||||
|
uint8_t count = read(1, 1, data);
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
popWord(value, data);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::read(uint32_t& value) const
|
||||||
|
{
|
||||||
|
if (ElementSize() != 4)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint8_t data[4];
|
||||||
|
uint8_t count = read(1, 1, data);
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
popInt(value, data);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::write(uint8_t& value)
|
||||||
|
{
|
||||||
|
if (ElementSize() != 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return write(1, 1, &value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::write(uint16_t& value)
|
||||||
|
{
|
||||||
|
if (ElementSize() != 2)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint8_t data[2];
|
||||||
|
pushWord(value, data);
|
||||||
|
return write(1, 1, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t Property::write(uint32_t& value)
|
||||||
|
{
|
||||||
|
if (ElementSize() != 4)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint8_t data[4];
|
||||||
|
pushInt(value, data);
|
||||||
|
return write(1, 1, data);
|
||||||
|
}
|
||||||
|
@ -238,6 +238,12 @@ class Property : public SaveRestore
|
|||||||
uint8_t ElementSize() const;
|
uint8_t ElementSize() const;
|
||||||
virtual uint8_t read(uint16_t start, uint8_t count, uint8_t* data) const = 0;
|
virtual uint8_t read(uint16_t start, uint8_t count, uint8_t* data) const = 0;
|
||||||
virtual uint8_t write(uint16_t start, uint8_t count, uint8_t* data) = 0;
|
virtual uint8_t write(uint16_t start, uint8_t count, uint8_t* data) = 0;
|
||||||
|
uint8_t read(uint8_t& value) const;
|
||||||
|
uint8_t read(uint16_t& value) const;
|
||||||
|
uint8_t read(uint32_t& value) const;
|
||||||
|
uint8_t write(uint8_t& value);
|
||||||
|
uint8_t write(uint16_t& value);
|
||||||
|
uint8_t write(uint32_t& value);
|
||||||
protected:
|
protected:
|
||||||
PropertyID _id;
|
PropertyID _id;
|
||||||
bool _writeEnable;
|
bool _writeEnable;
|
||||||
|
Loading…
Reference in New Issue
Block a user