mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 01:05:10 +03:00
Compilation problem when !FRSKY
Rotary encoder navigation on v4 Some cleaning on code
This commit is contained in:
parent
03fd1e3b01
commit
1ed8d7ca44
10 changed files with 144 additions and 102 deletions
|
@ -176,7 +176,7 @@ void menuProcModelSelect(uint8_t event)
|
|||
}
|
||||
|
||||
uint8_t _event = (s_warning ? 0 : event);
|
||||
uint8_t _event_ = _event;
|
||||
uint8_t _event_ = (IS_RE1_EVT(_event) ? 0 : _event);
|
||||
|
||||
if (s_copyMode || !EFile::exists(FILE_MODEL(g_eeGeneral.currModel))) {
|
||||
if ((_event & 0x1f) == KEY_EXIT)
|
||||
|
@ -190,7 +190,14 @@ void menuProcModelSelect(uint8_t event)
|
|||
lcd_puts(9*FW-(LEN_FREE-4)*FW, 0, STR_FREE);
|
||||
lcd_outdezAtt( 17*FW, 0, EeFsGetFree(),0);
|
||||
|
||||
DisplayScreenIndex(e_ModelSelect, DIM(menuTabModel), INVERS);
|
||||
DisplayScreenIndex(e_ModelSelect, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? INVERS : 0);
|
||||
|
||||
#ifdef NAVIGATION_RE1
|
||||
if (scrollRE > 0 && s_editMode < 0) {
|
||||
chainMenu(menuProcModel);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
switch(_event)
|
||||
{
|
||||
|
@ -199,6 +206,7 @@ void menuProcModelSelect(uint8_t event)
|
|||
s_copyMode = 0; // TODO only this one?
|
||||
s_copyTgtOfs = 0;
|
||||
s_copySrcRow = -1;
|
||||
s_editMode = -1;
|
||||
break;
|
||||
case EVT_KEY_LONG(KEY_EXIT):
|
||||
if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && EFile::exists(FILE_MODEL(sub))) {
|
||||
|
@ -216,6 +224,12 @@ void menuProcModelSelect(uint8_t event)
|
|||
killEvents(_event);
|
||||
}
|
||||
break;
|
||||
#ifdef NAVIGATION_RE1
|
||||
case EVT_KEY_BREAK(BTN_RE1):
|
||||
s_editMode = (s_editMode == 0 && sub == g_eeGeneral.currModel) ? -1 : 0;
|
||||
break;
|
||||
case EVT_KEY_LONG(BTN_RE1):
|
||||
#endif
|
||||
case EVT_KEY_LONG(KEY_MENU):
|
||||
case EVT_KEY_BREAK(KEY_MENU):
|
||||
if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) {
|
||||
|
@ -250,7 +264,10 @@ void menuProcModelSelect(uint8_t event)
|
|||
s_copyTgtOfs = 0;
|
||||
return;
|
||||
}
|
||||
else if (_event == EVT_KEY_LONG(KEY_MENU)) {
|
||||
else if (_event == EVT_KEY_LONG(KEY_MENU) || IS_RE1_EVT_TYPE(_event, EVT_KEY_LONG)) {
|
||||
#ifdef NAVIGATION_RE1
|
||||
s_editMode = -1;
|
||||
#endif
|
||||
displayPopup(STR_LOADINGMODEL);
|
||||
eeCheck(true); // force writing of current model data before this is changed
|
||||
if (g_eeGeneral.currModel != sub) {
|
||||
|
@ -272,7 +289,7 @@ void menuProcModelSelect(uint8_t event)
|
|||
chainMenu(_event == EVT_KEY_FIRST(KEY_RIGHT) ? menuProcModel : menuTabModel[DIM(menuTabModel)-1]);
|
||||
return;
|
||||
}
|
||||
AUDIO_WARNING1(); // TODO it was beepWarn();
|
||||
AUDIO_WARNING1();
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
|
@ -352,42 +369,53 @@ void menuProcModelSelect(uint8_t event)
|
|||
|
||||
void EditName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, bool active, uint8_t & cur)
|
||||
{
|
||||
lcd_putsnAtt(x, y, name, size, ZCHAR | (active ? ((s_editMode>0) ? 0 : INVERS) : 0));
|
||||
|
||||
if (active) {
|
||||
if (s_editMode>0) {
|
||||
uint8_t next = cur;
|
||||
char c = name[next];
|
||||
char v = c;
|
||||
if (p1valdiff || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP)
|
||||
|| event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) {
|
||||
v = checkIncDec(event, abs(v), 0, ZCHAR_MAX, 0);
|
||||
if (c < 0) v = -v;
|
||||
STORE_MODELVARS;
|
||||
}
|
||||
|
||||
switch(event) {
|
||||
case EVT_KEY_BREAK(KEY_LEFT):
|
||||
if (cur>0) cur--;
|
||||
if (next>0) next--;
|
||||
break;
|
||||
case EVT_KEY_BREAK(KEY_RIGHT):
|
||||
if (cur<size-1) cur++;
|
||||
if (next<size-1) next++;
|
||||
break;
|
||||
#ifdef NAVIGATION_RE1
|
||||
case EVT_KEY_LONG(BTN_RE1):
|
||||
if (v==0) {
|
||||
s_editMode = 0;
|
||||
killEvents(BTN_RE1);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case EVT_KEY_LONG(KEY_LEFT):
|
||||
case EVT_KEY_LONG(KEY_RIGHT):
|
||||
if (v>=-26 && v<=26) {
|
||||
v = -v; // toggle case
|
||||
STORE_MODELVARS; // TODO optim if (c!=v) at the end
|
||||
if (event==EVT_KEY_LONG(KEY_LEFT))
|
||||
killEvents(KEY_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
name[cur] = v;
|
||||
lcd_putcAtt(x+cur*FW, y, idx2char(v), INVERS);
|
||||
cur = next;
|
||||
}
|
||||
else {
|
||||
cur = m_posHorz = 0;
|
||||
cur = 0;
|
||||
}
|
||||
}
|
||||
|
||||
lcd_putsnAtt(x, y, name, size, ZCHAR | (active ? ((s_editMode>0) ? 0 : INVERS) : 0));
|
||||
if (active && s_editMode>0) {
|
||||
char c = name[cur];
|
||||
char v = c;
|
||||
if (p1valdiff || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP)
|
||||
|| event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) {
|
||||
v = checkIncDec(event, abs(v), 0, ZCHAR_MAX, 0);
|
||||
if (c < 0) v = -v;
|
||||
STORE_MODELVARS;
|
||||
}
|
||||
|
||||
if (v>=-26 && v<=26 && (event==EVT_KEY_LONG(KEY_RIGHT) || event==EVT_KEY_LONG(KEY_LEFT))) {
|
||||
v = -v; // toggle case
|
||||
STORE_MODELVARS;
|
||||
if (event==EVT_KEY_LONG(KEY_LEFT))
|
||||
killEvents(KEY_LEFT);
|
||||
}
|
||||
name[cur] = v;
|
||||
lcd_putcAtt(x+cur*FW, y, idx2char(v), INVERS);
|
||||
}
|
||||
}
|
||||
|
||||
#undef PARAM_OFS
|
||||
|
@ -395,7 +423,7 @@ void EditName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, boo
|
|||
void menuProcModel(uint8_t event)
|
||||
{
|
||||
lcd_outdezNAtt(7*FW,0,g_eeGeneral.currModel+1,INVERS+LEADING0,2);
|
||||
MENU(STR_MENUSETUP, menuTabModel, e_Model, (g_model.protocol==PROTO_PPM||g_model.protocol==PROTO_DSM2||g_model.protocol==PROTO_PXX ? 12 : 11), {0,sizeof(g_model.name)-1,2,2,0,0,0,0,0,6,2,1});
|
||||
MENU(STR_MENUSETUP, menuTabModel, e_Model, (g_model.protocol==PROTO_PPM||g_model.protocol==PROTO_DSM2||g_model.protocol==PROTO_PXX ? 12 : 11), {0,ZCHAR|sizeof(g_model.name)-1,2,2,0,0,0,0,0,6,2,1});
|
||||
|
||||
uint8_t sub = m_posVert;
|
||||
uint8_t y = 1*FH;
|
||||
|
@ -519,7 +547,7 @@ void menuProcModel(uint8_t event)
|
|||
else if (sub==subN) {
|
||||
m_posHorz = 0;
|
||||
}
|
||||
if (sub==subN && (s_editMode>0 || p1valdiff || (g_model.protocol!=0 && g_model.protocol!=PROTO_DSM2))) { // TODO avoid DSM2 when not defined
|
||||
if (sub==subN && (s_editMode>0 || p1valdiff || (g_model.protocol!=0/*TODO constant*/ && g_model.protocol!=PROTO_DSM2))) { // TODO avoid DSM2 when not defined
|
||||
switch (m_posHorz) {
|
||||
case 0:
|
||||
CHECK_INCDEC_MODELVAR(event,g_model.protocol,0,PROTO_MAX-1);
|
||||
|
@ -596,7 +624,7 @@ void menuProcPhaseOne(uint8_t event)
|
|||
PhaseData *phase = phaseaddress(s_currIdx);
|
||||
putsFlightPhase(13*FW, 0, s_currIdx+1, 0);
|
||||
|
||||
SUBMENU(STR_MENUFLIGHTPHASE, (s_currIdx==0 ? 3 : 5), {6, 0, 3/*, 0, 0*/});
|
||||
SUBMENU(STR_MENUFLIGHTPHASE, (s_currIdx==0 ? 3 : 5), {ZCHAR|sizeof(phase->name)-1, 0, 3/*, 0, 0*/});
|
||||
|
||||
int8_t sub = m_posVert;
|
||||
|
||||
|
@ -657,7 +685,11 @@ void menuProcPhasesAll(uint8_t event)
|
|||
|
||||
switch (event) {
|
||||
case EVT_KEY_FIRST(KEY_MENU):
|
||||
#ifdef NAVIGATION_RE1
|
||||
case EVT_KEY_BREAK(BTN_RE1):
|
||||
#endif
|
||||
if (sub == MAX_PHASES) {
|
||||
s_editMode = 0;
|
||||
trimsCheckTimer = 200; // 2 seconds
|
||||
}
|
||||
// no break
|
||||
|
@ -1801,43 +1833,6 @@ void menuProcFunctionSwitches(uint8_t event)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
void menuProcSafetySwitches(uint8_t event)
|
||||
{
|
||||
MENU(STR_MENUSAFETYSWITCHES, menuTabModel, e_SafetySwitches, NUM_CHNOUT+1, {0, 1/*repeated*/});
|
||||
|
||||
uint8_t y = 0;
|
||||
uint8_t k = 0;
|
||||
|
||||
for(uint8_t i=0; i<7; i++){
|
||||
y=(i+1)*FH;
|
||||
k=i+s_pgOfs;
|
||||
if(k==NUM_CHNOUT) break;
|
||||
SafetySwData *sd = &g_model.safetySw[k];
|
||||
putsChn(0,y,k+1,0);
|
||||
for(uint8_t j=0; j<=2;j++){
|
||||
uint8_t attr = ((m_posVert-1==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
|
||||
uint8_t active = (attr && (s_editMode>0 || p1valdiff));
|
||||
switch(j)
|
||||
{
|
||||
case 0:
|
||||
putsSwitches(6*FW, y, sd->swtch , attr);
|
||||
if (active) {
|
||||
CHECK_INCDEC_MODELVAR( event, sd->swtch, -MAX_SWITCH, MAX_SWITCH);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
lcd_outdezAtt(16*FW, y, sd->val, attr);
|
||||
if (active) {
|
||||
CHECK_INCDEC_MODELVAR( event, sd->val, -125, 125);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FRSKY
|
||||
#define TELEM_COL2 (9*FW+2)
|
||||
void menuProcTelemetry(uint8_t event)
|
||||
|
@ -1852,7 +1847,7 @@ void menuProcTelemetry(uint8_t event)
|
|||
uint8_t blink;
|
||||
uint8_t y;
|
||||
|
||||
switch(event){
|
||||
switch (event) {
|
||||
case EVT_KEY_BREAK(KEY_DOWN):
|
||||
case EVT_KEY_BREAK(KEY_UP):
|
||||
case EVT_KEY_BREAK(KEY_LEFT):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue