1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-13 05:53:06 +01:00

add info about conversions to UI, tweak layout

This commit is contained in:
andreas
2021-11-05 19:19:43 +01:00
parent 4572cafa23
commit fc57d73054
7 changed files with 99 additions and 9 deletions

View File

@@ -13,7 +13,8 @@ public:
typedef void (*LConverter)(const Msg &msg, T *);
private:
double dummy;
String keyList;
bool keyListFilled=false;
class ConverterEntry
{
public:
@@ -44,7 +45,7 @@ private:
typedef std::map<String, ConverterEntry> ConverterMap;
ConverterMap converters;
public:
public:
/**
* register a converter
* each of the converter functions must be registered in the constructor
@@ -54,70 +55,82 @@ public:
unsigned long *lpgn=new unsigned long[1]{pgn};
ConverterEntry e(1,lpgn, converter);
converters[String(pgn)] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, LConverter converter)
{
unsigned long *lpgn=new unsigned long[1]{pgn};
ConverterEntry e(1,lpgn, converter);
converters[String(pgn)] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, String sentence, Converter converter)
{
unsigned long *lpgn=new unsigned long[1]{pgn};
ConverterEntry e(1,lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, String sentence, LConverter converter)
{
unsigned long *lpgn=new unsigned long[1]{pgn};
ConverterEntry e(1,lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(int num,unsigned long *lpgn, String sentence, Converter converter)
{
ConverterEntry e(num,lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(int num,unsigned long *lpgn, String sentence, LConverter converter)
{
ConverterEntry e(num,lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, String sentence, Converter converter)
{
unsigned long *lpgn=new unsigned long[2]{pgn,pgn2};
ConverterEntry e(2, lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, String sentence, LConverter converter)
{
unsigned long *lpgn=new unsigned long[2]{pgn,pgn2};
ConverterEntry e(2, lpgn, converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, unsigned long pgn3,String sentence, Converter converter)
{
unsigned long *lpgn=new unsigned long[3]{pgn,pgn2,pgn3};
ConverterEntry e(3, lpgn,converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, unsigned long pgn3,String sentence, LConverter converter)
{
unsigned long *lpgn=new unsigned long[3]{pgn,pgn2,pgn3};
ConverterEntry e(3, lpgn,converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, unsigned long pgn3,unsigned long pgn4,String sentence, Converter converter)
{
unsigned long *lpgn=new unsigned long[4]{pgn,pgn2,pgn3,pgn4};
ConverterEntry e(4, lpgn,converter);
converters[sentence] = e;
keyListFilled=false;
}
void registerConverter(unsigned long pgn, unsigned long pgn2, unsigned long pgn3,unsigned long pgn4,String sentence, LConverter converter)
{
unsigned long *lpgn=new unsigned long[4]{pgn,pgn2,pgn3,pgn4};
ConverterEntry e(4, lpgn,converter);
converters[sentence] = e;
keyListFilled=false;
}
bool handleMessage(String code, const Msg &msg, T *base)
@@ -182,5 +195,18 @@ public:
json[prefix][String(it->first)] = it->second.count;
}
}
String handledKeys(){
if (! keyListFilled){
keyList=String();
bool first=true;
for (auto it=converters.begin();it != converters.end();it++){
if (! first) keyList.concat(',');
first=false;
keyList.concat(it->first);
}
keyListFilled=true;
}
return keyList;
}
};
#endif

View File

@@ -402,6 +402,9 @@ public:
virtual int numConverters(){
return converters.numConverters();
}
virtual String handledKeys(){
return converters.handledKeys();
}
NMEA0183DataToN2KFunctions(GwLog *logger, GwBoatData *boatData, N2kSender callback)
: NMEA0183DataToN2K(logger, boatData, callback)

View File

@@ -16,6 +16,7 @@ class NMEA0183DataToN2K{
virtual bool parseAndSend(const char *buffer, int sourceId);
virtual unsigned long *handledPgns()=0;
virtual int numConverters()=0;
virtual String handledKeys()=0;
static NMEA0183DataToN2K* create(GwLog *logger,GwBoatData *boatData,N2kSender callback);
};
#endif

View File

@@ -92,6 +92,9 @@ private:
logger->logString("CONV: # %d handled PGNS", converters.numConverters());
return converters.handledPgns();
}
virtual String handledKeys(){
return converters.handledKeys();
}
virtual void HandleMsg(const tN2kMsg &N2kMsg)
{
String key=String(N2kMsg.PGN);

View File

@@ -51,5 +51,6 @@ public:
virtual unsigned long* handledPgns()=0;
virtual int numPgns()=0;
virtual void toJson(JsonDocument &json)=0;
virtual String handledKeys()=0;
};
#endif