Program Listing for File rf_medium_object.cpp
↰ Return to documentation for file (src/knx/rf_medium_object.cpp)
#include "config.h"
#ifdef USE_RF
#include <cstring>
#include "rf_medium_object.h"
#include "bits.h"
#include "data_property.h"
#include "function_property.h"
RfMediumObject::RfMediumObject()
{
uint8_t rfDomainAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // see KNX RF S-Mode AN160 p.11
Property* properties[] =
{
new DataProperty(PID_OBJECT_TYPE, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t)OT_RF_MEDIUM),
new DataProperty(PID_RF_MULTI_TYPE, true, PDT_GENERIC_01, 1, ReadLv3 | WriteLv2, (uint8_t)0x00),
new DataProperty(PID_RF_RETRANSMITTER, false, PDT_GENERIC_01, 1, ReadLv3 | WriteLv0, (uint8_t)0x00),
new DataProperty(PID_RF_DOMAIN_ADDRESS, true, PDT_GENERIC_06, 1, ReadLv3 | WriteLv2, rfDomainAddress),
new FunctionProperty<RfMediumObject>(this, PID_RF_BIDIR_TIMEOUT,
[](RfMediumObject * io, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
{
resultData[0] = 0x00; // success
resultData[1] = 0xFF; // permanent bidirectional device
resultData[2] = 0xFF; // permanent bidirectional device
resultLength = 3;
},
[](RfMediumObject * io, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
{
resultData[0] = 0x00; // success
resultData[1] = 0xFF; // permanent bidirectional device
resultData[2] = 0xFF; // permanent bidirectional device
resultLength = 3;
}),
/* These properties are used in NMP_LinkBudget_Measure to diagnose the Link Budget of the communication.
This in not implemented yet.
new DataProperty(PID_RF_DIAG_SA_FILTER_TABLE, true, PDT_GENERIC_03, 8, ReadLv3 | WriteLv3),
new DataProperty(PID_RF_DIAG_BUDGET_TABLE, false, PDT_GENERIC_03, 8, ReadLv3 | WriteLv0),
new FunctionProperty<RfMediumObject>(this, PID_RF_DIAG_PROBE,
[](RfMediumObject* io, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
{
},
[](RfMediumObject* io, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength)
{
}), */
};
initializeProperties(sizeof(properties), properties);
}
const uint8_t* RfMediumObject::rfDomainAddress()
{
DataProperty* prop = (DataProperty*)property(PID_RF_DOMAIN_ADDRESS);
return prop->data();
}
void RfMediumObject::rfDomainAddress(const uint8_t* value)
{
Property* prop = property(PID_RF_DOMAIN_ADDRESS);
prop->write(value);
}
#endif