- 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)
|
#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
|
||||||
|
|||||||
Reference in New Issue
Block a user