First step for a new MODULES / RX VERSION screen
This commit is contained in:
@@ -20,6 +20,32 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
#if defined(PXX2)
|
||||
void menuRadioModulesVersion(event_t event)
|
||||
{
|
||||
if (event == EVT_ENTRY) {
|
||||
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_GET_HARDWARE_INFO;
|
||||
reusableBuffer.hardware.modules[INTERNAL_MODULE].step = -1;
|
||||
reusableBuffer.hardware.modules[INTERNAL_MODULE].timeout = 0;
|
||||
}
|
||||
|
||||
SIMPLE_SUBMENU("MODULES / RX VERSION", 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
enum MenuRadioVersionItems
|
||||
{
|
||||
ITEM_RADIO_VERSION_FIRST = HEADER_LINE - 1,
|
||||
#if defined(PXX2)
|
||||
ITEM_RADIO_MODULES_VERSION,
|
||||
#endif
|
||||
#if defined(EEPROM_RLC)
|
||||
ITEM_RADIO_BACKUP_EEPROM,
|
||||
ITEM_RADIO_FACTORY_RESET,
|
||||
#endif
|
||||
ITEM_RADIO_VERSION_COUNT
|
||||
};
|
||||
|
||||
void menuRadioVersion(event_t event)
|
||||
{
|
||||
#if defined(EEPROM_RLC)
|
||||
@@ -31,40 +57,46 @@ void menuRadioVersion(event_t event)
|
||||
}
|
||||
#endif
|
||||
|
||||
SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, MENU_RADIO_VERSION, 1);
|
||||
SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, MENU_RADIO_VERSION, ITEM_RADIO_VERSION_COUNT);
|
||||
|
||||
lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+FH, vers_stamp);
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1;
|
||||
lcdDrawTextAlignedLeft(y, vers_stamp);
|
||||
y += 4*FH;
|
||||
// TODO this was good on AVR radios, but horrible now ...
|
||||
|
||||
#if defined(COPROCESSOR)
|
||||
if (Coproc_valid == 1) {
|
||||
lcdDrawTextAlignedLeft(6*FH, "CoPr:");
|
||||
lcdDraw8bitsNumber(10*FW, 6*FH, Coproc_read);
|
||||
lcdDrawTextAlignedLeft(y, "CoPr:");
|
||||
lcdDraw8bitsNumber(10*FW, y, Coproc_read);
|
||||
}
|
||||
else {
|
||||
lcdDrawTextAlignedLeft(6*FH, "CoPr: ---");
|
||||
lcdDrawTextAlignedLeft(y, "CoPr: ---");
|
||||
}
|
||||
#elif defined(EEPROM_RLC)
|
||||
lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+5*FH+1, STR_EEBACKUP);
|
||||
lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+6*FH+1, STR_FACTORYRESET);
|
||||
lcdDrawFilledRect(0, MENU_HEADER_HEIGHT+5*FH, LCD_W, 2*FH+1, SOLID);
|
||||
y += FH;
|
||||
#endif
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
killEvents(KEY_ENTER);
|
||||
if (IS_SHIFT_PRESSED()) {
|
||||
POPUP_CONFIRMATION(STR_CONFIRMRESET);
|
||||
}
|
||||
else {
|
||||
eepromBackup();
|
||||
}
|
||||
#if defined(PXX2)
|
||||
lcdDrawText(0, y, BUTTON("Modules / RX version"), menuVerticalPosition == ITEM_RADIO_MODULES_VERSION ? INVERS : 0);
|
||||
y += FH;
|
||||
if (menuVerticalPosition == ITEM_RADIO_MODULES_VERSION && event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
s_editMode = EDIT_SELECT_FIELD;
|
||||
pushMenu(menuRadioModulesVersion);
|
||||
}
|
||||
#else
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
#endif
|
||||
|
||||
#if defined(EEPROM_RLC)
|
||||
lcdDrawText(0, y, BUTTON(TR_EEBACKUP), menuVerticalPosition == ITEM_RADIO_BACKUP_EEPROM ? INVERS : 0);
|
||||
y += FH;
|
||||
if (menuVerticalPosition == ITEM_RADIO_BACKUP_EEPROM && event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
s_editMode = EDIT_SELECT_FIELD;
|
||||
eepromBackup();
|
||||
}
|
||||
else if (event == EVT_KEY_LONG(KEY_MENU)) {
|
||||
|
||||
lcdDrawText(0, y, BUTTON(TR_FACTORYRESET), menuVerticalPosition == ITEM_RADIO_FACTORY_RESET ? INVERS : 0);
|
||||
// y += FH;
|
||||
if (menuVerticalPosition == ITEM_RADIO_FACTORY_RESET && event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
s_editMode = EDIT_SELECT_FIELD;
|
||||
POPUP_CONFIRMATION(STR_CONFIRMRESET);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1168,6 +1168,13 @@ union ReusableBuffer
|
||||
} sdmanager;
|
||||
#endif
|
||||
|
||||
struct {
|
||||
struct {
|
||||
int8_t step;
|
||||
uint8_t timeout;
|
||||
} modules[NUM_MODULES];
|
||||
} hardware;
|
||||
|
||||
struct {
|
||||
uint8_t stickMode;
|
||||
} generalSettings;
|
||||
|
||||
@@ -76,7 +76,8 @@ enum ModuleSettingsMode
|
||||
MODULE_MODE_BIND,
|
||||
MODULE_MODE_REGISTER,
|
||||
MODULE_MODE_SPECTRUM_ANALYSER,
|
||||
MODULE_MODE_SHARE
|
||||
MODULE_MODE_SHARE,
|
||||
MODULE_MODE_GET_HARDWARE_INFO
|
||||
};
|
||||
|
||||
PACK(struct ModuleSettings {
|
||||
|
||||
@@ -104,6 +104,24 @@ void Pxx2Pulses::setupChannelsFrame(uint8_t module)
|
||||
}
|
||||
}
|
||||
|
||||
void Pxx2Pulses::setupHardwareInfoFrame(uint8_t module)
|
||||
{
|
||||
if (reusableBuffer.hardware.modules[module].step >= -1 && reusableBuffer.hardware.modules[module].step < PXX2_MAX_RECEIVERS_PER_MODULE) {
|
||||
if (reusableBuffer.hardware.modules[module].timeout == 0) {
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_HW_INFO);
|
||||
Pxx2Transport::addByte(reusableBuffer.hardware.modules[module].step);
|
||||
reusableBuffer.hardware.modules[module].timeout = 20;
|
||||
reusableBuffer.hardware.modules[module].step++;
|
||||
}
|
||||
else {
|
||||
reusableBuffer.hardware.modules[module].timeout--;
|
||||
}
|
||||
}
|
||||
else {
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
void Pxx2Pulses::setupRegisterFrame(uint8_t module)
|
||||
{
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER);
|
||||
@@ -194,7 +212,9 @@ void Pxx2Pulses::setupFrame(uint8_t module)
|
||||
|
||||
uint8_t mode = moduleSettings[module].mode;
|
||||
|
||||
if (mode == MODULE_MODE_REGISTER)
|
||||
if (mode == MODULE_MODE_GET_HARDWARE_INFO)
|
||||
setupHardwareInfoFrame(module);
|
||||
else if (mode == MODULE_MODE_REGISTER)
|
||||
setupRegisterFrame(module);
|
||||
else if (mode == MODULE_MODE_BIND)
|
||||
setupBindFrame(module);
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#define PXX2_TYPE_ID_BIND 0x02
|
||||
#define PXX2_TYPE_ID_CHANNELS 0x03
|
||||
#define PXX2_TYPE_ID_RX_SETUP 0x05
|
||||
#define PXX2_TYPE_ID_HW_INFO 0x06
|
||||
#define PXX2_TYPE_ID_TELEMETRY 0xFE
|
||||
|
||||
#define PXX2_TYPE_C_POWER_METER 0x02
|
||||
@@ -103,6 +104,8 @@ class Pxx2Pulses: public PxxPulses<Pxx2Transport> {
|
||||
void setupFrame(uint8_t module);
|
||||
|
||||
protected:
|
||||
void setupHardwareInfoFrame(uint8_t module);
|
||||
|
||||
void setupRegisterFrame(uint8_t module);
|
||||
|
||||
void setupBindFrame(uint8_t module);
|
||||
|
||||
@@ -1027,20 +1027,11 @@
|
||||
#define TR_SCRIPT "Script"
|
||||
#define TR_INPUTS "Inputs"
|
||||
#define TR_OUTPUTS "Outputs"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_EEBACKUP "EEPROM backup"
|
||||
#define TR_FACTORYRESET "Factory reset"
|
||||
#elif defined(PCBXLITE)
|
||||
#define TR_EEBACKUP "\001[ENT. Long]: Backup"
|
||||
#define TR_FACTORYRESET "\001[\300ENT. Long]: Fact. reset"
|
||||
#else
|
||||
#define TR_EEBACKUP TR("\001[ENTER Long]: Backup", "\012[ENTER Long]: EEPROM backup")
|
||||
#define TR_FACTORYRESET TR("\001[MENU Long]: Fact. reset", "\012[MENU Long]: Factory reset")
|
||||
#endif
|
||||
#define TR_CONFIRMRESET TR("Erase ALL", "Erase ALL models and settings?")
|
||||
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
|
||||
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name"
|
||||
#define TR_PHASES_HEADERS_SW "Switch"
|
||||
|
||||
Reference in New Issue
Block a user