add command, argument evaluation

This commit is contained in:
hg
2015-05-13 17:37:05 +02:00
parent fe3f5d4b84
commit b27f964e20
2 changed files with 40 additions and 4 deletions

View File

@ -68,9 +68,42 @@ String MqttConfig::exec(String params) {
} }
} else if (params.startsWith("add ")) { } else if (params.startsWith("add ")) {
// add an mbus client, params: token address period // add an mbus client, params: token address period
char paramBuf[64];
char *paramPtr;
strncpy(paramBuf, params.c_str(), sizeof(paramBuf));
paramPtr = paramBuf;
char *tokenStr = 0;
char *addressStr = 0;
char *periodStr = 0;
if ((paramPtr != 0) && (*paramPtr != 0)){
// command
strsep(&paramPtr, " ");
}
if ((paramPtr != 0) && (*paramPtr != 0)){
tokenStr = strsep(&paramPtr, " ");
}
if ((paramPtr != 0) && (*paramPtr != 0)){
addressStr = strsep(&paramPtr, " ");
}
if ((paramPtr != 0) && (*paramPtr != 0)){
periodStr = strsep(&paramPtr, " ");
}
if ((tokenStr != 0) && (*tokenStr != 0) &&
(addressStr != 0) && (*addressStr != 0) &&
(periodStr != 0) && (*periodStr != 0)) {
*out << "Token: " << tokenStr << endl;
*out << "Address: " << addressStr << endl;
*out << "Period: " << periodStr << endl;
configWrite(CONFIG_DEVICES, sizeof(mc->m_mbusDevTuple), (char*)mc->m_mbusDevTuple);
res = "done"; res = "done";
} else {
*out << "not enough arguments" << endl;
res = "failure";
}
// configWrite(CONFIG_DEVICES, sizeof(mc->m_mbusDevTuple), (char*)mc->m_mbusDevTuple);
} else if (params.startsWith("del ")) { } else if (params.startsWith("del ")) {
// delete an mbus client, params: index // delete an mbus client, params: index
int space = params.indexOf(' '); int space = params.indexOf(' ');

View File

@ -32,7 +32,7 @@ static MqttClient mqttClient(&meterBusMaster);
static OverCurrentProt overCurrentProt; static OverCurrentProt overCurrentProt;
Metro wdogTick = Metro(1000); Metro wdogTick = Metro(1000);
Metro dhcpTick = Metro(5* 60 * 1000); Metro dhcpTick = Metro(60 * 1000);
extern "C" { extern "C" {
void startup_early_hook( ) __attribute__ ((weak)); void startup_early_hook( ) __attribute__ ((weak));
@ -84,6 +84,8 @@ void setup() {
} }
void loop() { void loop() {
static uint16_t maxTmroutl = 0;
// watchdog refresh // watchdog refresh
cli(); cli();
WDOG_REFRESH = 0xa602; WDOG_REFRESH = 0xa602;
@ -94,9 +96,10 @@ void loop() {
if (wdogTick.check() == 1) { if (wdogTick.check() == 1) {
uint16_t h = WDOG_TMROUTH; uint16_t h = WDOG_TMROUTH;
uint16_t l = WDOG_TMROUTL; uint16_t l = WDOG_TMROUTL;
maxTmroutl = (maxTmroutl > l) ? maxTmroutl : l;
uint16_t c = WDOG_RSTCNT; uint16_t c = WDOG_RSTCNT;
Serial << "WDog, h: " << _HEX(h) << ", l: " << _HEX(l) << ", c: " << _HEX(c) << endl; Serial << "WDog, h: " << _HEX(h) << ", l: " << _HEX(l) << ", c: " << _HEX(c) << ", m: " << _HEX(maxTmroutl) << endl;
} }
if (dhcpTick.check() == 1) { if (dhcpTick.check() == 1) {