📄 state.c
字号:
/****************************************************************************
DESCRIPTION
State management functionality
FILE
state.c
*/
/****************************************************************************
Header files
*/
#include <print.h>
#include <panic.h>
#include "main.h"
#include "state.h"
#if DEBUG_PRINT_ENABLED
typedef struct
{
const uint8 *str;
uint16 len;
} stateDebugNames;
static const uint8 unInitStr[] = {'A','p','p','S','t','a','t','e','U','n','i','n','i','t','i','a','l','i','s','e','d'};
static const uint8 conInitStr[] = {'A','p','p','S','t','a','t','e','C','o','n','I','n','i','t','e','d'};
static const uint8 appIdleStr[] = {'A','p','p','S','t','a','t','e','A','p','p','I','d','l','e'};
static const uint8 appCntingStr[] = {'A','p','p','S','t','a','t','e','A','p','p','C','o','n','n','e','c','t','i','n','g'};
static const uint8 appCntedStr[] = {'A','p','p','S','t','a','t','e','A','p','p','C','o','n','n','e','c','t','e','d'};
static const uint8 appDisCntingStr[] = {'A','p','p','S','t','a','t','e','A','p','p','D','i','s','c','o','n','n','e','c','t','i','n','g'};
static const uint8 appSetPbStr[] = {'A','p','p','S','t','a','t','e','S','e','t','P','h','o','n','e','b','o','o','k'};
static const uint8 appGetVCLStr[] = {'A','p','p','S','t','a','t','e','G','e','t','V','C','a','r','d','L','i','s','t'};
static const uint8 appGetVCEStr[] = {'A','p','p','S','t','a','t','e','G','e','t','V','C','a','r','d','E','n','t','r','y'};
static const uint8 appDnLdPbStr[] = {'A','p','p','S','t','a','t','e','D','o','w','n','l','o','a','d','P','h','o','n','e','b','o','o','k'};
#define STATE_LIST_ENTRY(i) {(i), sizeof((i))}
static const stateDebugNames gStateDebugNamesList[] =
{
STATE_LIST_ENTRY(unInitStr),
STATE_LIST_ENTRY(conInitStr),
STATE_LIST_ENTRY(appIdleStr),
STATE_LIST_ENTRY(appCntingStr),
STATE_LIST_ENTRY(appCntedStr),
STATE_LIST_ENTRY(appDisCntingStr),
STATE_LIST_ENTRY(appSetPbStr),
STATE_LIST_ENTRY(appGetVCLStr),
STATE_LIST_ENTRY(appGetVCEStr),
STATE_LIST_ENTRY(appDnLdPbStr)
};
static void statePrintString(app_states state)
{
uint16 lLen = gStateDebugNamesList[state].len;
uint16 lCnt;
for (lCnt = 0; lCnt<lLen; lCnt++)
{
PRINT(("%c",gStateDebugNamesList[state].str[lCnt]));
}
}
static void stateLogStateChange(app_states pOldState, app_states pNewState)
{
PRINT((" Set State - From 0x%d [",pOldState));
statePrintString(pOldState);
PRINT(("] : To 0x%d [",pNewState));
statePrintString(pNewState);
PRINT(("]\n"));
}
#else
#define stateLogStateChange(a,b)
#endif
void setState(app_states *pState, app_states pNewState)
{
if ((pNewState >= AppStateUninitialised) && (pNewState < AppStateEndOfList))
{
stateLogStateChange(*pState, pNewState);
*pState = pNewState;
}
else
{
PRINT((" Set State - From 0x%d : To 0x%d\n",*pState,pNewState));
PRINT((" INVALID STATE\n"));
Panic();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -