loop disable counter in stats

This commit is contained in:
Wolfgang Hottgenroth
2017-01-07 19:08:53 +01:00
parent d28908c735
commit 8cab7f8392
6 changed files with 26 additions and 19 deletions

View File

@ -122,15 +122,17 @@ void SendOctets::sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLe
out->println("");
}
void SendOctets::sendError(uint8_t code, uint16_t count, uint8_t token, char *name) {
void SendOctets::sendError(uint8_t code, uint16_t errorCount, uint16_t loopDisabledCount, uint8_t token, char *name) {
Print *out = m_server;
switch (code) {
case 1:
out->println("SO RESP: no resp.");
out->print("Code: ");
out->println(code);
out->print("Count: ");
out->println(count);
out->print("ErrorCount: ");
out->println(errorCount);
out->print("LoopDisabledCount: ");
out->println(loopDisabledCount);
break;
}
}
@ -146,7 +148,8 @@ MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this),
m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false),
m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_token(0),
m_responseCallback(0), m_sampling(true), m_calibration(false), m_errorCount(0),
m_disabled(false), m_loopIsDisabled(false), m_disableDelay(0), m_disableTime(0) {
m_disabled(false), m_loopIsDisabled(false), m_disableThreshold(0), m_disableTime(0),
m_loopDisabledCount(0) {
pinMode(RX_EN_PIN, OUTPUT);
digitalWrite(RX_EN_PIN, RX_DISABLE);
Serial3.begin(2400);
@ -187,20 +190,21 @@ void MeterBusMaster::prepareResponse(bool err, uint8_t in) {
uint8_t errorCode = 0;
if (m_disabled) {
errorCode = 2;
m_disableDelay = 0;
m_disableThreshold = 0;
} else {
errorCode = 1;
m_disableDelay++;
m_disableThreshold++;
}
if (! m_disabled && (m_disableDelay > DISABLE_DELAY)) {
if (! m_disabled && (m_disableThreshold > DISABLE_THRESHOLD)) {
m_disabled = true;
m_loopDisabledCount++;
}
//Serial << "r1" << endl;
if (m_responseCallback != 0) {
m_responseCallback->sendError(errorCode, m_errorCount, m_token, m_name);
m_responseCallback->sendError(errorCode, m_errorCount, m_loopDisabledCount, m_token, m_name);
}
expectedChars = 0;
state = 0;