loop control commands and fixes for error disabling

This commit is contained in:
Wolfgang Hottgenroth
2017-01-05 00:07:07 +01:00
parent e7a6a84bbc
commit f44646bced
5 changed files with 43 additions and 27 deletions

View File

@ -176,7 +176,7 @@ void MeterBusMaster::sendBufferReady(uint16_t sendBufLen, uint8_t token, char *n
}
void MeterBusMaster::prepareResponse(bool err, uint8_t in) {
//Serial << "resp in, err: " << err << endl;
Serial << "resp in, err: " << err << endl;
static int16_t expectedChars = -1;
static uint8_t state = 0;
@ -187,6 +187,7 @@ void MeterBusMaster::prepareResponse(bool err, uint8_t in) {
uint8_t errorCode = 0;
if (m_disabled) {
errorCode = 2;
m_disableDelay = 0;
} else {
errorCode = 1;
m_disableDelay++;
@ -277,14 +278,14 @@ void MeterBusMaster::disableLoop() {
if (! m_loopIsDisabled) {
m_loopIsDisabled = true;
m_disableTime = millis();
digitalWrite(CURRENT_SHUTDOWN, CURRENT_OFF);
}
}
void MeterBusMaster::enableLoop() {
if (m_loopIsDisabled) {
m_loopIsDisabled = false;
digitalWrite(CURRENT_SHUTDOWN, CURRENT_ON);
}
}
@ -323,6 +324,7 @@ void MeterBusMaster::exec() {
disableLoop();
if (m_loopIsDisabled && ((millis() - m_disableTime) > DISABLE_TIMEOUT)) {
m_disabled = false;
enableLoop();
}
}