|
@@ -57,6 +57,7 @@ int16_t mmu_buildnr = -1;
|
|
uint32_t mmu_last_request = 0;
|
|
uint32_t mmu_last_request = 0;
|
|
uint32_t mmu_last_response = 0;
|
|
uint32_t mmu_last_response = 0;
|
|
|
|
|
|
|
|
+uint8_t mmu_last_cmd = 0;
|
|
uint16_t mmu_power_failures = 0;
|
|
uint16_t mmu_power_failures = 0;
|
|
|
|
|
|
|
|
|
|
@@ -293,6 +294,7 @@ void mmu_loop(void)
|
|
mmu_puts_P(PSTR("S3\n")); //send power failures request
|
|
mmu_puts_P(PSTR("S3\n")); //send power failures request
|
|
mmu_state = 4; // power failures response
|
|
mmu_state = 4; // power failures response
|
|
}
|
|
}
|
|
|
|
+ mmu_last_cmd = mmu_cmd;
|
|
mmu_cmd = 0;
|
|
mmu_cmd = 0;
|
|
}
|
|
}
|
|
else if ((mmu_last_response + 300) < millis()) //request every 300ms
|
|
else if ((mmu_last_response + 300) < millis()) //request every 300ms
|
|
@@ -350,11 +352,20 @@ void mmu_loop(void)
|
|
#ifdef MMU_DEBUG
|
|
#ifdef MMU_DEBUG
|
|
printf_P(PSTR("MMU => 'ok'\n"));
|
|
printf_P(PSTR("MMU => 'ok'\n"));
|
|
#endif //MMU_DEBUG
|
|
#endif //MMU_DEBUG
|
|
|
|
+ mmu_last_cmd = 0;
|
|
mmu_ready = true;
|
|
mmu_ready = true;
|
|
mmu_state = 1;
|
|
mmu_state = 1;
|
|
}
|
|
}
|
|
else if ((mmu_last_request + MMU_CMD_TIMEOUT) < millis())
|
|
else if ((mmu_last_request + MMU_CMD_TIMEOUT) < millis())
|
|
{ //resend request after timeout (5 min)
|
|
{ //resend request after timeout (5 min)
|
|
|
|
+ if (mmu_last_cmd)
|
|
|
|
+ {
|
|
|
|
+#ifdef MMU_DEBUG
|
|
|
|
+ printf_P(PSTR("MMU retry\n"));
|
|
|
|
+#endif //MMU_DEBUG
|
|
|
|
+ mmu_cmd = mmu_last_cmd;
|
|
|
|
+// mmu_last_cmd = 0; //resend just once
|
|
|
|
+ }
|
|
mmu_state = 1;
|
|
mmu_state = 1;
|
|
}
|
|
}
|
|
return;
|
|
return;
|