- get state with 'T?'

git-svn-id: http://moon:8086/svn/projects/HendiControl@175 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-03-30 13:16:48 +00:00
parent ea2f5c91d9
commit 3d567d783e
+62 -32
View File
@@ -40,7 +40,7 @@
#define TIMER_SW_DELAY_MS(dly) ((dly*TIMER_IRQ_CLOCK)/1000UL) #define TIMER_SW_DELAY_MS(dly) ((dly*TIMER_IRQ_CLOCK)/1000UL)
static const uint16_t POTI_HSYTERSE = 1; FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
int16_t adc_poti = 0; int16_t adc_poti = 0;
int16_t adc_swin = 0; int16_t adc_swin = 0;
@@ -51,10 +51,18 @@ uint16_t g_power = 0;
int g_debug = 0; int g_debug = 0;
int g_switch = 0; int g_switch = 0;
typedef enum _eState_t
{
StateNormal = 0,
StateRemote = 1,
StateError = 2,
State_NumStates
} State_t;
static const char SW_IDENTIFIER[] = "Hendi-Control"; static const char SW_IDENTIFIER[] = "Hendi-Control";
static const char SW_VERSION[] = "v1.1"; static const char SW_VERSION[] = "v1.1";
static const char *state_str[State_NumStates] = {"Normal","Remote","Error"};
FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); static const uint16_t POTI_HSYTERSE = 1;
typedef enum _eSwitch typedef enum _eSwitch
{ {
@@ -85,14 +93,6 @@ void setPower(uint16_t power)
i2c_send(0x60, I2C_WRITE, dac_cmd, res); i2c_send(0x60, I2C_WRITE, dac_cmd, res);
} }
typedef enum _eState_t
{
StateNormal = 0,
StateRemote = 1,
StateError = 2,
State_NumStates
} State_t;
int main(void) int main(void)
{ {
int hb_state = 0; int hb_state = 0;
@@ -100,8 +100,6 @@ int main(void)
wdt_reset(); wdt_reset();
wdt_disable(); wdt_disable();
const char *state_str[State_NumStates] = {"Normal","Remote","Error"};
State_t state = StateNormal; State_t state = StateNormal;
State_t state_next = StateNormal; State_t state_next = StateNormal;
@@ -158,8 +156,8 @@ int main(void)
pArgs++; pArgs++;
if ((*pArgs) == '?') if ((*pArgs) == '?')
{ {
PRINT_ANSWER("%04u", g_power);
pArgs++; pArgs++;
PRINT_ANSWER("OK:%04u", g_power);
} }
else else
{ {
@@ -171,6 +169,7 @@ int main(void)
if (state == StateRemote) if (state == StateRemote)
{ {
setPower(arg); setPower(arg);
PRINT_ANSWER("OK:%04u", g_power);
} }
} }
} }
@@ -181,8 +180,8 @@ int main(void)
pArgs++; pArgs++;
if ((*pArgs) == '?') if ((*pArgs) == '?')
{ {
PRINT_ANSWER("%u", g_switch);
pArgs++; pArgs++;
PRINT_ANSWER("OK:%u", g_switch);
} }
else else
{ {
@@ -195,31 +194,41 @@ int main(void)
if (state == StateRemote) if (state == StateRemote)
{ {
setSwitch(arg); setSwitch(arg);
PRINT_ANSWER("OK:%u", g_switch);
} }
} }
} }
// Enter remote // Enter/exit remote
else if (toupper(*pArgs) == 'R') else if (toupper(*pArgs) == 'R')
{ {
pArgs++; pArgs++;
if (state == StateNormal) if (!isdigit(*pArgs))
{ {
setPower(PowerLow); break;
setSwitch(SwitchOff);
state_next = StateRemote;
} }
} uint16_t arg = (uint16_t)strtol(pArgs, &pArgs, 10);
if (arg == 1)
// Exit remote
else if (toupper(*pArgs) == 'X')
{
pArgs++;
if (state == StateRemote)
{ {
setPower(PowerLow); // Enter remote
setSwitch(SwitchOff); if (state == StateNormal)
state_next = StateNormal; {
setPower(PowerLow);
setSwitch(SwitchOff);
state_next = StateRemote;
PRINT_ANSWER("OK");
}
}
else if (arg == 0)
{
// Exit remote
if (state == StateRemote)
{
setPower(PowerLow);
setSwitch(SwitchOff);
state_next = StateNormal;
PRINT_ANSWER("OK");
}
} }
} }
@@ -232,20 +241,41 @@ int main(void)
break; break;
} }
g_debug = (uint16_t)strtol(pArgs, &pArgs, 10); g_debug = (uint16_t)strtol(pArgs, &pArgs, 10);
PRINT_ANSWER("OK");
} }
// SW identifier // SW identifier
else if (toupper(*pArgs) == 'I') else if (toupper(*pArgs) == 'I')
{ {
pArgs++; pArgs++;
PRINT_ANSWER("%s", SW_IDENTIFIER); if ((*pArgs) == '?')
{
pArgs++;
PRINT_ANSWER("OK:%s", SW_IDENTIFIER);
}
} }
// Version // Version
else if (toupper(*pArgs) == 'V') else if (toupper(*pArgs) == 'V')
{ {
pArgs++; pArgs++;
PRINT_ANSWER("%s", SW_VERSION); if ((*pArgs) == '?')
{
pArgs++;
PRINT_ANSWER("OK:%s", SW_VERSION);
}
}
// State
else if (toupper(*pArgs) == 'T')
{
pArgs++;
if ((*pArgs) == '?')
{
pArgs++;
const char *pState = state_str[state];
PRINT_ANSWER("OK:%s", pState);
}
} }
// no match // no match