Disable GPS functions for radios that don't support a GPS chip
This commit is contained in:
parent
8f3c46a262
commit
9255dfb969
|
|
@ -26,7 +26,9 @@
|
||||||
#include <interfaces/keyboard.h>
|
#include <interfaces/keyboard.h>
|
||||||
#include <interfaces/graphics.h>
|
#include <interfaces/graphics.h>
|
||||||
#include <interfaces/platform.h>
|
#include <interfaces/platform.h>
|
||||||
|
#ifdef HAS_GPS
|
||||||
#include <interfaces/gps.h>
|
#include <interfaces/gps.h>
|
||||||
|
#endif
|
||||||
#include <hwconfig.h>
|
#include <hwconfig.h>
|
||||||
#include <event.h>
|
#include <event.h>
|
||||||
#include <rtx.h>
|
#include <rtx.h>
|
||||||
|
|
@ -73,9 +75,11 @@ static CPU_STK dev_stk[DEV_TASK_STKSIZE/sizeof(CPU_STK)];
|
||||||
static OS_TCB rtx_tcb;
|
static OS_TCB rtx_tcb;
|
||||||
static CPU_STK rtx_stk[RTX_TASK_STKSIZE/sizeof(CPU_STK)];
|
static CPU_STK rtx_stk[RTX_TASK_STKSIZE/sizeof(CPU_STK)];
|
||||||
|
|
||||||
|
#ifdef HAS_GPS
|
||||||
/* GPS task control block and stack */
|
/* GPS task control block and stack */
|
||||||
static OS_TCB gps_tcb;
|
static OS_TCB gps_tcb;
|
||||||
static CPU_STK gps_stk[GPS_TASK_STKSIZE/sizeof(CPU_STK)];
|
static CPU_STK gps_stk[GPS_TASK_STKSIZE/sizeof(CPU_STK)];
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \internal Task function in charge of updating the UI.
|
* \internal Task function in charge of updating the UI.
|
||||||
|
|
@ -290,6 +294,7 @@ static void rtx_task(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAS_GPS
|
||||||
/**
|
/**
|
||||||
* \internal Task function for parsing GPS data and updating radio state.
|
* \internal Task function for parsing GPS data and updating radio state.
|
||||||
*/
|
*/
|
||||||
|
|
@ -352,6 +357,7 @@ static void gps_task(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \internal This function creates all the system tasks and mutexes.
|
* \internal This function creates all the system tasks and mutexes.
|
||||||
|
|
@ -429,6 +435,7 @@ void create_threads()
|
||||||
(OS_OPT ) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
(OS_OPT ) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
||||||
(OS_ERR *) &os_err);
|
(OS_ERR *) &os_err);
|
||||||
|
|
||||||
|
#ifdef HAS_GPS
|
||||||
// Create GPS thread
|
// Create GPS thread
|
||||||
OSTaskCreate((OS_TCB *) &gps_tcb,
|
OSTaskCreate((OS_TCB *) &gps_tcb,
|
||||||
(CPU_CHAR *) "GPS Task",
|
(CPU_CHAR *) "GPS Task",
|
||||||
|
|
@ -443,6 +450,7 @@ void create_threads()
|
||||||
(void *) 0,
|
(void *) 0,
|
||||||
(OS_OPT ) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
(OS_OPT ) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
|
||||||
(OS_ERR *) &os_err);
|
(OS_ERR *) &os_err);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Create state thread
|
// Create state thread
|
||||||
OSTaskCreate((OS_TCB *) &dev_tcb,
|
OSTaskCreate((OS_TCB *) &dev_tcb,
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,9 @@
|
||||||
#include <rtx.h>
|
#include <rtx.h>
|
||||||
#include <interfaces/platform.h>
|
#include <interfaces/platform.h>
|
||||||
#include <interfaces/nvmem.h>
|
#include <interfaces/nvmem.h>
|
||||||
|
#ifdef HAS_GPS
|
||||||
#include <interfaces/gps.h>
|
#include <interfaces/gps.h>
|
||||||
|
#endif
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <battery.h>
|
#include <battery.h>
|
||||||
#include <input.h>
|
#include <input.h>
|
||||||
|
|
@ -88,7 +90,10 @@ extern void _ui_drawMenuTop(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuZone(ui_state_t* ui_state);
|
extern void _ui_drawMenuZone(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuChannel(ui_state_t* ui_state);
|
extern void _ui_drawMenuChannel(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuContacts(ui_state_t* ui_state);
|
extern void _ui_drawMenuContacts(ui_state_t* ui_state);
|
||||||
|
#ifdef HAS_GPS
|
||||||
extern void _ui_drawMenuGPS();
|
extern void _ui_drawMenuGPS();
|
||||||
|
extern void _ui_drawSettingsGPS(ui_state_t* ui_state);
|
||||||
|
#endif
|
||||||
extern void _ui_drawMenuSettings(ui_state_t* ui_state);
|
extern void _ui_drawMenuSettings(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuInfo(ui_state_t* ui_state);
|
extern void _ui_drawMenuInfo(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuAbout();
|
extern void _ui_drawMenuAbout();
|
||||||
|
|
@ -97,7 +102,6 @@ extern void _ui_drawSettingsTimeDate();
|
||||||
extern void _ui_drawSettingsTimeDateSet(ui_state_t* ui_state);
|
extern void _ui_drawSettingsTimeDateSet(ui_state_t* ui_state);
|
||||||
#endif
|
#endif
|
||||||
extern void _ui_drawSettingsDisplay(ui_state_t* ui_state);
|
extern void _ui_drawSettingsDisplay(ui_state_t* ui_state);
|
||||||
extern void _ui_drawSettingsGPS(ui_state_t* ui_state);
|
|
||||||
extern bool _ui_drawMacroMenu();
|
extern bool _ui_drawMacroMenu();
|
||||||
|
|
||||||
const char *menu_items[] =
|
const char *menu_items[] =
|
||||||
|
|
@ -106,7 +110,9 @@ const char *menu_items[] =
|
||||||
"Channels",
|
"Channels",
|
||||||
"Contacts",
|
"Contacts",
|
||||||
"Messages",
|
"Messages",
|
||||||
|
#ifdef HAS_GPS
|
||||||
"GPS",
|
"GPS",
|
||||||
|
#endif
|
||||||
"Settings",
|
"Settings",
|
||||||
"Info",
|
"Info",
|
||||||
"About"
|
"About"
|
||||||
|
|
@ -118,7 +124,9 @@ const char *settings_items[] =
|
||||||
"Time & Date",
|
"Time & Date",
|
||||||
#endif
|
#endif
|
||||||
"Display",
|
"Display",
|
||||||
|
#ifdef HAS_GPS
|
||||||
"GPS"
|
"GPS"
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *display_items[] =
|
const char *display_items[] =
|
||||||
|
|
@ -129,12 +137,14 @@ const char *display_items[] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef HAS_GPS
|
||||||
const char *settings_gps_items[] =
|
const char *settings_gps_items[] =
|
||||||
{
|
{
|
||||||
"GPS Enabled",
|
"GPS Enabled",
|
||||||
"GPS Set Time",
|
"GPS Set Time",
|
||||||
"UTC Timezone"
|
"UTC Timezone"
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *info_items[] =
|
const char *info_items[] =
|
||||||
{
|
{
|
||||||
|
|
@ -160,7 +170,9 @@ const char *authors[] =
|
||||||
const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]);
|
const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]);
|
||||||
const uint8_t settings_num = sizeof(settings_items)/sizeof(settings_items[0]);
|
const uint8_t settings_num = sizeof(settings_items)/sizeof(settings_items[0]);
|
||||||
const uint8_t display_num = sizeof(display_items)/sizeof(display_items[0]);
|
const uint8_t display_num = sizeof(display_items)/sizeof(display_items[0]);
|
||||||
|
#ifdef HAS_GPS
|
||||||
const uint8_t settings_gps_num = sizeof(settings_gps_items)/sizeof(settings_gps_items[0]);
|
const uint8_t settings_gps_num = sizeof(settings_gps_items)/sizeof(settings_gps_items[0]);
|
||||||
|
#endif
|
||||||
const uint8_t info_num = sizeof(info_items)/sizeof(info_items[0]);
|
const uint8_t info_num = sizeof(info_items)/sizeof(info_items[0]);
|
||||||
const uint8_t author_num = sizeof(authors)/sizeof(authors[0]);
|
const uint8_t author_num = sizeof(authors)/sizeof(authors[0]);
|
||||||
|
|
||||||
|
|
@ -819,33 +831,24 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
else if(msg.keys & KEY_ENTER)
|
else if(msg.keys & KEY_ENTER)
|
||||||
{
|
{
|
||||||
// Open selected menu item
|
// Open selected menu item
|
||||||
switch(ui_state.menu_selected)
|
if(strcmp(menu_items[ui_state.menu_selected], "Zone") == 0)
|
||||||
{
|
state.ui_screen = MENU_ZONE;
|
||||||
case 0:
|
else if(strcmp(menu_items[ui_state.menu_selected], "Channels") == 0)
|
||||||
state.ui_screen = MENU_ZONE;
|
state.ui_screen = MENU_CHANNEL;
|
||||||
break;
|
else if(strcmp(menu_items[ui_state.menu_selected], "Contacts") == 0)
|
||||||
case 1:
|
state.ui_screen = MENU_CONTACTS;
|
||||||
state.ui_screen = MENU_CHANNEL;
|
else if(strcmp(menu_items[ui_state.menu_selected], "Messages") == 0)
|
||||||
break;
|
state.ui_screen = MENU_TOP;
|
||||||
case 2:
|
else if(strcmp(menu_items[ui_state.menu_selected], "GPS") == 0)
|
||||||
state.ui_screen = MENU_CONTACTS;
|
state.ui_screen = MENU_GPS;
|
||||||
break;
|
else if(strcmp(menu_items[ui_state.menu_selected], "Settings") == 0)
|
||||||
case 4:
|
state.ui_screen = MENU_SETTINGS;
|
||||||
state.ui_screen = MENU_GPS;
|
else if(strcmp(menu_items[ui_state.menu_selected], "Info") == 0)
|
||||||
break;
|
state.ui_screen = MENU_INFO;
|
||||||
// TODO: Add missing submenu states
|
else if(strcmp(menu_items[ui_state.menu_selected], "About") == 0)
|
||||||
case 5:
|
state.ui_screen = MENU_ABOUT;
|
||||||
state.ui_screen = MENU_SETTINGS;
|
else
|
||||||
break;
|
state.ui_screen = MENU_TOP;
|
||||||
case 6:
|
|
||||||
state.ui_screen = MENU_INFO;
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
state.ui_screen = MENU_ABOUT;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
state.ui_screen = MENU_TOP;
|
|
||||||
}
|
|
||||||
// Reset menu selection
|
// Reset menu selection
|
||||||
ui_state.menu_selected = 0;
|
ui_state.menu_selected = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -925,11 +928,13 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
_ui_menuBack(MENU_TOP);
|
_ui_menuBack(MENU_TOP);
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAS_GPS
|
||||||
// GPS menu screen
|
// GPS menu screen
|
||||||
case MENU_GPS:
|
case MENU_GPS:
|
||||||
if(msg.keys & KEY_ESC)
|
if(msg.keys & KEY_ESC)
|
||||||
_ui_menuBack(MENU_TOP);
|
_ui_menuBack(MENU_TOP);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
// Settings menu screen
|
// Settings menu screen
|
||||||
case MENU_SETTINGS:
|
case MENU_SETTINGS:
|
||||||
if(msg.keys & KEY_UP)
|
if(msg.keys & KEY_UP)
|
||||||
|
|
@ -942,8 +947,10 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
state.ui_screen = SETTINGS_TIMEDATE;
|
state.ui_screen = SETTINGS_TIMEDATE;
|
||||||
else if(strcmp(settings_items[ui_state.menu_selected], "Display") == 0)
|
else if(strcmp(settings_items[ui_state.menu_selected], "Display") == 0)
|
||||||
state.ui_screen = SETTINGS_DISPLAY;
|
state.ui_screen = SETTINGS_DISPLAY;
|
||||||
|
#ifdef HAS_GPS
|
||||||
else if(strcmp(settings_items[ui_state.menu_selected], "GPS") == 0)
|
else if(strcmp(settings_items[ui_state.menu_selected], "GPS") == 0)
|
||||||
state.ui_screen = SETTINGS_GPS;
|
state.ui_screen = SETTINGS_GPS;
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
state.ui_screen = MENU_TOP;
|
state.ui_screen = MENU_TOP;
|
||||||
// Reset menu selection
|
// Reset menu selection
|
||||||
|
|
@ -1046,6 +1053,7 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
_ui_menuBack(MENU_SETTINGS);
|
_ui_menuBack(MENU_SETTINGS);
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAS_GPS
|
||||||
case SETTINGS_GPS:
|
case SETTINGS_GPS:
|
||||||
if(msg.keys & KEY_LEFT || msg.keys & KEY_RIGHT ||
|
if(msg.keys & KEY_LEFT || msg.keys & KEY_RIGHT ||
|
||||||
((msg.keys & KEY_UP || msg.keys & KEY_DOWN) && ui_state.edit_mode))
|
((msg.keys & KEY_UP || msg.keys & KEY_DOWN) && ui_state.edit_mode))
|
||||||
|
|
@ -1083,6 +1091,7 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
_ui_menuBack(MENU_SETTINGS);
|
_ui_menuBack(MENU_SETTINGS);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1125,10 +1134,12 @@ void ui_updateGUI()
|
||||||
case MENU_CONTACTS:
|
case MENU_CONTACTS:
|
||||||
_ui_drawMenuContacts(&ui_state);
|
_ui_drawMenuContacts(&ui_state);
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAS_GPS
|
||||||
// GPS menu screen
|
// GPS menu screen
|
||||||
case MENU_GPS:
|
case MENU_GPS:
|
||||||
_ui_drawMenuGPS();
|
_ui_drawMenuGPS();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
// Settings menu screen
|
// Settings menu screen
|
||||||
case MENU_SETTINGS:
|
case MENU_SETTINGS:
|
||||||
_ui_drawMenuSettings(&ui_state);
|
_ui_drawMenuSettings(&ui_state);
|
||||||
|
|
@ -1155,10 +1166,12 @@ void ui_updateGUI()
|
||||||
case SETTINGS_DISPLAY:
|
case SETTINGS_DISPLAY:
|
||||||
_ui_drawSettingsDisplay(&ui_state);
|
_ui_drawSettingsDisplay(&ui_state);
|
||||||
break;
|
break;
|
||||||
|
#ifdef HAS_GPS
|
||||||
// GPS settings screen
|
// GPS settings screen
|
||||||
case SETTINGS_GPS:
|
case SETTINGS_GPS:
|
||||||
_ui_drawSettingsGPS(&ui_state);
|
_ui_drawSettingsGPS(&ui_state);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
// Low battery screen
|
// Low battery screen
|
||||||
case LOW_BAT:
|
case LOW_BAT:
|
||||||
_ui_drawLowBatteryScreen();
|
_ui_drawLowBatteryScreen();
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@
|
||||||
/* Device has a working real time clock */
|
/* Device has a working real time clock */
|
||||||
#define HAS_RTC
|
#define HAS_RTC
|
||||||
|
|
||||||
|
/* Device supports an optional GPS chip */
|
||||||
|
#define HAS_GPS
|
||||||
|
|
||||||
/* Device has a channel selection knob */
|
/* Device has a channel selection knob */
|
||||||
#define HAS_ABSOLUTE_KNOB
|
#define HAS_ABSOLUTE_KNOB
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,9 @@
|
||||||
/* Device has a working real time clock */
|
/* Device has a working real time clock */
|
||||||
#define HAS_RTC
|
#define HAS_RTC
|
||||||
|
|
||||||
|
/* Device supports an optional GPS chip */
|
||||||
|
#define HAS_GPS
|
||||||
|
|
||||||
/* Supported radio bands */
|
/* Supported radio bands */
|
||||||
#define BAND_VHF
|
#define BAND_VHF
|
||||||
#define BAND_UHF
|
#define BAND_UHF
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@
|
||||||
/* Device has a working real time clock */
|
/* Device has a working real time clock */
|
||||||
#define HAS_RTC
|
#define HAS_RTC
|
||||||
|
|
||||||
|
/* Device supports an optional GPS chip */
|
||||||
|
#define HAS_GPS
|
||||||
|
|
||||||
/* Supported radio bands */
|
/* Supported radio bands */
|
||||||
#define BAND_VHF
|
#define BAND_VHF
|
||||||
#define BAND_UHF
|
#define BAND_UHF
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue