mirror of
https://github.com/thelsing/knx.git
synced 2025-09-09 17:51:55 +02:00
save work
This commit is contained in:
parent
bc09622a77
commit
9a6d5cecf4
@ -103,8 +103,6 @@ add_executable(knx-linux
|
|||||||
../../src/knx/rf_medium_object.h
|
../../src/knx/rf_medium_object.h
|
||||||
../../src/knx/rf_physical_layer.cpp
|
../../src/knx/rf_physical_layer.cpp
|
||||||
../../src/knx/rf_physical_layer.h
|
../../src/knx/rf_physical_layer.h
|
||||||
../../src/knx/router_object.cpp
|
|
||||||
../../src/knx/router_object.h
|
|
||||||
../../src/knx/router_object_filtertable.cpp
|
../../src/knx/router_object_filtertable.cpp
|
||||||
../../src/knx/router_object_filtertable.h
|
../../src/knx/router_object_filtertable.h
|
||||||
../../src/knx/secure_application_layer.cpp
|
../../src/knx/secure_application_layer.cpp
|
||||||
|
@ -6,14 +6,15 @@
|
|||||||
BauSystemBCoupler::BauSystemBCoupler(Platform& platform) :
|
BauSystemBCoupler::BauSystemBCoupler(Platform& platform) :
|
||||||
BauSystemB(platform),
|
BauSystemB(platform),
|
||||||
_platform(platform),
|
_platform(platform),
|
||||||
_rtObjPrimary(),
|
_rtObjPrimary(memory()),
|
||||||
_rtObjSecondary(memory()),
|
_rtObjSecondary(memory()),
|
||||||
#ifdef USE_DATASECURE
|
#ifdef USE_DATASECURE
|
||||||
_appLayer(_deviceObj, _secIfObj, *this),
|
_appLayer(_deviceObj, _secIfObj, *this),
|
||||||
#else
|
#else
|
||||||
_appLayer(*this),
|
_appLayer(*this),
|
||||||
#endif
|
#endif
|
||||||
_transLayer(_appLayer), _netLayer(_deviceObj, _transLayer)
|
_transLayer(_appLayer),
|
||||||
|
_netLayer(_deviceObj, _transLayer)
|
||||||
{
|
{
|
||||||
_appLayer.transportLayer(_transLayer);
|
_appLayer.transportLayer(_transLayer);
|
||||||
_transLayer.networkLayer(_netLayer);
|
_transLayer.networkLayer(_netLayer);
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include "group_object_table_object.h"
|
#include "group_object_table_object.h"
|
||||||
#include "security_interface_object.h"
|
#include "security_interface_object.h"
|
||||||
#include "application_program_object.h"
|
#include "application_program_object.h"
|
||||||
#include "router_object.h"
|
|
||||||
#include "router_object_filtertable.h"
|
#include "router_object_filtertable.h"
|
||||||
#include "application_layer.h"
|
#include "application_layer.h"
|
||||||
#include "secure_application_layer.h"
|
#include "secure_application_layer.h"
|
||||||
@ -32,7 +31,7 @@ class BauSystemBCoupler : public BauSystemB
|
|||||||
|
|
||||||
Platform& _platform;
|
Platform& _platform;
|
||||||
RouterObject _rtObjPrimary;
|
RouterObject _rtObjPrimary;
|
||||||
RouterObjectFilterTable _rtObjSecondary;
|
RouterObject _rtObjSecondary;
|
||||||
|
|
||||||
#ifdef USE_DATASECURE
|
#ifdef USE_DATASECURE
|
||||||
SecureApplicationLayer _appLayer;
|
SecureApplicationLayer _appLayer;
|
||||||
|
@ -14,12 +14,6 @@ void RouterObject::initializeProperties(size_t propertiesSize, Property** proper
|
|||||||
{
|
{
|
||||||
Property* ownProperties[] =
|
Property* ownProperties[] =
|
||||||
{
|
{
|
||||||
new DataProperty( PID_OBJECT_TYPE, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) OT_ROUTER ),
|
|
||||||
new DataProperty( PID_OBJECT_INDEX, false, PDT_UNSIGNED_CHAR, 1, ReadLv3 | WriteLv0 ), // Must be set by concrete BAUxxxx
|
|
||||||
new DataProperty( PID_MEDIUM_STATUS, false, PDT_GENERIC_01, 1, ReadLv3 | WriteLv0, (uint16_t) 0 ), // For now: communication on medium is always possible
|
|
||||||
new DataProperty( PID_MAX_APDU_LENGTH_ROUTER, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) 254 ), // For now: fixed size
|
|
||||||
new DataProperty( PID_HOP_COUNT, true, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) 5), // TODO: Primary side: 5 for line coupler, 4 for backbone coupler, only exists if secondary is open medium without hop count
|
|
||||||
new DataProperty( PID_MEDIUM, false, PDT_ENUM8, 1, ReadLv3 | WriteLv0 ), // Must be set by concrete BAUxxxx
|
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t ownPropertiesCount = sizeof(ownProperties) / sizeof(Property*);
|
uint8_t ownPropertiesCount = sizeof(ownProperties) / sizeof(Property*);
|
||||||
@ -43,19 +37,3 @@ void RouterObject::masterReset(EraseCode eraseCode, uint8_t channel)
|
|||||||
println("Factory reset of router object requested.");
|
println("Factory reset of router object requested.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t RouterObject::getNumberOfElements(PropertyID propId)
|
|
||||||
{
|
|
||||||
// Get number of entries for this property
|
|
||||||
uint16_t numElements = 0;
|
|
||||||
|
|
||||||
uint8_t data[sizeof(uint16_t)]; // is sizeof(_currentElements) which is uint16_t
|
|
||||||
uint8_t count = property(propId)->read(0, 1, data);
|
|
||||||
|
|
||||||
if (count > 0)
|
|
||||||
{
|
|
||||||
popWord(numElements, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
return numElements;
|
|
||||||
}
|
|
||||||
|
@ -15,6 +15,4 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void initializeProperties(size_t propertiesSize, Property** properties) override;
|
void initializeProperties(size_t propertiesSize, Property** properties) override;
|
||||||
|
|
||||||
private:
|
|
||||||
uint16_t getNumberOfElements(PropertyID propId);
|
|
||||||
};
|
};
|
||||||
|
@ -16,14 +16,20 @@ enum RouteTableServices
|
|||||||
SetGroupAddress = 0x04, // 4 bytes: start address and end address
|
SetGroupAddress = 0x04, // 4 bytes: start address and end address
|
||||||
};
|
};
|
||||||
|
|
||||||
RouterObjectFilterTable::RouterObjectFilterTable(Memory& memory)
|
RouterObject::RouterObject(Memory& memory)
|
||||||
: _memory(memory)
|
: _memory(memory)
|
||||||
{
|
{
|
||||||
Property* properties[] =
|
Property* properties[] =
|
||||||
{
|
{
|
||||||
new CallbackProperty<RouterObjectFilterTable>(this, PID_LOAD_STATE_CONTROL, true, PDT_CONTROL, 1, ReadLv3 | WriteLv3,
|
new DataProperty( PID_OBJECT_TYPE, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) OT_ROUTER ),
|
||||||
|
new DataProperty( PID_OBJECT_INDEX, false, PDT_UNSIGNED_CHAR, 1, ReadLv3 | WriteLv0 ), // Must be set by concrete BAUxxxx
|
||||||
|
new DataProperty( PID_MEDIUM_STATUS, false, PDT_GENERIC_01, 1, ReadLv3 | WriteLv0, (uint16_t) 0 ), // For now: communication on medium is always possible
|
||||||
|
new DataProperty( PID_MAX_APDU_LENGTH_ROUTER, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) 254 ), // For now: fixed size
|
||||||
|
new DataProperty( PID_HOP_COUNT, true, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t) 5), // TODO: Primary side: 5 for line coupler, 4 for backbone coupler, only exists if secondary is open medium without hop count
|
||||||
|
new DataProperty( PID_MEDIUM, false, PDT_ENUM8, 1, ReadLv3 | WriteLv0 ), // Must be set by concrete BAUxxxx
|
||||||
|
new CallbackProperty<RouterObject>(this, PID_LOAD_STATE_CONTROL, true, PDT_CONTROL, 1, ReadLv3 | WriteLv3,
|
||||||
// ReadCallback of PID_LOAD_STATE_CONTROL
|
// ReadCallback of PID_LOAD_STATE_CONTROL
|
||||||
[](RouterObjectFilterTable* obj, uint16_t start, uint8_t count, uint8_t* data) -> uint8_t {
|
[](RouterObject* obj, uint16_t start, uint8_t count, uint8_t* data) -> uint8_t {
|
||||||
if (start == 0)
|
if (start == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@ -31,12 +37,12 @@ RouterObjectFilterTable::RouterObjectFilterTable(Memory& memory)
|
|||||||
return 1;
|
return 1;
|
||||||
},
|
},
|
||||||
// WriteCallback of PID_LOAD_STATE_CONTROL
|
// WriteCallback of PID_LOAD_STATE_CONTROL
|
||||||
[](RouterObjectFilterTable* obj, uint16_t start, uint8_t count, const uint8_t* data) -> uint8_t {
|
[](RouterObject* obj, uint16_t start, uint8_t count, const uint8_t* data) -> uint8_t {
|
||||||
obj->loadEvent(data);
|
obj->loadEvent(data);
|
||||||
return 1;
|
return 1;
|
||||||
}),
|
}),
|
||||||
new CallbackProperty<RouterObjectFilterTable>(this, PID_TABLE_REFERENCE, false, PDT_UNSIGNED_LONG, 1, ReadLv3 | WriteLv0,
|
new CallbackProperty<RouterObject>(this, PID_TABLE_REFERENCE, false, PDT_UNSIGNED_LONG, 1, ReadLv3 | WriteLv0,
|
||||||
[](RouterObjectFilterTable* obj, uint16_t start, uint8_t count, uint8_t* data) -> uint8_t {
|
[](RouterObject* obj, uint16_t start, uint8_t count, uint8_t* data) -> uint8_t {
|
||||||
if(start == 0)
|
if(start == 0)
|
||||||
{
|
{
|
||||||
uint16_t currentNoOfElements = 1;
|
uint16_t currentNoOfElements = 1;
|
||||||
@ -53,33 +59,33 @@ RouterObjectFilterTable::RouterObjectFilterTable(Memory& memory)
|
|||||||
|
|
||||||
new DataProperty( PID_MCB_TABLE, false, PDT_GENERIC_08, 1, ReadLv3 | WriteLv0),
|
new DataProperty( PID_MCB_TABLE, false, PDT_GENERIC_08, 1, ReadLv3 | WriteLv0),
|
||||||
|
|
||||||
new FunctionProperty<RouterObjectFilterTable>(this, PID_ROUTETABLE_CONTROL,
|
new FunctionProperty<RouterObject>(this, PID_ROUTETABLE_CONTROL,
|
||||||
// Command Callback of PID_ROUTETABLE_CONTROL
|
// Command Callback of PID_ROUTETABLE_CONTROL
|
||||||
[](RouterObjectFilterTable* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
[](RouterObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
||||||
obj->functionRouteTableControl(true, data, length, resultData, resultLength);
|
obj->functionRouteTableControl(true, data, length, resultData, resultLength);
|
||||||
},
|
},
|
||||||
// State Callback of PID_ROUTETABLE_CONTROL
|
// State Callback of PID_ROUTETABLE_CONTROL
|
||||||
[](RouterObjectFilterTable* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
[](RouterObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
||||||
obj->functionRouteTableControl(false, data, length, resultData, resultLength);
|
obj->functionRouteTableControl(false, data, length, resultData, resultLength);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
new DataProperty( PID_FILTER_TABLE_USE, true, PDT_BINARY_INFORMATION, 1, ReadLv3 | WriteLv0, (uint16_t) 0 ), // default: invalid filter table, do not use
|
new DataProperty( PID_FILTER_TABLE_USE, true, PDT_BINARY_INFORMATION, 1, ReadLv3 | WriteLv0, (uint16_t) 0 ), // default: invalid filter table, do not use
|
||||||
|
|
||||||
new FunctionProperty<RouterObjectFilterTable>(this, PID_RF_ENABLE_SBC,
|
new FunctionProperty<RouterObject>(this, PID_RF_ENABLE_SBC,
|
||||||
// Command Callback of PID_RF_ENABLE_SBC
|
// Command Callback of PID_RF_ENABLE_SBC
|
||||||
[](RouterObjectFilterTable* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
[](RouterObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
||||||
obj->functionRfEnableSbc(true, data, length, resultData, resultLength);
|
obj->functionRfEnableSbc(true, data, length, resultData, resultLength);
|
||||||
},
|
},
|
||||||
// State Callback of PID_RF_ENABLE_SBC
|
// State Callback of PID_RF_ENABLE_SBC
|
||||||
[](RouterObjectFilterTable* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
[](RouterObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> void {
|
||||||
obj->functionRfEnableSbc(false, data, length, resultData, resultLength);
|
obj->functionRfEnableSbc(false, data, length, resultData, resultLength);
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
RouterObject::initializeProperties(sizeof(properties), properties);
|
initializeProperties(sizeof(properties), properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* RouterObjectFilterTable::save(uint8_t* buffer)
|
uint8_t* RouterObject::save(uint8_t* buffer)
|
||||||
{
|
{
|
||||||
buffer = pushByte(_state, buffer);
|
buffer = pushByte(_state, buffer);
|
||||||
|
|
||||||
@ -88,10 +94,10 @@ uint8_t* RouterObjectFilterTable::save(uint8_t* buffer)
|
|||||||
else
|
else
|
||||||
buffer = pushInt(0, buffer);
|
buffer = pushInt(0, buffer);
|
||||||
|
|
||||||
return RouterObject::save(buffer);
|
return InterfaceObject::save(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t* RouterObjectFilterTable::restore(const uint8_t* buffer)
|
const uint8_t* RouterObject::restore(const uint8_t* buffer)
|
||||||
{
|
{
|
||||||
uint8_t state = 0;
|
uint8_t state = 0;
|
||||||
buffer = popByte(state, buffer);
|
buffer = popByte(state, buffer);
|
||||||
@ -107,15 +113,15 @@ const uint8_t* RouterObjectFilterTable::restore(const uint8_t* buffer)
|
|||||||
|
|
||||||
_filterTableGroupAddresses = (uint16_t*)_data;
|
_filterTableGroupAddresses = (uint16_t*)_data;
|
||||||
|
|
||||||
return RouterObject::restore(buffer);
|
return InterfaceObject::restore(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t RouterObjectFilterTable::saveSize()
|
uint16_t RouterObject::saveSize()
|
||||||
{
|
{
|
||||||
return 1 + 4 + RouterObject::saveSize();
|
return 1 + 4 + InterfaceObject::saveSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::functionRouteTableControl(bool isCommand, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
|
void RouterObject::functionRouteTableControl(bool isCommand, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
|
||||||
{
|
{
|
||||||
bool isError = false;
|
bool isError = false;
|
||||||
RouteTableServices srvId = (RouteTableServices) data[1];
|
RouteTableServices srvId = (RouteTableServices) data[1];
|
||||||
@ -159,7 +165,7 @@ void RouterObjectFilterTable::functionRouteTableControl(bool isCommand, uint8_t*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::functionRfEnableSbc(bool isCommand, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
|
void RouterObject::functionRfEnableSbc(bool isCommand, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
|
||||||
{
|
{
|
||||||
if (isCommand)
|
if (isCommand)
|
||||||
{
|
{
|
||||||
@ -171,17 +177,17 @@ void RouterObjectFilterTable::functionRfEnableSbc(bool isCommand, uint8_t* data,
|
|||||||
resultLength = 2;
|
resultLength = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterObjectFilterTable::isRfSbcRoutingEnabled()
|
bool RouterObject::isRfSbcRoutingEnabled()
|
||||||
{
|
{
|
||||||
return _rfSbcRoutingEnabled;
|
return _rfSbcRoutingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RouterObjectFilterTable::tableReference()
|
uint32_t RouterObject::tableReference()
|
||||||
{
|
{
|
||||||
return (uint32_t)_memory.toRelative(_data);
|
return (uint32_t)_memory.toRelative(_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterObjectFilterTable::allocTable(uint32_t size, bool doFill, uint8_t fillByte)
|
bool RouterObject::allocTable(uint32_t size, bool doFill, uint8_t fillByte)
|
||||||
{
|
{
|
||||||
if (_data)
|
if (_data)
|
||||||
{
|
{
|
||||||
@ -202,17 +208,17 @@ bool RouterObjectFilterTable::allocTable(uint32_t size, bool doFill, uint8_t fil
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterObjectFilterTable::isLoaded()
|
bool RouterObject::isLoaded()
|
||||||
{
|
{
|
||||||
return _state == LS_LOADED;
|
return _state == LS_LOADED;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadState RouterObjectFilterTable::loadState()
|
LoadState RouterObject::loadState()
|
||||||
{
|
{
|
||||||
return _state;
|
return _state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadEvent(const uint8_t* data)
|
void RouterObject::loadEvent(const uint8_t* data)
|
||||||
{
|
{
|
||||||
switch (_state)
|
switch (_state)
|
||||||
{
|
{
|
||||||
@ -234,7 +240,7 @@ void RouterObjectFilterTable::loadEvent(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadEventUnloaded(const uint8_t* data)
|
void RouterObject::loadEventUnloaded(const uint8_t* data)
|
||||||
{
|
{
|
||||||
uint8_t event = data[0];
|
uint8_t event = data[0];
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -253,7 +259,7 @@ void RouterObjectFilterTable::loadEventUnloaded(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadEventLoading(const uint8_t* data)
|
void RouterObject::loadEventLoading(const uint8_t* data)
|
||||||
{
|
{
|
||||||
uint8_t event = data[0];
|
uint8_t event = data[0];
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -276,7 +282,7 @@ void RouterObjectFilterTable::loadEventLoading(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadEventLoaded(const uint8_t* data)
|
void RouterObject::loadEventLoaded(const uint8_t* data)
|
||||||
{
|
{
|
||||||
uint8_t event = data[0];
|
uint8_t event = data[0];
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -306,7 +312,7 @@ void RouterObjectFilterTable::loadEventLoaded(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadEventError(const uint8_t* data)
|
void RouterObject::loadEventError(const uint8_t* data)
|
||||||
{
|
{
|
||||||
uint8_t event = data[0];
|
uint8_t event = data[0];
|
||||||
switch (event)
|
switch (event)
|
||||||
@ -325,7 +331,7 @@ void RouterObjectFilterTable::loadEventError(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::additionalLoadControls(const uint8_t* data)
|
void RouterObject::additionalLoadControls(const uint8_t* data)
|
||||||
{
|
{
|
||||||
if (data[1] != 0x0B) // Data Relative Allocation
|
if (data[1] != 0x0B) // Data Relative Allocation
|
||||||
{
|
{
|
||||||
@ -344,7 +350,7 @@ void RouterObjectFilterTable::additionalLoadControls(const uint8_t* data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::loadState(LoadState newState)
|
void RouterObject::loadState(LoadState newState)
|
||||||
{
|
{
|
||||||
if (newState == _state)
|
if (newState == _state)
|
||||||
return;
|
return;
|
||||||
@ -352,14 +358,14 @@ void RouterObjectFilterTable::loadState(LoadState newState)
|
|||||||
_state = newState;
|
_state = newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::errorCode(ErrorCode errorCode)
|
void RouterObject::errorCode(ErrorCode errorCode)
|
||||||
{
|
{
|
||||||
uint8_t data = errorCode;
|
uint8_t data = errorCode;
|
||||||
Property* prop = property(PID_ERROR_CODE);
|
Property* prop = property(PID_ERROR_CODE);
|
||||||
prop->write(data);
|
prop->write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::beforeStateChange(LoadState& newState)
|
void RouterObject::beforeStateChange(LoadState& newState)
|
||||||
{
|
{
|
||||||
if (newState != LS_LOADED)
|
if (newState != LS_LOADED)
|
||||||
return;
|
return;
|
||||||
@ -370,7 +376,7 @@ void RouterObjectFilterTable::beforeStateChange(LoadState& newState)
|
|||||||
_filterTableGroupAddresses = (uint16_t*)_data;
|
_filterTableGroupAddresses = (uint16_t*)_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::updateMcb()
|
void RouterObject::updateMcb()
|
||||||
{
|
{
|
||||||
uint8_t mcb[propertySize(PID_MCB_TABLE)];
|
uint8_t mcb[propertySize(PID_MCB_TABLE)];
|
||||||
|
|
||||||
@ -385,10 +391,8 @@ void RouterObjectFilterTable::updateMcb()
|
|||||||
property(PID_MCB_TABLE)->write(mcb);
|
property(PID_MCB_TABLE)->write(mcb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterObjectFilterTable::masterReset(EraseCode eraseCode, uint8_t channel)
|
void RouterObject::masterReset(EraseCode eraseCode, uint8_t channel)
|
||||||
{
|
{
|
||||||
RouterObject::masterReset(eraseCode, channel);
|
|
||||||
|
|
||||||
if (eraseCode == FactoryReset)
|
if (eraseCode == FactoryReset)
|
||||||
{
|
{
|
||||||
// TODO handle different erase codes
|
// TODO handle different erase codes
|
||||||
@ -396,7 +400,7 @@ void RouterObjectFilterTable::masterReset(EraseCode eraseCode, uint8_t channel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterObjectFilterTable::isGroupAddressInFilterTable(uint16_t groupAddress)
|
bool RouterObject::isGroupAddressInFilterTable(uint16_t groupAddress)
|
||||||
{
|
{
|
||||||
uint8_t filterTableUse = 0x00;
|
uint8_t filterTableUse = 0x00;
|
||||||
if (property(PID_FILTER_TABLE_USE)->read(filterTableUse) == 0)
|
if (property(PID_FILTER_TABLE_USE)->read(filterTableUse) == 0)
|
||||||
|
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "router_object.h"
|
#include "interface_object.h"
|
||||||
#include "knx_types.h"
|
#include "knx_types.h"
|
||||||
|
|
||||||
class Memory;
|
class Memory;
|
||||||
|
|
||||||
class RouterObjectFilterTable: public RouterObject
|
class RouterObject : public InterfaceObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RouterObjectFilterTable(Memory& memory);
|
RouterObject(Memory& memory);
|
||||||
|
|
||||||
bool isGroupAddressInFilterTable(uint16_t groupAddress);
|
bool isGroupAddressInFilterTable(uint16_t groupAddress);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user