CFG_INIT for initial cfg values
This commit is contained in:
parent
101d551f93
commit
8641f0efd9
|
@ -185,34 +185,13 @@ def generateCfg(inFile,outFile,impl):
|
||||||
name=item.get('name')
|
name=item.get('name')
|
||||||
if name is None:
|
if name is None:
|
||||||
continue
|
continue
|
||||||
data+=' configs[%d]=\n'%(idx)
|
data+=' configs[%d]='%(idx)
|
||||||
idx+=1
|
idx+=1
|
||||||
secret="false";
|
secret="false";
|
||||||
if item.get('type') == 'password':
|
if item.get('type') == 'password':
|
||||||
secret="true"
|
secret="true"
|
||||||
data+=" #undef __CFGMODE\n"
|
data+=" new GwConfigInterface(%s,\"%s\",%s);\n"%(name,item.get('default'),secret)
|
||||||
data+=" #ifdef CFGMODE_%s\n"%(name)
|
|
||||||
data+=" #define __CFGMODE CFGMODE_%s\n"%(name)
|
|
||||||
data+=" #else\n"
|
|
||||||
data+=" #define __CFGMODE GwConfigInterface::NORMAL\n"
|
|
||||||
data+=" #endif\n"
|
|
||||||
data+=" #ifdef CFGDEFAULT_%s\n"%(name)
|
|
||||||
data+=" new GwConfigInterface(%s,CFGDEFAULT_%s,%s,__CFGMODE)\n"%(name,name,secret)
|
|
||||||
data+=" #else\n"
|
|
||||||
data+=" new GwConfigInterface(%s,\"%s\",%s,__CFGMODE)\n"%(name,item.get('default'),secret)
|
|
||||||
data+=" #endif\n"
|
|
||||||
data+=";\n"
|
|
||||||
data+='}\n'
|
data+='}\n'
|
||||||
for item in config:
|
|
||||||
name=item.get('name')
|
|
||||||
if name is None:
|
|
||||||
continue
|
|
||||||
data+="#ifdef CFGMODE_%s\n"%(name)
|
|
||||||
data+=" __MSG(\"CFGMODE_%s=\" __XSTR(CFGMODE_%s))\n"%(name,name)
|
|
||||||
data+="#endif\n"
|
|
||||||
data+="#ifdef CFGDEFAULT_%s\n"%(name)
|
|
||||||
data+=" __MSG(\"CFGDEFAULT_%s=\" CFGDEFAULT_%s)\n"%(name,name)
|
|
||||||
data+="#endif\n"
|
|
||||||
writeFileIfChanged(outFile,data)
|
writeFileIfChanged(outFile,data)
|
||||||
|
|
||||||
def labelFilter(label):
|
def labelFilter(label):
|
||||||
|
|
|
@ -4,6 +4,19 @@
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <MD5Builder.h>
|
#include <MD5Builder.h>
|
||||||
|
using CfgInit=std::function<void(GwConfigHandler *)>;
|
||||||
|
static std::vector<CfgInit> cfgInits;
|
||||||
|
class CfgInitializer{
|
||||||
|
public:
|
||||||
|
CfgInitializer(CfgInit f){
|
||||||
|
cfgInits.push_back(f);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#define CFG_INIT(name,value,mode) \
|
||||||
|
__MSG("config set " #name " " #value " " #mode); \
|
||||||
|
static CfgInitializer _ ## name ## _init([](GwConfigHandler *cfg){ \
|
||||||
|
cfg->setValue(GwConfigDefinitions::name,value,GwConfigInterface::mode); \
|
||||||
|
});
|
||||||
#include "GwHardware.h"
|
#include "GwHardware.h"
|
||||||
#include "GwConfigDefImpl.h"
|
#include "GwConfigDefImpl.h"
|
||||||
|
|
||||||
|
@ -61,6 +74,9 @@ GwConfigHandler::GwConfigHandler(GwLog *logger): GwConfigDefinitions(){
|
||||||
saltBase=esp_random();
|
saltBase=esp_random();
|
||||||
configs=new GwConfigInterface*[getNumConfig()];
|
configs=new GwConfigInterface*[getNumConfig()];
|
||||||
populateConfigs(configs);
|
populateConfigs(configs);
|
||||||
|
for (auto &&init:cfgInits){
|
||||||
|
init(this);
|
||||||
|
}
|
||||||
prefs=new Preferences();
|
prefs=new Preferences();
|
||||||
}
|
}
|
||||||
GwConfigHandler::~GwConfigHandler(){
|
GwConfigHandler::~GwConfigHandler(){
|
||||||
|
@ -126,11 +142,16 @@ void GwConfigHandler::stopChanges(){
|
||||||
allowChanges=false;
|
allowChanges=false;
|
||||||
}
|
}
|
||||||
bool GwConfigHandler::setValue(String name,String value, bool hide){
|
bool GwConfigHandler::setValue(String name,String value, bool hide){
|
||||||
|
return setValue(name,value,hide?GwConfigInterface::HIDDEN:GwConfigInterface::READONLY);
|
||||||
|
}
|
||||||
|
bool GwConfigHandler::setValue(String name, String value, GwConfigInterface::ConfigType type){
|
||||||
if (! allowChanges) return false;
|
if (! allowChanges) return false;
|
||||||
|
LOG_DEBUG(GwLog::LOG,"setValue for %s to %s, mode %d",
|
||||||
|
name.c_str(),value.c_str(),(int)type);
|
||||||
GwConfigInterface *i=getConfigItem(name,false);
|
GwConfigInterface *i=getConfigItem(name,false);
|
||||||
if (!i) return false;
|
if (!i) return false;
|
||||||
i->value=value;
|
i->value=value;
|
||||||
i->type=hide?GwConfigInterface::HIDDEN:GwConfigInterface::READONLY;
|
i->type=type;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ class GwConfigHandler: public GwConfigDefinitions{
|
||||||
* !use with care! no checks of the value
|
* !use with care! no checks of the value
|
||||||
*/
|
*/
|
||||||
bool setValue(String name, String value, bool hide=false);
|
bool setValue(String name, String value, bool hide=false);
|
||||||
|
bool setValue(String name, String value, GwConfigInterface::ConfigType type);
|
||||||
static void toHex(unsigned long v,char *buffer,size_t bsize);
|
static void toHex(unsigned long v,char *buffer,size_t bsize);
|
||||||
unsigned long getSaltBase(){return saltBase;}
|
unsigned long getSaltBase(){return saltBase;}
|
||||||
~GwConfigHandler();
|
~GwConfigHandler();
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
#include <HardwareSerial.h>
|
#include <HardwareSerial.h>
|
||||||
#include "GwAppInfo.h"
|
#include "GwAppInfo.h"
|
||||||
#include "GwUserTasks.h"
|
#include "GwUserTasks.h"
|
||||||
|
#ifndef CFG_INIT
|
||||||
|
#define CFG_INIT(name,value,mode)
|
||||||
|
#endif
|
||||||
|
|
||||||
//general definitions for M5AtomLite
|
//general definitions for M5AtomLite
|
||||||
//hint for groove pins:
|
//hint for groove pins:
|
||||||
|
@ -162,7 +165,7 @@
|
||||||
#define GWSERIAL_RX BOARD_LEFT1
|
#define GWSERIAL_RX BOARD_LEFT1
|
||||||
#define GWSERIAL_TYPE GWSERIAL_TYPE_UNI
|
#define GWSERIAL_TYPE GWSERIAL_TYPE_UNI
|
||||||
#endif
|
#endif
|
||||||
|
CFG_INIT(serialBaud,"9600",READONLY)
|
||||||
//M5 GPS (Atomic GPS Base)
|
//M5 GPS (Atomic GPS Base)
|
||||||
#ifdef M5_GPS_KIT
|
#ifdef M5_GPS_KIT
|
||||||
#ifdef _GWM5_BOARD
|
#ifdef _GWM5_BOARD
|
||||||
|
@ -171,12 +174,15 @@
|
||||||
#define _GWM5_BOARD
|
#define _GWM5_BOARD
|
||||||
#define GWSERIAL_RX BOARD_LEFT1
|
#define GWSERIAL_RX BOARD_LEFT1
|
||||||
#define GWSERIAL_TYPE GWSERIAL_TYPE_RX
|
#define GWSERIAL_TYPE GWSERIAL_TYPE_RX
|
||||||
#define CFGDEFAULT_serialBaud "9600"
|
CFG_INIT(serialBaud,"9600",READONLY)
|
||||||
#define CFGMODE_serialBaud GwConfigInterface::READONLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//M5 ProtoHub
|
//M5 ProtoHub
|
||||||
#ifdef M5_PROTO_HUB
|
#ifdef M5_PROTO_HUB
|
||||||
|
#ifdef _GWM5_BOARD
|
||||||
|
#error "can only define one M5 base"
|
||||||
|
#endif
|
||||||
|
#define _GWM5_BOARD
|
||||||
#define PPIN22 BOARD_LEFT1
|
#define PPIN22 BOARD_LEFT1
|
||||||
#define PPIN19 BOARD_LEFT2
|
#define PPIN19 BOARD_LEFT2
|
||||||
#define PPIN23 BOARD_LEFT3
|
#define PPIN23 BOARD_LEFT3
|
||||||
|
@ -185,6 +191,20 @@
|
||||||
#define PPIN25 BOARD_RIGHT2
|
#define PPIN25 BOARD_RIGHT2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//M5 PortABC extension
|
||||||
|
#ifdef M5_PORTABC
|
||||||
|
#ifdef _GWM5_BOARD
|
||||||
|
#error "can only define one M5 base"
|
||||||
|
#endif
|
||||||
|
#define _GWM5_BOARD
|
||||||
|
#define ABC_PAYELLOW BOARD_RIGHT2
|
||||||
|
#define ABC_PAWHITE BOARD_RIGHT1
|
||||||
|
#define ABC_PBYELLOW BOARD_LEFT3
|
||||||
|
#define ABC_PBWHITE BOARD_LEFT4
|
||||||
|
#define ABC_PCYELLOW BOARD_LEFT1
|
||||||
|
#define ABC_PCWHITE BOARD_LEFT2
|
||||||
|
#endif
|
||||||
|
|
||||||
//below we define the final device config based on the above
|
//below we define the final device config based on the above
|
||||||
//boards and peripherals
|
//boards and peripherals
|
||||||
//this allows us to easily also set them from outside
|
//this allows us to easily also set them from outside
|
||||||
|
@ -228,13 +248,11 @@
|
||||||
#ifdef GWSERIAL_TYPE
|
#ifdef GWSERIAL_TYPE
|
||||||
#define GWSERIAL2_RX GROOVE_PIN_1
|
#define GWSERIAL2_RX GROOVE_PIN_1
|
||||||
#define GWSERIAL2_TYPE GWSERIAL_TYPE_RX
|
#define GWSERIAL2_TYPE GWSERIAL_TYPE_RX
|
||||||
#define CFGDEFAULT_serialBaud "9600"
|
CFG_INIT(serialBaud,"9600",READONLY)
|
||||||
#define CFGMODE_serialBaud GwConfigInterface::READONLY
|
|
||||||
#else
|
#else
|
||||||
#define GWSERIAL_RX GROOVE_PIN_1
|
#define GWSERIAL_RX GROOVE_PIN_1
|
||||||
#define GWSERIAL_TYPE GWSERIAL_TYPE_RX
|
#define GWSERIAL_TYPE GWSERIAL_TYPE_RX
|
||||||
#define CFGDEFAULT_serial2Baud "9600"
|
CFG_INIT(serial2Baud,"9600",READONLY)
|
||||||
#define CFGMODE_serial2Baud GwConfigInterface::READONLY
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -332,12 +350,13 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GWLED_FASTLED
|
#ifdef GWLED_FASTLED
|
||||||
#define CFGMODE_ledBrightness GwConfigInterface::NORMAL
|
|
||||||
#ifdef GWLED_BRIGHTNESS
|
#ifdef GWLED_BRIGHTNESS
|
||||||
#define CFGDEFAULT_ledBrightness GWSTRINGIFY(GWLED_BRIGHTNESS)
|
CFG_INIT(ledBrightness,GWSTRINGIFY(GWLED_BRIGHTNESS),NORMAL)
|
||||||
|
#else
|
||||||
|
CFG_INIT(ledBrightness,"64",NORMAL)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define CFGMODE_ledBrightness GwConfigInterface::HIDDEN
|
CFG_INIT(ledBrightness,"64",HIDDEN)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue