kopia lustrzana https://github.com/OpenRTX/OpenRTX
Move low battery screen into main FSM
rodzic
2c792c13a2
commit
c7e928666c
|
@ -52,6 +52,8 @@ typedef struct
|
|||
uint8_t rtxStatus;
|
||||
uint8_t sqlLevel;
|
||||
uint8_t voxLevel;
|
||||
|
||||
bool emergency;
|
||||
}
|
||||
state_t;
|
||||
|
||||
|
|
|
@ -39,7 +39,8 @@ enum uiScreen
|
|||
MENU_CONTACTS,
|
||||
MENU_SMS,
|
||||
MENU_GPS,
|
||||
MENU_SETTINGS
|
||||
MENU_SETTINGS,
|
||||
LOW_BAT
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -28,28 +28,6 @@
|
|||
#include <graphics.h>
|
||||
#include <hwconfig.h>
|
||||
|
||||
/* If battery level is below 0% draw low battery screen, wait and shutdown */
|
||||
void check_battery()
|
||||
{
|
||||
OS_ERR os_err;
|
||||
|
||||
// Check battery percentage
|
||||
float vbat = platform_getVbat();
|
||||
float charge = battery_getCharge(vbat);
|
||||
|
||||
// Draw low battery screen
|
||||
if (charge <= 0)
|
||||
{
|
||||
ui_drawLowBatteryScreen();
|
||||
gfx_render();
|
||||
|
||||
// Wait 5 seconds
|
||||
OSTimeDlyHMSM(0u, 0u, 5u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
||||
|
||||
// TODO: Shut down radio unless a button is pressed
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
OS_ERR os_err;
|
||||
|
@ -63,9 +41,6 @@ int main(void)
|
|||
// Initialize user interface
|
||||
ui_init();
|
||||
|
||||
// Check if battery has enough charge to operate
|
||||
check_battery();
|
||||
|
||||
// Display splash screen
|
||||
ui_drawSplashScreen();
|
||||
gfx_render();
|
||||
|
@ -83,7 +58,7 @@ int main(void)
|
|||
// Auxiliary functions loop
|
||||
while(true)
|
||||
{
|
||||
check_battery();
|
||||
OSTimeDlyHMSM(0u, 1u, 0u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
||||
// No low-frequency function at the moment
|
||||
OSTaskSuspend(NULL, &os_err);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,4 +44,6 @@ void state_init()
|
|||
state.rtxStatus = RTX_OFF;
|
||||
state.sqlLevel = 0;
|
||||
state.voxLevel = 0;
|
||||
|
||||
state.emergency = false;
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@ void ui_drawSplashScreen()
|
|||
#endif
|
||||
}
|
||||
|
||||
void ui_drawLowBatteryScreen()
|
||||
bool _ui_drawLowBatteryScreen()
|
||||
{
|
||||
gfx_clearScreen();
|
||||
uint16_t bat_width = SCREEN_WIDTH / 2;
|
||||
|
@ -375,10 +375,23 @@ void ui_drawLowBatteryScreen()
|
|||
FONT_SIZE_6PT,
|
||||
TEXT_ALIGN_CENTER,
|
||||
color_white);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ui_updateFSM(event_t event)
|
||||
{
|
||||
// Check if battery has enough charge to operate
|
||||
float charge = battery_getCharge(state.v_bat);
|
||||
if (!state.emergency && charge <= 0)
|
||||
{
|
||||
state.ui_screen = LOW_BAT;
|
||||
if(event.type == EVENT_KBD && event.payload) {
|
||||
state.ui_screen = MAIN_VFO;
|
||||
state.emergency = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Process pressed keys
|
||||
if(event.type == EVENT_KBD)
|
||||
{
|
||||
|
@ -440,6 +453,10 @@ bool ui_updateGUI(state_t last_state)
|
|||
case MENU_TOP:
|
||||
screen_update = _ui_drawMenuTop();
|
||||
break;
|
||||
// Low battery screen
|
||||
case LOW_BAT:
|
||||
screen_update = _ui_drawLowBatteryScreen();
|
||||
break;
|
||||
}
|
||||
return screen_update;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue