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 rtxStatus;
|
||||||
uint8_t sqlLevel;
|
uint8_t sqlLevel;
|
||||||
uint8_t voxLevel;
|
uint8_t voxLevel;
|
||||||
|
|
||||||
|
bool emergency;
|
||||||
}
|
}
|
||||||
state_t;
|
state_t;
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,8 @@ enum uiScreen
|
||||||
MENU_CONTACTS,
|
MENU_CONTACTS,
|
||||||
MENU_SMS,
|
MENU_SMS,
|
||||||
MENU_GPS,
|
MENU_GPS,
|
||||||
MENU_SETTINGS
|
MENU_SETTINGS,
|
||||||
|
LOW_BAT
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -28,28 +28,6 @@
|
||||||
#include <graphics.h>
|
#include <graphics.h>
|
||||||
#include <hwconfig.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)
|
int main(void)
|
||||||
{
|
{
|
||||||
OS_ERR os_err;
|
OS_ERR os_err;
|
||||||
|
@ -63,9 +41,6 @@ int main(void)
|
||||||
// Initialize user interface
|
// Initialize user interface
|
||||||
ui_init();
|
ui_init();
|
||||||
|
|
||||||
// Check if battery has enough charge to operate
|
|
||||||
check_battery();
|
|
||||||
|
|
||||||
// Display splash screen
|
// Display splash screen
|
||||||
ui_drawSplashScreen();
|
ui_drawSplashScreen();
|
||||||
gfx_render();
|
gfx_render();
|
||||||
|
@ -83,7 +58,7 @@ int main(void)
|
||||||
// Auxiliary functions loop
|
// Auxiliary functions loop
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
check_battery();
|
// No low-frequency function at the moment
|
||||||
OSTimeDlyHMSM(0u, 1u, 0u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
|
OSTaskSuspend(NULL, &os_err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,4 +44,6 @@ void state_init()
|
||||||
state.rtxStatus = RTX_OFF;
|
state.rtxStatus = RTX_OFF;
|
||||||
state.sqlLevel = 0;
|
state.sqlLevel = 0;
|
||||||
state.voxLevel = 0;
|
state.voxLevel = 0;
|
||||||
|
|
||||||
|
state.emergency = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -354,7 +354,7 @@ void ui_drawSplashScreen()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ui_drawLowBatteryScreen()
|
bool _ui_drawLowBatteryScreen()
|
||||||
{
|
{
|
||||||
gfx_clearScreen();
|
gfx_clearScreen();
|
||||||
uint16_t bat_width = SCREEN_WIDTH / 2;
|
uint16_t bat_width = SCREEN_WIDTH / 2;
|
||||||
|
@ -375,10 +375,23 @@ void ui_drawLowBatteryScreen()
|
||||||
FONT_SIZE_6PT,
|
FONT_SIZE_6PT,
|
||||||
TEXT_ALIGN_CENTER,
|
TEXT_ALIGN_CENTER,
|
||||||
color_white);
|
color_white);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ui_updateFSM(event_t event)
|
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
|
// Process pressed keys
|
||||||
if(event.type == EVENT_KBD)
|
if(event.type == EVENT_KBD)
|
||||||
{
|
{
|
||||||
|
@ -440,6 +453,10 @@ bool ui_updateGUI(state_t last_state)
|
||||||
case MENU_TOP:
|
case MENU_TOP:
|
||||||
screen_update = _ui_drawMenuTop();
|
screen_update = _ui_drawMenuTop();
|
||||||
break;
|
break;
|
||||||
|
// Low battery screen
|
||||||
|
case LOW_BAT:
|
||||||
|
screen_update = _ui_drawLowBatteryScreen();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return screen_update;
|
return screen_update;
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue