generic addXdrMapping functions
This commit is contained in:
parent
a4f5153440
commit
ab53d2b626
|
@ -63,7 +63,7 @@ class QMP6988Config{
|
||||||
int iid=99;
|
int iid=99;
|
||||||
bool prAct=true;
|
bool prAct=true;
|
||||||
long intv=2000;
|
long intv=2000;
|
||||||
tN2kPressureSource source=tN2kPressureSource::N2kps_Atmospheric;
|
tN2kPressureSource prSrc=tN2kPressureSource::N2kps_Atmospheric;
|
||||||
float prOff=0;
|
float prOff=0;
|
||||||
QMP6988Config(GwConfigHandler *config){
|
QMP6988Config(GwConfigHandler *config){
|
||||||
CQMP6988(prNam);
|
CQMP6988(prNam);
|
||||||
|
@ -106,6 +106,69 @@ class BME280Config{
|
||||||
CBME280(prOff);
|
CBME280(prOff);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <class CFG>
|
||||||
|
bool addPressureXdr(GwApi *api, CFG &cfg, const String &prefix)
|
||||||
|
{
|
||||||
|
if (! cfg.prAct) return false;
|
||||||
|
if (cfg.prNam.isEmpty()){
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "pressure active for %s, no xdr mapping", prefix.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "adding pressure xdr mapping for %s", prefix.c_str());
|
||||||
|
GwXDRMappingDef xdr;
|
||||||
|
xdr.category = GwXDRCategory::XDRPRESSURE;
|
||||||
|
xdr.direction = GwXDRMappingDef::M_FROM2K;
|
||||||
|
xdr.selector = (int)cfg.prSrc;
|
||||||
|
xdr.instanceId = cfg.iid;
|
||||||
|
xdr.instanceMode = GwXDRMappingDef::IS_SINGLE;
|
||||||
|
xdr.xdrName = cfg.prNam;
|
||||||
|
api->addXdrMapping(xdr);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class CFG>
|
||||||
|
bool addTempXdr(GwApi *api, CFG &cfg, const String &prefix)
|
||||||
|
{
|
||||||
|
if (cfg.tmAct) return false;
|
||||||
|
if (cfg.tmNam.isEmpty()){
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "temperature active for %s, no xdr mapping", prefix.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "adding temperature xdr mapping for %s", prefix.c_str());
|
||||||
|
GwXDRMappingDef xdr;
|
||||||
|
xdr.category = GwXDRCategory::XDRTEMP;
|
||||||
|
xdr.direction = GwXDRMappingDef::M_FROM2K;
|
||||||
|
xdr.field = GWXDRFIELD_TEMPERATURE_ACTUALTEMPERATURE;
|
||||||
|
xdr.selector = (int)cfg.tmSrc;
|
||||||
|
xdr.instanceMode = GwXDRMappingDef::IS_SINGLE;
|
||||||
|
xdr.instanceId = cfg.iid;
|
||||||
|
xdr.xdrName = cfg.tmNam;
|
||||||
|
api->addXdrMapping(xdr);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class CFG>
|
||||||
|
bool addHumidXdr(GwApi *api, CFG &cfg, const String &prefix)
|
||||||
|
{
|
||||||
|
if (! cfg.huAct) return false;
|
||||||
|
if (cfg.huNam.isEmpty()){
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "humidity active for %s, no xdr mapping", prefix.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG, "adding humidity xdr mapping for %s", prefix.c_str());
|
||||||
|
GwXDRMappingDef xdr;
|
||||||
|
xdr.category = GwXDRCategory::XDRHUMIDITY;
|
||||||
|
xdr.direction = GwXDRMappingDef::M_FROM2K;
|
||||||
|
xdr.field = GWXDRFIELD_HUMIDITY_ACTUALHUMIDITY;
|
||||||
|
xdr.selector = (int)cfg.huSrc;
|
||||||
|
xdr.instanceMode = GwXDRMappingDef::IS_SINGLE;
|
||||||
|
xdr.instanceId = cfg.iid;
|
||||||
|
xdr.xdrName = cfg.huNam;
|
||||||
|
api->addXdrMapping(xdr);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void runIicTask(GwApi *api);
|
void runIicTask(GwApi *api);
|
||||||
|
|
||||||
void initIicTask(GwApi *api){
|
void initIicTask(GwApi *api){
|
||||||
|
@ -119,95 +182,24 @@ void initIicTask(GwApi *api){
|
||||||
api->addCapability("SHT3X","true");
|
api->addCapability("SHT3X","true");
|
||||||
LOG_DEBUG(GwLog::LOG,"SHT3X configured");
|
LOG_DEBUG(GwLog::LOG,"SHT3X configured");
|
||||||
SHT3XConfig sht3xConfig(api->getConfig());
|
SHT3XConfig sht3xConfig(api->getConfig());
|
||||||
if (sht3xConfig.huAct && ! sht3xConfig.huNam.isEmpty()){
|
addHumidXdr(api,sht3xConfig,"SHT3X");
|
||||||
LOG_DEBUG(GwLog::DEBUG,"SHT3X humidity measure active, adding capability and xdr mappings");
|
addTempXdr(api,sht3xConfig,"SHT3X");
|
||||||
//add XDR mapping for humidity
|
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRHUMIDITY;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.field=GWXDRFIELD_HUMIDITY_ACTUALHUMIDITY;
|
|
||||||
xdr.selector=(int)sht3xConfig.huSrc;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.instanceId=sht3xConfig.iid;
|
|
||||||
xdr.xdrName=sht3xConfig.huNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
if (sht3xConfig.tmAct && ! sht3xConfig.tmNam.isEmpty()){
|
|
||||||
LOG_DEBUG(GwLog::DEBUG,"SHT3X temperature measure active, adding capability and xdr mappings");
|
|
||||||
//add XDR mapping for humidity
|
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRTEMP;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.field=GWXDRFIELD_TEMPERATURE_ACTUALTEMPERATURE;
|
|
||||||
xdr.selector=(int)sht3xConfig.tmSrc;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.instanceId=sht3xConfig.iid;
|
|
||||||
xdr.xdrName=sht3xConfig.tmNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
if (sht3xConfig.tmAct || sht3xConfig.huAct) addTask=true;
|
if (sht3xConfig.tmAct || sht3xConfig.huAct) addTask=true;
|
||||||
#endif
|
#endif
|
||||||
#ifdef GWQMP6988
|
#ifdef GWQMP6988
|
||||||
api->addCapability("QMP6988","true");
|
api->addCapability("QMP6988","true");
|
||||||
|
LOG_DEBUG(GwLog::LOG,"QMP6988 configured");
|
||||||
QMP6988Config qmp6988Config(api->getConfig());
|
QMP6988Config qmp6988Config(api->getConfig());
|
||||||
if (qmp6988Config.prAct) {
|
addPressureXdr(api,qmp6988Config,"QMP6988");
|
||||||
LOG_DEBUG(GwLog::LOG,"QMP6988 configured, adding capability and xdr mappings");
|
|
||||||
addTask=true;
|
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRPRESSURE;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.selector=(int)qmp6988Config.source;
|
|
||||||
xdr.instanceId=qmp6988Config.iid;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.xdrName=qmp6988Config.prNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
LOG_DEBUG(GwLog::LOG,"QMP6988 configured but disabled");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef GWBME280
|
#ifdef GWBME280
|
||||||
api->addCapability("BME280","true");
|
api->addCapability("BME280","true");
|
||||||
|
LOG_DEBUG(GwLog::LOG,"BME280 configured");
|
||||||
BME280Config bme280Config(api->getConfig());
|
BME280Config bme280Config(api->getConfig());
|
||||||
bool bme280Active=false;
|
bool bme280Active=false;
|
||||||
if (bme280Config.prAct){
|
if (addPressureXdr(api,bme280Config,"BME280")) bme280Active=true;
|
||||||
LOG_DEBUG(GwLog::DEBUG,"BME280 pressure active, adding capability and xdr mapping");
|
if (addTempXdr(api,bme280Config,"BME280")) bme280Active=true;
|
||||||
bme280Active=true;
|
if (addHumidXdr(api,bme280Config,"BME280")) bme280Active=true;
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRPRESSURE;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.selector=(int)bme280Config.prSrc;
|
|
||||||
xdr.instanceId=bme280Config.iid;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.xdrName=bme280Config.prNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
if (bme280Config.tmAct){
|
|
||||||
LOG_DEBUG(GwLog::DEBUG,"BME280 temperature active, adding capability and xdr mapping");
|
|
||||||
bme280Active=true;
|
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRTEMP;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.field=GWXDRFIELD_TEMPERATURE_ACTUALTEMPERATURE;
|
|
||||||
xdr.selector=(int)bme280Config.tmSrc;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.instanceId=bme280Config.iid;
|
|
||||||
xdr.xdrName=bme280Config.tmNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
if (bme280Config.huAct){
|
|
||||||
LOG_DEBUG(GwLog::DEBUG,"BME280 humidity active, adding capability and xdr mapping");
|
|
||||||
bme280Active=true;
|
|
||||||
GwXDRMappingDef xdr;
|
|
||||||
xdr.category=GwXDRCategory::XDRHUMIDITY;
|
|
||||||
xdr.direction=GwXDRMappingDef::M_FROM2K;
|
|
||||||
xdr.field=GWXDRFIELD_HUMIDITY_ACTUALHUMIDITY;
|
|
||||||
xdr.selector=(int)bme280Config.huSrc;
|
|
||||||
xdr.instanceMode=GwXDRMappingDef::IS_SINGLE;
|
|
||||||
xdr.instanceId=bme280Config.iid;
|
|
||||||
xdr.xdrName=bme280Config.huNam;
|
|
||||||
api->addXdrMapping(xdr);
|
|
||||||
}
|
|
||||||
if (! bme280Active){
|
if (! bme280Active){
|
||||||
LOG_DEBUG(GwLog::DEBUG,"BME280 configured but disabled");
|
LOG_DEBUG(GwLog::DEBUG,"BME280 configured but disabled");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue