First step for a new MODULES / RX VERSION screen

This commit is contained in:
Bertrand Songis
2019-03-06 11:25:12 +01:00
parent ac08a7be66
commit ca4ffaf9c7
6 changed files with 87 additions and 33 deletions
+54 -22
View File
@@ -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
}
+7
View File
@@ -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;
+2 -1
View File
@@ -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 {
+21 -1
View File
@@ -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);
+3
View File
@@ -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);
-9
View File
@@ -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"