response delay
This commit is contained in:
@ -187,7 +187,8 @@ void MeterBusClient::handleFrame() {
|
|||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
STATE_START, STATE_IDLE, STATE_SHORT_FRAME, STATE_LONG_CTRL_FRAME, STATE_HANDLE, STATE_INVALID, STATE_DONE
|
STATE_START, STATE_IDLE, STATE_SHORT_FRAME, STATE_LONG_CTRL_FRAME, STATE_HANDLE, STATE_INVALID, STATE_DONE,
|
||||||
|
STATE_DELAYED_HANDLE, STATE_DELAY
|
||||||
} e_meterBusClientState;
|
} e_meterBusClientState;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -200,6 +201,7 @@ void MeterBusClient::exec() {
|
|||||||
static e_meterBusClientState state = STATE_IDLE;
|
static e_meterBusClientState state = STATE_IDLE;
|
||||||
static e_meterBusClientSubState subState = SUBSTATE_LENGTH;
|
static e_meterBusClientSubState subState = SUBSTATE_LENGTH;
|
||||||
static unsigned char userDataCnt = 0;
|
static unsigned char userDataCnt = 0;
|
||||||
|
static unsigned long receivedDoneTimestamp;
|
||||||
|
|
||||||
int chi = Serial3.read();
|
int chi = Serial3.read();
|
||||||
char ch = (char) chi;
|
char ch = (char) chi;
|
||||||
@ -315,6 +317,17 @@ void MeterBusClient::exec() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_HANDLE:
|
case STATE_HANDLE:
|
||||||
|
state = STATE_DELAY;
|
||||||
|
receivedDoneTimestamp = millis();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STATE_DELAY:
|
||||||
|
if ((receivedDoneTimestamp + RESPONSE_DELAY) < millis()) {
|
||||||
|
state = STATE_DELAYED_HANDLE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STATE_DELAYED_HANDLE:
|
||||||
if (m_frame.valid) {
|
if (m_frame.valid) {
|
||||||
handleFrame();
|
handleFrame();
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
#include "Resources.h"
|
#include "Resources.h"
|
||||||
#include "Thermometer.h"
|
#include "Thermometer.h"
|
||||||
|
|
||||||
|
|
||||||
|
const unsigned long RESPONSE_DELAY = 50;
|
||||||
|
|
||||||
|
|
||||||
class MeterBusClient;
|
class MeterBusClient;
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user