From 28ae7d3bbdf9072afd67e8b2e6c80970d558260b Mon Sep 17 00:00:00 2001 From: andreas Date: Fri, 3 Nov 2023 18:58:39 +0100 Subject: [PATCH] avoid multiple logs, test multi sensor config --- lib/iictask/GwBME280.cpp | 30 ++++++++++++++++++++---------- lib/iictask/GwIicSensors.h | 1 + lib/iictask/GwQMP6988.cpp | 24 ++++++++++++------------ lib/iictask/GwSHT3X.cpp | 29 +++++++++++++++++------------ lib/iictask/platformio.ini | 13 +++++++++++++ 5 files changed, 63 insertions(+), 34 deletions(-) diff --git a/lib/iictask/GwBME280.cpp b/lib/iictask/GwBME280.cpp index ca8121b..7ed27ac 100644 --- a/lib/iictask/GwBME280.cpp +++ b/lib/iictask/GwBME280.cpp @@ -17,6 +17,10 @@ #include #endif #ifdef _GWBME280 +#define PRFX1 "BME2801" +#define PRFX2 "BME2802" +#define PRFX3 "BME2803" +#define PRFX4 "BME2804" class BME280Config : public SensorBase{ public: bool prAct=true; @@ -88,7 +92,7 @@ class BME280Config : public SensorBase{ } virtual void readConfig(GwConfigHandler *cfg) override { - if (prefix == "BME2801") + if (prefix == PRFX1) { busId = 1; addr = 0x76; @@ -108,7 +112,7 @@ class BME280Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "BME2802") + if (prefix == PRFX2) { busId = 1; addr = 0x77; @@ -128,7 +132,7 @@ class BME280Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "BME2803") + if (prefix == PRFX3) { busId = 2; addr = 0x76; @@ -148,7 +152,7 @@ class BME280Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "BME2804") + if (prefix == PRFX4) { busId = 1; addr = 0x77; @@ -173,23 +177,29 @@ class BME280Config : public SensorBase{ }; void registerBME280(GwApi *api,SensorList &sensors){ - GwLog *logger=api->getLogger(); #if defined(GWBME280) || defined(GWBME2801) - BME280Config *cfg=new BME280Config(api,"BME2801"); + { + BME280Config *cfg=new BME280Config(api,PRFX1); sensors.add(api,cfg); - LOG_DEBUG(GwLog::LOG,"%s configured %d",cfg->prefix.c_str(),(int)cfg->ok); + } #endif #if defined(GWBME2802) - BME280Config *cfg=new BME280Config(api,"BME2802"); + { + BME280Config *cfg=new BME280Config(api,PRFX2); sensors.add(api,cfg); + } #endif #if defined(GWBME2803) - BME280Config *cfg=new BME280Config(api,"BME2803"); + { + BME280Config *cfg=new BME280Config(api,PRFX3); sensors.add(api,cfg); + } #endif #if defined(GWBME2804) - BME280Config *cfg=new BME280Config(api,"BME2804"); + { + BME280Config *cfg=new BME280Config(api,PRFX4); sensors.add(api,cfg); + } #endif } #else diff --git a/lib/iictask/GwIicSensors.h b/lib/iictask/GwIicSensors.h index da94727..30068e6 100644 --- a/lib/iictask/GwIicSensors.h +++ b/lib/iictask/GwIicSensors.h @@ -120,6 +120,7 @@ class SensorList : public std::vector{ public: void add(GwApi *api, SensorBase *sensor){ sensor->readConfig(api->getConfig()); + api->getLogger()->logDebug(GwLog::LOG,"configured sensor %s, status %d",sensor->prefix.c_str(),(int)sensor->ok); push_back(sensor); } using std::vector::vector; diff --git a/lib/iictask/GwQMP6988.cpp b/lib/iictask/GwQMP6988.cpp index 0ec3823..1707a1e 100644 --- a/lib/iictask/GwQMP6988.cpp +++ b/lib/iictask/GwQMP6988.cpp @@ -17,6 +17,10 @@ #include "QMP6988.h" #endif #ifdef _GWQMP6988 +#define PRFX1 "QMP69881" +#define PRFX2 "QMP69882" +#define PRFX3 "QMP69883" +#define PRFX4 "QMP69884" class QMP6988Config : public SensorBase{ public: String prNam="Pressure"; @@ -54,7 +58,7 @@ class QMP6988Config : public SensorBase{ sendN2kPressure(api,*this,computed,counterId); } virtual void readConfig(GwConfigHandler *cfg){ - if (prefix == "QMP69881"){ + if (prefix == PRFX1){ busId=1; addr=86; #undef CG @@ -66,7 +70,7 @@ class QMP6988Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "QMP69882"){ + if (prefix == PRFX2){ busId=1; addr=112; #undef CG @@ -78,7 +82,7 @@ class QMP6988Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "QMP69883"){ + if (prefix == PRFX3){ busId=2; addr=86; #undef CG @@ -90,7 +94,7 @@ class QMP6988Config : public SensorBase{ CG(prOff); ok=true; } - if (prefix == "QMP69884"){ + if (prefix == PRFX4){ busId=2; addr=112; #undef CG @@ -110,29 +114,25 @@ void registerQMP6988(GwApi *api,SensorList &sensors){ GwLog *logger=api->getLogger(); #if defined(GWQMP6988) || defined(GWQMP69881) { - QMP6988Config *scfg=new QMP6988Config(api,"QMP69881"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + QMP6988Config *scfg=new QMP6988Config(api,PRFX1); sensors.add(api,scfg); } #endif #if defined(GWQMP69882) { - QMP6988Config *scfg=new QMP6988Config(api,"QMP69882"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + QMP6988Config *scfg=new QMP6988Config(api,PRFX2); sensors.add(api,scfg); } #endif #if defined(GWQMP69883) { - QMP6988Config *scfg=new QMP6988Config(api,"QMP69883"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + QMP6988Config *scfg=new QMP6988Config(api,PRFX3); sensors.add(api,scfg); } #endif #if defined(GWQMP69884) { - QMP6988Config *scfg=new QMP6988Config(api,"QMP69884"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + QMP6988Config *scfg=new QMP6988Config(api,PRFX4); sensors.add(api,scfg); } #endif diff --git a/lib/iictask/GwSHT3X.cpp b/lib/iictask/GwSHT3X.cpp index b396084..378352a 100644 --- a/lib/iictask/GwSHT3X.cpp +++ b/lib/iictask/GwSHT3X.cpp @@ -18,6 +18,10 @@ #endif #ifdef _GWSHT3X +#define PRFX1 "SHT3X1" +#define PRFX2 "SHT3X2" +#define PRFX3 "SHT3X3" +#define PRFX4 "SHT3X4" class SHT3XConfig : public SensorBase{ public: String tmNam; @@ -74,8 +78,13 @@ class SHT3XConfig : public SensorBase{ LOG_DEBUG(GwLog::DEBUG, "unable to query SHT3X: %d", rt); } } + /** + * we do not dynamically compute the config names + * just to get compile time errors if something does not fit + * correctly + */ virtual void readConfig(GwConfigHandler *cfg){ - if (prefix == "SHT3X1"){ + if (prefix == PRFX1){ busId=1; addr=0x44; #undef CG @@ -90,7 +99,7 @@ class SHT3XConfig : public SensorBase{ CG(tmSrc); ok=true; } - if (prefix == "SHT3X2"){ + if (prefix == PRFX2){ busId=1; addr=0x45; #undef CG @@ -105,7 +114,7 @@ class SHT3XConfig : public SensorBase{ CG(tmSrc); ok=true; } - if (prefix == "SHT3X3"){ + if (prefix == PRFX3){ busId=2; addr=0x44; #undef CG @@ -120,7 +129,7 @@ class SHT3XConfig : public SensorBase{ CG(tmSrc); ok=true; } - if (prefix == "SHT3X4"){ + if (prefix == PRFX4){ busId=2; addr=0x45; #undef CG @@ -142,29 +151,25 @@ void registerSHT3X(GwApi *api,SensorList &sensors){ GwLog *logger=api->getLogger(); #if defined(GWSHT3X) || defined (GWSHT3X1) { - SHT3XConfig *scfg=new SHT3XConfig(api,"SHT3X1"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + SHT3XConfig *scfg=new SHT3XConfig(api,PRFX1); sensors.add(api,scfg); } #endif #if defined(GWSHT3X2) { - SHT3XConfig *scfg=new SHT3XConfig(api,"SHT3X2"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + SHT3XConfig *scfg=new SHT3XConfig(api,PRFX2); sensors.add(api,scfg); } #endif #if defined(GWSHT3X3) { - SHT3XConfig *scfg=new SHT3XConfig(api,"SHT3X3"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + SHT3XConfig *scfg=new SHT3XConfig(api,PRFX3); sensors.add(api,scfg); } #endif #if defined(GWSHT3X4) { - SHT3XConfig *scfg=new SHT3XConfig(api,"SHT3X4"); - LOG_DEBUG(GwLog::LOG,"%s configured",scfg->prefix.c_str()); + SHT3XConfig *scfg=new SHT3XConfig(api,PRFX4); sensors.add(api,scfg); } #endif diff --git a/lib/iictask/platformio.ini b/lib/iictask/platformio.ini index aed6306..db82892 100644 --- a/lib/iictask/platformio.ini +++ b/lib/iictask/platformio.ini @@ -22,3 +22,16 @@ build_flags= -D M5_GROOVEIIC -D M5_CAN_KIT ${env.build_flags} + +[env:m5stack-atom-bme2802] +extends = sensors +board = m5stack-atom +lib_deps = + ${env.lib_deps} + ${sensors.lib_deps} +build_flags= + -D GWBME280 + -D GWBME2802 + -D M5_GROOVEIIC + -D M5_CAN_KIT + ${env.build_flags}