cmd handler stuff
This commit is contained in:
@ -30,14 +30,27 @@ typedef enum {
|
||||
|
||||
// returns 0 to continue waiting for input
|
||||
// returns -1 to close the connection
|
||||
int8_t cmdExecuteCommand(uint8_t *cmd) {
|
||||
// returns 1 to toggle to config mode
|
||||
// returns 2 to toggle back to default mode
|
||||
int8_t cmdExecuteCommand(uint8_t *cmd, bool resetConfigMode) {
|
||||
const static uint8_t GOODBYE_MSG[] = "Good bye\n\r";
|
||||
static bool configMode = false;
|
||||
|
||||
if (resetConfigMode) {
|
||||
configMode = false;
|
||||
}
|
||||
|
||||
int8_t retCode = 0;
|
||||
coloredMsg(LOG_YELLOW, "cec, cmd is %s", cmd);
|
||||
if (0 == strcmp(cmd, "quit")) {
|
||||
send(CMD_SOCK, GOODBYE_MSG, sizeof(GOODBYE_MSG));
|
||||
retCode = -1;
|
||||
} else if (0 == strcmp(cmd, "enable")) {
|
||||
configMode = true;
|
||||
retCode = 1;
|
||||
} else if (0 == strcmp(cmd, "disable")) {
|
||||
configMode = false;
|
||||
retCode = 2;
|
||||
}
|
||||
|
||||
return retCode;
|
||||
@ -47,6 +60,7 @@ void cmdHandlerEngine(void *handle) {
|
||||
static uint8_t receiveBuffer[256];
|
||||
|
||||
static chState_t state = CH_INIT;
|
||||
static bool resetConfigMode = false;
|
||||
|
||||
static uint8_t banner[] = \
|
||||
"MBGW3\n\r" \
|
||||
@ -65,6 +79,7 @@ void cmdHandlerEngine(void *handle) {
|
||||
int32_t resultRecv;
|
||||
uint8_t resultDisconnect;
|
||||
|
||||
|
||||
if (isNetworkAvailable()) {
|
||||
switch (state) {
|
||||
case CH_INIT:
|
||||
@ -119,6 +134,7 @@ void cmdHandlerEngine(void *handle) {
|
||||
resultSend = send(CMD_SOCK, banner, strlen(banner));
|
||||
coloredMsg(LOG_YELLOW, "che, sent banner, send returns 0x%02x", resultSend);
|
||||
prompt = defaultPrompt;
|
||||
resetConfigMode = true;
|
||||
state = CH_PROMPT;
|
||||
}
|
||||
break;
|
||||
@ -160,10 +176,23 @@ void cmdHandlerEngine(void *handle) {
|
||||
receiveBuffer[strlen(receiveBuffer) - 1] = 0;
|
||||
}
|
||||
coloredMsg(LOG_YELLOW, "che, received: %s", receiveBuffer);
|
||||
if (-1 == cmdExecuteCommand(receiveBuffer)) {
|
||||
state = CH_DISCONNECT;
|
||||
} else {
|
||||
state = CH_PROMPT;
|
||||
int8_t resCEC = cmdExecuteCommand(receiveBuffer, resetConfigMode);
|
||||
resetConfigMode = false;
|
||||
switch (resCEC) {
|
||||
case 0:
|
||||
state = CH_PROMPT;
|
||||
break;
|
||||
case -1:
|
||||
state = CH_DISCONNECT;
|
||||
break;
|
||||
case 1:
|
||||
prompt = elevatedPrompt;
|
||||
state = CH_PROMPT;
|
||||
break;
|
||||
case 2:
|
||||
prompt = defaultPrompt;
|
||||
state = CH_PROMPT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user