better logging

This commit is contained in:
wellenvogel 2021-11-20 22:32:25 +01:00
parent aa47fbc9c1
commit 4d871bc121
3 changed files with 14 additions and 9 deletions

View File

@ -86,7 +86,7 @@ private:
mapping.type->xdrtype.c_str(), mapping.type->xdrtype.c_str(),
value, value,
mapping.type->xdrunit.c_str(), mapping.type->xdrunit.c_str(),
name); name.c_str());
buffer[39]=0; buffer[39]=0;
return String(buffer); return String(buffer);
} }

View File

@ -288,7 +288,7 @@ void GwXDRMappings::begin()
* select the best matching mapping * select the best matching mapping
* depending on the instance id * depending on the instance id
*/ */
GwXDRFoundMapping GwXDRMappings::selectMapping(GwXDRMapping::MappingList *list,int instance,unsigned long key){ GwXDRFoundMapping GwXDRMappings::selectMapping(GwXDRMapping::MappingList *list,int instance,const char * key){
GwXDRMapping *candidate=NULL; GwXDRMapping *candidate=NULL;
for (auto mit=list->begin();mit != list->end();mit++){ for (auto mit=list->begin();mit != list->end();mit++){
GwXDRMappingDef *def=(*mit)->definition; GwXDRMappingDef *def=(*mit)->definition;
@ -296,14 +296,15 @@ GwXDRFoundMapping GwXDRMappings::selectMapping(GwXDRMapping::MappingList *list,i
//otherwise we prefer a matching instance before we use auto/ignore //otherwise we prefer a matching instance before we use auto/ignore
if (instance < 0){ if (instance < 0){
if (def->instanceMode != GwXDRMappingDef::IS_IGNORE) continue; if (def->instanceMode != GwXDRMappingDef::IS_IGNORE) continue;
LOG_DEBUG(GwLog::DEBUG,"found mapping %s",def->toString().c_str()); LOG_DEBUG(GwLog::DEBUG,"selected mapping %s for %s",def->toString().c_str(),key);
return GwXDRFoundMapping(*mit); return GwXDRFoundMapping(*mit);
} }
else{ else{
switch(def->instanceMode){ switch(def->instanceMode){
case GwXDRMappingDef::IS_SINGLE: case GwXDRMappingDef::IS_SINGLE:
if (def->instanceId == instance){ if (def->instanceId == instance){
LOG_DEBUG(GwLog::DEBUG,"found mapping %s",def->toString().c_str()); LOG_DEBUG(GwLog::DEBUG,"selected mapping %s for %s, i=%d",
def->toString().c_str(),key,instance);
return GwXDRFoundMapping(*mit,instance); return GwXDRFoundMapping(*mit,instance);
} }
case GwXDRMappingDef::IS_AUTO: case GwXDRMappingDef::IS_AUTO:
@ -319,10 +320,11 @@ GwXDRFoundMapping GwXDRMappings::selectMapping(GwXDRMapping::MappingList *list,i
} }
} }
if (candidate != NULL){ if (candidate != NULL){
LOG_DEBUG(GwLog::DEBUG,"found mapping %s",candidate->definition->toString().c_str()); LOG_DEBUG(GwLog::DEBUG,"selected mapping %s for %s, i=%d",
candidate->definition->toString().c_str(),key,instance);
return GwXDRFoundMapping(candidate,instance); return GwXDRFoundMapping(candidate,instance);
} }
LOG_DEBUG(GwLog::DEBUG,"no instance mapping found for key=%lu, i=%d",key,instance); LOG_DEBUG(GwLog::DEBUG,"no instance mapping found for key=%s, i=%d",key,instance);
return GwXDRFoundMapping(); return GwXDRFoundMapping();
} }
GwXDRFoundMapping GwXDRMappings::getMapping(String xName,String xType,String xUnit){ GwXDRFoundMapping GwXDRMappings::getMapping(String xName,String xType,String xUnit){
@ -341,7 +343,7 @@ GwXDRFoundMapping GwXDRMappings::getMapping(String xName,String xType,String xUn
LOG_DEBUG(GwLog::DEBUG,"find n183mapping for %s,i=%d - nothing found",n183Key.c_str(),instance); LOG_DEBUG(GwLog::DEBUG,"find n183mapping for %s,i=%d - nothing found",n183Key.c_str(),instance);
return GwXDRFoundMapping(); return GwXDRFoundMapping();
} }
return selectMapping(&(it->second),instance); return selectMapping(&(it->second),instance,n183Key.c_str());
} }
GwXDRFoundMapping GwXDRMappings::getMapping(GwXDRCategory category,int selector,int field,int instance){ GwXDRFoundMapping GwXDRMappings::getMapping(GwXDRCategory category,int selector,int field,int instance){
unsigned long n2kKey=GwXDRMappingDef::n2kKey(category,selector,field); unsigned long n2kKey=GwXDRMappingDef::n2kKey(category,selector,field);
@ -352,7 +354,10 @@ GwXDRFoundMapping GwXDRMappings::getMapping(GwXDRCategory category,int selector,
addUnknown(category,selector,field,instance); addUnknown(category,selector,field,instance);
return GwXDRFoundMapping(); return GwXDRFoundMapping();
} }
GwXDRFoundMapping rt=selectMapping(&(it->second),instance); char kbuf[20];
snprintf(kbuf,19,"%lu",n2kKey);
kbuf[19]=0;
GwXDRFoundMapping rt=selectMapping(&(it->second),instance,kbuf);
if (rt.empty){ if (rt.empty){
addUnknown(category,selector,field,instance); addUnknown(category,selector,field,instance);
} }

View File

@ -166,7 +166,7 @@ class GwXDRMappings{
GwXDRMapping::N138Map n183Map; GwXDRMapping::N138Map n183Map;
GwXDRMapping::N2KMap n2kMap; GwXDRMapping::N2KMap n2kMap;
std::vector<unsigned long> unknown; std::vector<unsigned long> unknown;
GwXDRFoundMapping selectMapping(GwXDRMapping::MappingList *list,int instance); GwXDRFoundMapping selectMapping(GwXDRMapping::MappingList *list,int instance,const char * key);
bool addUnknown(GwXDRCategory category,int selector,int field=0,int instance=-1); bool addUnknown(GwXDRCategory category,int selector,int field=0,int instance=-1);
public: public:
GwXDRMappings(GwLog *logger,GwConfigHandler *config); GwXDRMappings(GwLog *logger,GwConfigHandler *config);