diff --git a/Control/firmware/HendiCtrl/main.c b/Control/firmware/HendiCtrl/main.c index 6c13220..ddc191c 100755 --- a/Control/firmware/HendiCtrl/main.c +++ b/Control/firmware/HendiCtrl/main.c @@ -212,31 +212,47 @@ int main(void) else if (toupper(*pArgs) == 'R') { pArgs++; - if (!isdigit(*pArgs)) + if ((*pArgs) == '?') { - break; + pArgs++; + PRINT_ANSWER("OK:%d", (int)(state_next == StateRemote)); } - uint16_t arg = (uint16_t)strtol(pArgs, &pArgs, 10); - if (arg == 1) + else { - // Enter remote - if (state == StateNormal) + if (!isdigit(*pArgs)) { - setPower(PowerLow); - setSwitch(SwitchOff); - state_next = StateRemote; - PRINT_ANSWER("OK"); + break; } - } - else if (arg == 0) - { - // Exit remote - if (state == StateRemote) + uint16_t arg = (uint16_t)strtol(pArgs, &pArgs, 10); + if (arg == 1) { - setPower(PowerLow); - setSwitch(SwitchOff); - state_next = StateNormal; - PRINT_ANSWER("OK"); + // Enter remote + if (state == StateNormal) + { + setPower(PowerLow); + setSwitch(SwitchOff); + state_next = StateRemote; + PRINT_ANSWER("OK"); + } + else + { + PRINT_ANSWER("INVALID STATE"); + } + } + else if (arg == 0) + { + // Exit remote + if (state == StateRemote) + { + setPower(PowerLow); + setSwitch(SwitchOff); + state_next = StateNormal; + PRINT_ANSWER("OK"); + } + else + { + PRINT_ANSWER("INVALID STATE"); + } } } } @@ -245,12 +261,20 @@ int main(void) else if (toupper(*pArgs) == 'D') { pArgs++; - if (!isdigit(*pArgs)) + if ((*pArgs) == '?') { - break; + pArgs++; + PRINT_ANSWER("OK:%d", (int)(state_next == StateRemote)); + } + else + { + if (!isdigit(*pArgs)) + { + break; + } + g_debug = (uint16_t)strtol(pArgs, &pArgs, 10); + PRINT_ANSWER("OK"); } - g_debug = (uint16_t)strtol(pArgs, &pArgs, 10); - PRINT_ANSWER("OK"); } // SW identifier @@ -291,6 +315,7 @@ int main(void) else { pArgs++; + PRINT_ANSWER("UNKNOWN COMMAND"); } } // while (*pArgs)