File wsh_shell_promptwait.c
File List > src > wsh_shell_promptwait.c
Go to the documentation of this file
| #include "wsh_shell_promptwait.h"
void WshShellPromptWait_Flush(WshShellPromptWait_t* pWait) {
WSH_SHELL_ASSERT(pWait);
if (!pWait)
return;
pWait->Handler = NULL;
pWait->Ctx = NULL;
}
#if WSH_SHELL_PROMPT_WAIT
void WshShellPromptWait_Attach(WshShellPromptWait_t* pWait, WshShellPromptWait_Handler_t handler,
void* pCtx) {
WSH_SHELL_ASSERT(pWait && handler);
if (!pWait || !handler)
return;
pWait->Handler = handler;
pWait->Ctx = pCtx;
}
WSH_SHELL_RET_STATE_t WshShellPromptWait_Handle(WshShellPromptWait_t* pWait,
WshShell_Char_t symbol) {
WSH_SHELL_ASSERT(pWait);
if (!pWait)
return WSH_SHELL_RET_STATE_ERR_PARAM;
if (pWait->Handler) {
WshShell_Bool_t res = pWait->Handler(symbol, pWait);
if (!res)
WSH_SHELL_PRINT("%c", WSH_SHELL_SYM_SOUND);
return res == true ? WSH_SHELL_RET_STATE_SUCCESS : WSH_SHELL_RET_STATE_ERR_BUSY;
}
return WSH_SHELL_RET_STATE_ERR_EMPTY;
}
WshShell_Bool_t WshShellPromptWait_Enter(WshShell_Char_t symbol, WshShellPromptWait_t* pWait) {
WSH_SHELL_ASSERT(pWait);
if (symbol == '\r' || symbol == '\n') {
WshShellPromptWait_Flush(pWait);
return true;
} else {
WSH_SHELL_PRINT_SYS("Press <Enter> to continue...\r\n");
return false;
}
}
WshShell_Bool_t WshShellPromptWait_YesNo(WshShell_Char_t symbol, WshShellPromptWait_t* pWait) {
WSH_SHELL_ASSERT(pWait);
if (symbol == 'Y' || symbol == 'y') {
WSH_SHELL_PRINT_SYS("Yes selected\r\n");
} else if (symbol == 'N' || symbol == 'n') {
WSH_SHELL_PRINT_SYS("No selected\r\n");
} else {
WSH_SHELL_PRINT_SYS("Invalid input\r\n");
return false;
}
return true;
}
#else /* WSH_SHELL_PROMPT_WAIT */
void WshShellPromptWait_Attach(WshShellPromptWait_t* pWait, WshShellPromptWait_Handler_t handler,
void* pCtx) {
return;
}
WSH_SHELL_RET_STATE_t WshShellPromptWait_Handle(WshShellPromptWait_t* pWait,
WshShell_Char_t symbol) {
return WSH_SHELL_RET_STATE_SUCCESS;
}
WshShell_Bool_t WshShellPromptWait_Enter(WshShell_Char_t symbol, WshShellPromptWait_t* pWait) {
return true;
}
WshShell_Bool_t WshShellPromptWait_YesNo(WshShell_Char_t symbol, WshShellPromptWait_t* pWait) {
return true;
}
#endif /* WSH_SHELL_PROMPT_WAIT */
|