remove failchecks for controller power

This commit is contained in:
interfisch 2019-12-13 00:26:14 +01:00
parent 64d03939d0
commit baec50d4b6
1 changed files with 2 additions and 75 deletions

View File

@ -76,8 +76,7 @@ long last_send = 0;
boolean board1Enabled=false;
boolean board2Enabled=false;
#define EXPECT_FEEDBACK_ABOVE_SPEED 250 //for error checking
#define SERIALACTIVECHECKTIME 3000 //time to say a board is online/active when last message received in the last x ms
// Global variables for serial communication
uint8_t idx1 = 0; // Index for new data pointer
@ -86,8 +85,6 @@ byte *p1; // Pointer declaration for the new rece
byte incomingByte1;
byte incomingBytePrev1;
long lastValidDataSerial1_time;
long lastSendSerial1expectFeedback; //to check time difference between last >0 speed send and last received feedback
long lastBoard1PowerChange;
//Same for Serial2
uint8_t idx2 = 0; // Index for new data pointer
@ -96,8 +93,6 @@ byte *p2; // Pointer declaration for the new rece
byte incomingByte2;
byte incomingBytePrev2;
long lastValidDataSerial2_time;
long lastSendSerial2expectFeedback; //to check time difference between last >0 speed send and last received feedback
long lastBoard2PowerChange;
typedef struct{
uint16_t start;
@ -209,13 +204,6 @@ void loop() {
}
}
//for lastValidSerialData calculation
if (abs(out_speedRL)>EXPECT_FEEDBACK_ABOVE_SPEED || abs(out_speedRR)>EXPECT_FEEDBACK_ABOVE_SPEED) { //Rear is serial 1
lastSendSerial1expectFeedback=loopmillis;
}
if (abs(out_speedFL)>EXPECT_FEEDBACK_ABOVE_SPEED || abs(out_speedFR)>EXPECT_FEEDBACK_ABOVE_SPEED) { //Front is serial 2
lastSendSerial2expectFeedback=loopmillis;
}
if (currentmode!=error) { //keep last errormessage
@ -367,21 +355,11 @@ void handleModeChange() {
state_modechange++;
board1Enabled=true; //assume board is online
board2Enabled=true; //assume board is online
lastBoard1PowerChange=loopmillis;
lastBoard2PowerChange=loopmillis;
lastSendSerial1expectFeedback=loopmillis; //expect maybe feedback on power on
lastSendSerial2expectFeedback=loopmillis;
lastValidDataSerial1_time=loopmillis; //assume a feedback was received (boards do not send feedback on poweron)
lastValidDataSerial2_time=loopmillis; //assume a feedback was received (boards do not send feedback on poweron)
// ### Request Idle or Off (both power boards off) ###
}else if(requestmode==idle || requestmode==off) {
state_modechange++;
board1Enabled=false; //assume board is offline
board2Enabled=false; //assume board is offline
lastBoard1PowerChange=loopmillis;
lastBoard2PowerChange=loopmillis;
lastSendSerial1expectFeedback=loopmillis; //expect maybe feedback on power on
lastSendSerial2expectFeedback=loopmillis;
}else{ //if changed off from error mode
state_modechange++;
}
@ -411,30 +389,6 @@ void handleModeChange() {
}
boolean serial1Active() {
if (loopmillis-lastBoard1PowerChange<=SERIALACTIVECHECKTIME) {
return board1Enabled; //unclear if mcu just started or board is just starting up. reply with exprected answer
}
if (lastValidDataSerial1_time==0 && lastSendSerial1expectFeedback==0) { //no valid data received and send ever
return false;
}
if (loopmillis-lastSendSerial1expectFeedback <= SERIALACTIVECHECKTIME){ //enough time passed since last exprected feedback
return board1Enabled; //unclear, return exprected value
}
return loopmillis-lastValidDataSerial1_time < SERIALACTIVECHECKTIME;
}
boolean serial2Active() {
if (loopmillis-lastBoard2PowerChange<=SERIALACTIVECHECKTIME) {
return board2Enabled; //unclear if mcu just started or board is just starting up. reply with exprected answer
}
if (lastValidDataSerial2_time==0 && lastSendSerial2expectFeedback==0) { //no valid data received and send ever
return false;
}
if (loopmillis-lastSendSerial2expectFeedback <= SERIALACTIVECHECKTIME){ //enough time passed since last exprected feedback
return board2Enabled; //unclear, return exprected value
}
return loopmillis-lastValidDataSerial2_time < SERIALACTIVECHECKTIME;
}
void modeloops() {
if (loopmillis - last_looptime >= LOOPTIME) {
@ -494,34 +448,7 @@ boolean boardsPowered()
void failChecks()
{
if (serial1Active() && !board1Enabled){ //serial is active and board should be offline
errormessage="Board 1 is online but shouldnt";
requestmode=error;
}
if (serial2Active() && !board2Enabled){ //serial is active and board should be offline
errormessage="Board 2 is online but shouldnt";
requestmode=error;
Serial.print("loopmillis="); Serial.println(loopmillis);
Serial.print("lastBoard2PowerChange="); Serial.println(lastBoard2PowerChange);
Serial.print("lastSendSerial2expectFeedback="); Serial.println(lastSendSerial2expectFeedback);
Serial.print("lastValidDataSerial2_time="); Serial.println(lastValidDataSerial2_time);
}
if (out_speedRL != 0 || out_speedRR != 0) { //Rear is Serial1
if (!serial1Active() && board1Enabled){ //serial is not active and board should be online. only check this if feedback can be exprected (out_speedFL/R > 0)
errormessage="Board 1 is offline but should be online";
requestmode=error;
}
}
if (out_speedFL != 0 || out_speedFR != 0) { //Front is Serial2
if (!serial2Active() && board2Enabled){ //serial is not active and board should be online. only check this if feedback can be exprected (out_speedFL/R > 0)
errormessage="Board 2 is offline but should be online";
requestmode=error;
Serial.print("loopmillis="); Serial.println(loopmillis);
Serial.print("lastBoard2PowerChange="); Serial.println(lastBoard2PowerChange);
Serial.print("lastSendSerial2expectFeedback="); Serial.println(lastSendSerial2expectFeedback);
Serial.print("lastValidDataSerial2_time="); Serial.println(lastValidDataSerial2_time);
}
}
}