1
0
Fork 0
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:
bsongis 2012-02-16 22:40:02 +00:00
parent 03fd1e3b01
commit 1ed8d7ca44
10 changed files with 144 additions and 102 deletions

View file

@ -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):