- get state with 'T?'
git-svn-id: http://moon:8086/svn/projects/HendiControl@175 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
@@ -40,7 +40,7 @@
|
||||
|
||||
#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_swin = 0;
|
||||
@@ -51,10 +51,18 @@ uint16_t g_power = 0;
|
||||
int g_debug = 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_VERSION[] = "v1.1";
|
||||
|
||||
FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
|
||||
static const char *state_str[State_NumStates] = {"Normal","Remote","Error"};
|
||||
static const uint16_t POTI_HSYTERSE = 1;
|
||||
|
||||
typedef enum _eSwitch
|
||||
{
|
||||
@@ -85,14 +93,6 @@ void setPower(uint16_t power)
|
||||
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 hb_state = 0;
|
||||
@@ -100,8 +100,6 @@ int main(void)
|
||||
wdt_reset();
|
||||
wdt_disable();
|
||||
|
||||
const char *state_str[State_NumStates] = {"Normal","Remote","Error"};
|
||||
|
||||
State_t state = StateNormal;
|
||||
State_t state_next = StateNormal;
|
||||
|
||||
@@ -158,8 +156,8 @@ int main(void)
|
||||
pArgs++;
|
||||
if ((*pArgs) == '?')
|
||||
{
|
||||
PRINT_ANSWER("%04u", g_power);
|
||||
pArgs++;
|
||||
PRINT_ANSWER("OK:%04u", g_power);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -171,6 +169,7 @@ int main(void)
|
||||
if (state == StateRemote)
|
||||
{
|
||||
setPower(arg);
|
||||
PRINT_ANSWER("OK:%04u", g_power);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,8 +180,8 @@ int main(void)
|
||||
pArgs++;
|
||||
if ((*pArgs) == '?')
|
||||
{
|
||||
PRINT_ANSWER("%u", g_switch);
|
||||
pArgs++;
|
||||
PRINT_ANSWER("OK:%u", g_switch);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -195,31 +194,41 @@ int main(void)
|
||||
if (state == StateRemote)
|
||||
{
|
||||
setSwitch(arg);
|
||||
PRINT_ANSWER("OK:%u", g_switch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Enter remote
|
||||
// Enter/exit remote
|
||||
else if (toupper(*pArgs) == 'R')
|
||||
{
|
||||
pArgs++;
|
||||
if (state == StateNormal)
|
||||
if (!isdigit(*pArgs))
|
||||
{
|
||||
setPower(PowerLow);
|
||||
setSwitch(SwitchOff);
|
||||
state_next = StateRemote;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Exit remote
|
||||
else if (toupper(*pArgs) == 'X')
|
||||
{
|
||||
pArgs++;
|
||||
if (state == StateRemote)
|
||||
uint16_t arg = (uint16_t)strtol(pArgs, &pArgs, 10);
|
||||
if (arg == 1)
|
||||
{
|
||||
setPower(PowerLow);
|
||||
setSwitch(SwitchOff);
|
||||
state_next = StateNormal;
|
||||
// Enter remote
|
||||
if (state == 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;
|
||||
}
|
||||
g_debug = (uint16_t)strtol(pArgs, &pArgs, 10);
|
||||
PRINT_ANSWER("OK");
|
||||
}
|
||||
|
||||
// SW identifier
|
||||
else if (toupper(*pArgs) == 'I')
|
||||
{
|
||||
pArgs++;
|
||||
PRINT_ANSWER("%s", SW_IDENTIFIER);
|
||||
if ((*pArgs) == '?')
|
||||
{
|
||||
pArgs++;
|
||||
PRINT_ANSWER("OK:%s", SW_IDENTIFIER);
|
||||
}
|
||||
}
|
||||
|
||||
// Version
|
||||
else if (toupper(*pArgs) == 'V')
|
||||
{
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user