From 94b7be826a1e3ef54d82eccf17d0d8cb004113de Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Fri, 1 Jan 2021 18:58:35 +0100 Subject: [PATCH] Disable RTC related code on platforms without a functional RTC --- openrtx/src/state.c | 2 ++ openrtx/src/threads.c | 2 ++ openrtx/src/ui.c | 17 +++++++++++++++++ platform/targets/MD-380/hwconfig.h | 3 +++ platform/targets/MD-390/hwconfig.h | 3 +++ platform/targets/MD-9600/hwconfig.h | 3 +++ platform/targets/MD-UV380/hwconfig.h | 3 +++ platform/targets/linux/hwconfig.h | 3 +++ 8 files changed, 36 insertions(+) diff --git a/openrtx/src/state.c b/openrtx/src/state.c index b23bdef7..a0a61ca6 100644 --- a/openrtx/src/state.c +++ b/openrtx/src/state.c @@ -31,7 +31,9 @@ void state_init() * or initialize them to sane defaults */ state.radioStateUpdated = true; +#ifdef HAS_RTC state.time = rtc_getTime(); +#endif state.v_bat = platform_getVbat(); state.channelInfoUpdated = true; diff --git a/openrtx/src/threads.c b/openrtx/src/threads.c index f70e70f5..04db5de4 100644 --- a/openrtx/src/threads.c +++ b/openrtx/src/threads.c @@ -237,7 +237,9 @@ static void dev_task(void *arg) // Lock mutex and update internal state OSMutexPend(&state_mutex, 0u, OS_OPT_PEND_BLOCKING, 0u, &os_err); +#ifdef HAS_RTC state.time = rtc_getTime(); +#endif state.v_bat = platform_getVbat(); OSMutexPost(&state_mutex, OS_OPT_POST_NONE, &os_err); diff --git a/openrtx/src/ui.c b/openrtx/src/ui.c index 6c90ad3a..9196323f 100644 --- a/openrtx/src/ui.c +++ b/openrtx/src/ui.c @@ -97,7 +97,9 @@ const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]); const char *settings_items[1] = { +#ifdef HAS_RTC "Time & Date" +#endif }; // Calculate number of settings menu entries const uint8_t settings_num = sizeof(settings_items)/sizeof(settings_items[0]); @@ -150,9 +152,12 @@ freq_t new_rx_frequency; freq_t new_tx_frequency; char new_rx_freq_buf[14] = ""; char new_tx_freq_buf[14] = ""; + +#ifdef HAS_RTC curTime_t new_timedate = {0}; char new_date_buf[9] = ""; char new_time_buf[9] = ""; +#endif layout_t _ui_calculateLayout() { @@ -273,12 +278,14 @@ void _ui_drawVFOBackground() void _ui_drawVFOTop(state_t* last_state) { +#ifdef HAS_RTC // Print clock on top bar char clock_buf[9] = ""; snprintf(clock_buf, sizeof(clock_buf), "%02d:%02d:%02d", last_state->time.hour, last_state->time.minute, last_state->time.second); gfx_print(layout.top_pos, clock_buf, layout.top_font, TEXT_ALIGN_CENTER, color_white); +#endif // Print battery icon on top bar, use 4 px padding float charge = battery_getCharge(last_state->v_bat); @@ -483,6 +490,7 @@ void _ui_drawMenuSettings() _ui_drawMenuList(layout.line1_pos, settings_items, settings_num, menu_selected); } +#ifdef HAS_RTC void _ui_drawSettingsTimeDate(state_t* last_state) { gfx_clearScreen(); @@ -541,6 +549,7 @@ void _ui_drawSettingsTimeDateSet(state_t* last_state) gfx_print(layout.line3_pos, new_time_buf, layout.line3_font, TEXT_ALIGN_CENTER, color_white); } +#endif void ui_init() { @@ -597,6 +606,7 @@ freq_t _ui_freq_add_digit(freq_t freq, uint8_t pos, uint8_t number) return freq += number * coefficient; } +#ifdef HAS_RTC curTime_t _ui_timedate_add_digit(curTime_t timedate, uint8_t pos, uint8_t number) { switch(pos) @@ -639,6 +649,7 @@ curTime_t _ui_timedate_add_digit(curTime_t timedate, uint8_t pos, uint8_t number } return timedate; } +#endif bool _ui_freq_check_limits(freq_t freq) { @@ -860,10 +871,12 @@ void ui_updateFSM(event_t event, bool *sync_rtx) // Open selected menu item switch(menu_selected) { +#ifdef HAS_RTC // TODO: Add missing submenu states case 0: state.ui_screen = SETTINGS_TIMEDATE; break; +#endif default: state.ui_screen = MENU_TOP; } @@ -878,6 +891,7 @@ void ui_updateFSM(event_t event, bool *sync_rtx) menu_selected = 0; } break; +#ifdef HAS_RTC // Time&Date settings screen case SETTINGS_TIMEDATE: if(msg.keys & KEY_ENTER) @@ -923,6 +937,7 @@ void ui_updateFSM(event_t event, bool *sync_rtx) input_position, input_number); } break; +#endif } } } @@ -957,6 +972,7 @@ bool ui_updateGUI(state_t last_state) _ui_drawMenuSettings(); screen_update = true; break; +#ifdef HAS_RTC // Time&Date settings screen case SETTINGS_TIMEDATE: _ui_drawSettingsTimeDate(&last_state); @@ -967,6 +983,7 @@ bool ui_updateGUI(state_t last_state) _ui_drawSettingsTimeDateSet(&last_state); screen_update = true; break; +#endif // Low battery screen case LOW_BAT: screen_update = _ui_drawLowBatteryScreen(); diff --git a/platform/targets/MD-380/hwconfig.h b/platform/targets/MD-380/hwconfig.h index 8e6605be..58c69bac 100644 --- a/platform/targets/MD-380/hwconfig.h +++ b/platform/targets/MD-380/hwconfig.h @@ -22,6 +22,9 @@ #include +/* Device has a working real time clock */ +#define HAS_RTC + /* Supported radio bands */ #define BAND_VHF #define BAND_UHF diff --git a/platform/targets/MD-390/hwconfig.h b/platform/targets/MD-390/hwconfig.h index 5d69eb36..601a6667 100644 --- a/platform/targets/MD-390/hwconfig.h +++ b/platform/targets/MD-390/hwconfig.h @@ -22,6 +22,9 @@ #include +/* Device has a working real time clock */ +#define HAS_RTC + /* Supported radio bands */ #define BAND_VHF #define BAND_UHF diff --git a/platform/targets/MD-9600/hwconfig.h b/platform/targets/MD-9600/hwconfig.h index 2015ea46..a34a0384 100644 --- a/platform/targets/MD-9600/hwconfig.h +++ b/platform/targets/MD-9600/hwconfig.h @@ -23,6 +23,9 @@ #include +/* Device has a working real time clock */ +#define HAS_RTC + /* Supported radio bands */ #define BAND_VHF #define BAND_UHF diff --git a/platform/targets/MD-UV380/hwconfig.h b/platform/targets/MD-UV380/hwconfig.h index ec0a792a..e2230c42 100644 --- a/platform/targets/MD-UV380/hwconfig.h +++ b/platform/targets/MD-UV380/hwconfig.h @@ -22,6 +22,9 @@ #include +/* Device has a working real time clock */ +#define HAS_RTC + /* Supported radio bands */ #define BAND_VHF #define BAND_UHF diff --git a/platform/targets/linux/hwconfig.h b/platform/targets/linux/hwconfig.h index b383368e..ffd5e5bd 100644 --- a/platform/targets/linux/hwconfig.h +++ b/platform/targets/linux/hwconfig.h @@ -18,6 +18,9 @@ #define PLATFORM_LINUX +/* Device has a working real time clock */ +#define HAS_RTC + /* Supported radio bands */ #define BAND_VHF #define BAND_UHF