1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

Rotary encoder refactoring

This commit is contained in:
Bertrand Songis 2019-04-30 14:55:21 +02:00
parent 4f6828aa1c
commit c28210e3e4
60 changed files with 363 additions and 652 deletions

View file

@ -963,7 +963,7 @@ int cliDisplay(const char ** argv)
serialPrint("[%s] = %s", name, keyState(i) ? "on" : "off"); serialPrint("[%s] = %s", name, keyState(i) ? "on" : "off");
} }
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
serialPrint("[Enc.] = %d", rotencValue[0] / ROTARY_ENCODER_GRANULARITY); serialPrint("[Enc.] = %d", rotencValue / ROTARY_ENCODER_GRANULARITY);
#endif #endif
for (int i=TRM_BASE; i<=TRM_LAST; i++) { for (int i=TRM_BASE; i<=TRM_LAST; i++) {
serialPrint("[Trim%d] = %s", i-TRM_BASE, keyState(i) ? "on" : "off"); serialPrint("[Trim%d] = %s", i-TRM_BASE, keyState(i) ? "on" : "off");

View file

@ -144,17 +144,6 @@ enum CurveType {
#define XPOTS_MULTIPOS_COUNT 6 #define XPOTS_MULTIPOS_COUNT 6
#if defined(PCBSKY9X) && defined(REVX)
#define MAX_ROTARY_ENCODERS 1
#define NUM_ROTARY_ENCODERS 0
#elif defined(PCBSKY9X)
#define MAX_ROTARY_ENCODERS 1
#define NUM_ROTARY_ENCODERS 1
#else
#define MAX_ROTARY_ENCODERS 0
#define NUM_ROTARY_ENCODERS 0
#endif
#if defined(COLORLCD) #if defined(COLORLCD)
enum MainViews { enum MainViews {
VIEW_BLANK, VIEW_BLANK,
@ -607,11 +596,6 @@ enum MixSources {
MIXSRC_GYRO2, LUA_EXPORT("gyry", "Gyro Y") MIXSRC_GYRO2, LUA_EXPORT("gyry", "Gyro Y")
#endif #endif
#if defined(PCBSKY9X)
MIXSRC_REa,
MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REa,
#endif
MIXSRC_MAX, MIXSRC_MAX,
MIXSRC_FIRST_HELI, MIXSRC_FIRST_HELI,
@ -799,12 +783,6 @@ enum ResetFunctionParam {
FUNC_RESET_FLIGHT, FUNC_RESET_FLIGHT,
#if defined(TELEMETRY_FRSKY) #if defined(TELEMETRY_FRSKY)
FUNC_RESET_TELEMETRY, FUNC_RESET_TELEMETRY,
#endif
#if ROTARY_ENCODERS > 0
FUNC_RESET_ROTENC1,
#endif
#if ROTARY_ENCODERS > 1
FUNC_RESET_ROTENC2,
#endif #endif
FUNC_RESET_PARAM_FIRST_TELEM, FUNC_RESET_PARAM_FIRST_TELEM,
FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + MAX_TELEMETRY_SENSORS, FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + MAX_TELEMETRY_SENSORS,

View file

@ -185,12 +185,6 @@ PACK(struct trim_t {
typedef int16_t gvar_t; typedef int16_t gvar_t;
#if MAX_ROTARY_ENCODERS > 0
#define FLIGHT_MODE_ROTARY_ENCODERS_FIELD int16_t rotaryEncoders[MAX_ROTARY_ENCODERS];
#else
#define FLIGHT_MODE_ROTARY_ENCODERS_FIELD
#endif
PACK(struct FlightModeData { PACK(struct FlightModeData {
trim_t trim[NUM_TRIMS]; trim_t trim[NUM_TRIMS];
NOBACKUP(char name[LEN_FLIGHT_MODE_NAME]); NOBACKUP(char name[LEN_FLIGHT_MODE_NAME]);
@ -198,7 +192,6 @@ PACK(struct FlightModeData {
int16_t spare:7; int16_t spare:7;
uint8_t fadeIn; uint8_t fadeIn;
uint8_t fadeOut; uint8_t fadeOut;
FLIGHT_MODE_ROTARY_ENCODERS_FIELD
gvar_t gvars[MAX_GVARS]; gvar_t gvars[MAX_GVARS];
}); });
@ -866,7 +859,7 @@ static inline void check_struct()
CHKSIZE(ExpoData, 17); CHKSIZE(ExpoData, 17);
CHKSIZE(LimitData, 11); CHKSIZE(LimitData, 11);
CHKSIZE(CustomFunctionData, 9); CHKSIZE(CustomFunctionData, 9);
CHKSIZE(FlightModeData, 38); CHKSIZE(FlightModeData, 36);
CHKSIZE(TimerData, 11); CHKSIZE(TimerData, 11);
CHKSIZE(SwashRingData, 8); CHKSIZE(SwashRingData, 8);
CHKSIZE(FrSkyBarData, 5); CHKSIZE(FrSkyBarData, 5);
@ -917,7 +910,7 @@ static inline void check_struct()
CHKSIZE(ModelData, 6601); CHKSIZE(ModelData, 6601);
#elif defined(PCBSKY9X) #elif defined(PCBSKY9X)
CHKSIZE(RadioData, 735); CHKSIZE(RadioData, 735);
CHKSIZE(ModelData, 5319); CHKSIZE(ModelData, 5301);
#elif defined(PCBHORUS) #elif defined(PCBHORUS)
CHKSIZE(RadioData, 855); CHKSIZE(RadioData, 855);
CHKSIZE(ModelData, 9734); CHKSIZE(ModelData, 9734);

View file

@ -130,10 +130,6 @@ void evalFunctions(const CustomFunctionData * functions, CustomFunctionsContext
uint8_t playFirstIndex = (functions == g_model.customFn ? 1 : 1+MAX_SPECIAL_FUNCTIONS); uint8_t playFirstIndex = (functions == g_model.customFn ? 1 : 1+MAX_SPECIAL_FUNCTIONS);
#define PLAY_INDEX (i+playFirstIndex) #define PLAY_INDEX (i+playFirstIndex)
#if defined(ROTARY_ENCODERS) && defined(GVARS)
static rotenc_t rePreviousValues[ROTARY_ENCODERS];
#endif
#if defined(OVERRIDE_CHANNEL_FUNCTION) #if defined(OVERRIDE_CHANNEL_FUNCTION)
for (uint8_t i=0; i<MAX_OUTPUT_CHANNELS; i++) { for (uint8_t i=0; i<MAX_OUTPUT_CHANNELS; i++) {
safetyCh[i] = OVERRIDE_CHANNEL_UNDEFINED; safetyCh[i] = OVERRIDE_CHANNEL_UNDEFINED;
@ -203,15 +199,6 @@ void evalFunctions(const CustomFunctionData * functions, CustomFunctionsContext
telemetryReset(); telemetryReset();
break; break;
#endif #endif
#if ROTARY_ENCODERS > 0
case FUNC_RESET_ROTENC1:
#if ROTARY_ENCODERS > 1
case FUNC_RESET_ROTENC2:
#endif
rotencValue[CFN_PARAM(cfn)-FUNC_RESET_ROTENC1] = 0;
break;
#endif
} }
if (CFN_PARAM(cfn)>=FUNC_RESET_PARAM_FIRST_TELEM) { if (CFN_PARAM(cfn)>=FUNC_RESET_PARAM_FIRST_TELEM) {
uint8_t item = CFN_PARAM(cfn)-FUNC_RESET_PARAM_FIRST_TELEM; uint8_t item = CFN_PARAM(cfn)-FUNC_RESET_PARAM_FIRST_TELEM;
@ -257,14 +244,6 @@ void evalFunctions(const CustomFunctionData * functions, CustomFunctionsContext
else if (CFN_PARAM(cfn) >= MIXSRC_FIRST_TRIM && CFN_PARAM(cfn) <= MIXSRC_LAST_TRIM) { else if (CFN_PARAM(cfn) >= MIXSRC_FIRST_TRIM && CFN_PARAM(cfn) <= MIXSRC_LAST_TRIM) {
trimGvar[CFN_PARAM(cfn)-MIXSRC_FIRST_TRIM] = CFN_GVAR_INDEX(cfn); trimGvar[CFN_PARAM(cfn)-MIXSRC_FIRST_TRIM] = CFN_GVAR_INDEX(cfn);
} }
#if defined(ROTARY_ENCODERS)
else if (CFN_PARAM(cfn) >= MIXSRC_REa && CFN_PARAM(cfn) < MIXSRC_TrimRud) {
int8_t scroll = rePreviousValues[CFN_PARAM(cfn)-MIXSRC_REa] - (rotencValue[CFN_PARAM(cfn)-MIXSRC_REa] / ROTARY_ENCODER_GRANULARITY);
if (scroll) {
SET_GVAR(CFN_GVAR_INDEX(cfn), limit<int16_t>(MODEL_GVAR_MIN(CFN_GVAR_INDEX(cfn)), GVAR_VALUE(CFN_GVAR_INDEX(cfn), getGVarFlightMode(mixerCurrentFlightMode, CFN_GVAR_INDEX(cfn))) + scroll, MODEL_GVAR_MAX(CFN_GVAR_INDEX(cfn))), mixerCurrentFlightMode);
}
}
#endif
else { else {
SET_GVAR(CFN_GVAR_INDEX(cfn), limit<int16_t>(MODEL_GVAR_MIN(CFN_GVAR_INDEX(cfn)), calcRESXto100(getValue(CFN_PARAM(cfn))), MODEL_GVAR_MAX(CFN_GVAR_INDEX(cfn))), mixerCurrentFlightMode); SET_GVAR(CFN_GVAR_INDEX(cfn), limit<int16_t>(MODEL_GVAR_MIN(CFN_GVAR_INDEX(cfn)), calcRESXto100(getValue(CFN_PARAM(cfn))), MODEL_GVAR_MAX(CFN_GVAR_INDEX(cfn))), mixerCurrentFlightMode);
} }
@ -419,11 +398,5 @@ void evalFunctions(const CustomFunctionData * functions, CustomFunctionsContext
functionsContext.activeSwitches = newActiveSwitches; functionsContext.activeSwitches = newActiveSwitches;
functionsContext.activeFunctions = newActiveFunctions; functionsContext.activeFunctions = newActiveFunctions;
#if defined(ROTARY_ENCODERS) && defined(GVARS)
for (uint8_t i=0; i<ROTARY_ENCODERS; i++) {
rePreviousValues[i] = (rotencValue[i] / ROTARY_ENCODER_GRANULARITY);
}
#endif
} }

View file

@ -235,9 +235,11 @@ void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8
uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay); uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay);
#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay) #define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay)
#define WARNING_TYPE_ASTERISK 0 enum {
#define WARNING_TYPE_CONFIRM 1 WARNING_TYPE_ASTERISK,
#define WARNING_TYPE_INFO 2 WARNING_TYPE_CONFIRM,
WARNING_TYPE_INFO,
};
#define COPY_MODE 1 #define COPY_MODE 1
#define MOVE_MODE 2 #define MOVE_MODE 2
@ -272,14 +274,6 @@ void readModelNotes();
#define CURSOR_MOVED_LEFT(event) (IS_ROTARY_LEFT(event) || EVT_KEY_MASK(event) == KEY_LEFT) #define CURSOR_MOVED_LEFT(event) (IS_ROTARY_LEFT(event) || EVT_KEY_MASK(event) == KEY_LEFT)
#define CURSOR_MOVED_RIGHT(event) (IS_ROTARY_RIGHT(event) || EVT_KEY_MASK(event) == KEY_RIGHT) #define CURSOR_MOVED_RIGHT(event) (IS_ROTARY_RIGHT(event) || EVT_KEY_MASK(event) == KEY_RIGHT)
#if defined(ROTARY_ENCODERS)
#define CASE_EVT_ROTARY_BREAK case EVT_ROTARY_BREAK:
#define CASE_EVT_ROTARY_LONG case EVT_ROTARY_LONG:
#else
#define CASE_EVT_ROTARY_BREAK
#define CASE_EVT_ROTARY_LONG
#endif
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
#define IS_ROTARY_LEFT(evt) (evt == EVT_ROTARY_LEFT) #define IS_ROTARY_LEFT(evt) (evt == EVT_ROTARY_LEFT)
#define IS_ROTARY_RIGHT(evt) (evt == EVT_ROTARY_RIGHT) #define IS_ROTARY_RIGHT(evt) (evt == EVT_ROTARY_RIGHT)

View file

@ -856,22 +856,6 @@ void drawShortTrimMode(coord_t x, coord_t y, uint8_t fm, uint8_t idx, LcdFlags a
} }
} }
#if ROTARY_ENCODERS > 0
void putsRotaryEncoderMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att)
{
int16_t v = flightModeAddress(phase)->rotaryEncoders[idx];
if (v > ROTARY_ENCODER_MAX) {
uint8_t p = v - ROTARY_ENCODER_MAX - 1;
if (p >= phase) p++;
lcdDrawChar(x, y, '0'+p, att);
}
else {
lcdDrawChar(x, y, 'a'+idx, att);
}
}
#endif
void drawValueWithUnit(coord_t x, coord_t y, lcdint_t val, uint8_t unit, LcdFlags att) void drawValueWithUnit(coord_t x, coord_t y, lcdint_t val, uint8_t unit, LcdFlags att)
{ {
// convertUnit(val, unit); // convertUnit(val, unit);

View file

@ -145,10 +145,6 @@ void drawTimerMode(coord_t x, coord_t y, int8_t mode, LcdFlags att=0);
void drawTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att); void drawTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att);
void drawShortTrimMode(coord_t x, coord_t y, uint8_t mode, uint8_t idx, LcdFlags att); void drawShortTrimMode(coord_t x, coord_t y, uint8_t mode, uint8_t idx, LcdFlags att);
#if defined(ROTARY_ENCODERS)
void putsRotaryEncoderMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att);
#endif
#define putsChn(x, y, idx, att) drawSource(x, y, MIXSRC_CH1+idx-1, att) #define putsChn(x, y, idx, att) drawSource(x, y, MIXSRC_CH1+idx-1, att)
void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags attr); void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags attr);

View file

@ -36,7 +36,6 @@ enum MenuModelFlightModeItems {
ITEM_MODEL_FLIGHT_MODE_NAME, ITEM_MODEL_FLIGHT_MODE_NAME,
ITEM_MODEL_FLIGHT_MODE_SWITCH, ITEM_MODEL_FLIGHT_MODE_SWITCH,
ITEM_MODEL_FLIGHT_MODE_TRIMS, ITEM_MODEL_FLIGHT_MODE_TRIMS,
IF_ROTARY_ENCODERS(ITEM_MODEL_FLIGHT_MODE_ROTARY_ENCODERS)
ITEM_MODEL_FLIGHT_MODE_FADE_IN, ITEM_MODEL_FLIGHT_MODE_FADE_IN,
ITEM_MODEL_FLIGHT_MODE_FADE_OUT, ITEM_MODEL_FLIGHT_MODE_FADE_OUT,
#if defined(GVARS) #if defined(GVARS)
@ -72,7 +71,7 @@ void menuModelFlightModeOne(event_t event)
#define VERTICAL_SHIFT (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_SWITCH) #define VERTICAL_SHIFT (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_SWITCH)
static const uint8_t mstate_tab_fm1[] = {0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1}; static const uint8_t mstate_tab_fm1[] = {0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1};
#endif #endif
static const uint8_t mstate_tab_others[] = {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0, 0, (uint8_t)-1, 2, 2, 2, 2, 2}; static const uint8_t mstate_tab_others[] = {0, 0, 3, 0, 0, (uint8_t)-1, 2, 2, 2, 2, 2};
check(event, 0, NULL, 0, (s_currIdx == 0) ? mstate_tab_fm1 : mstate_tab_others, DIM(mstate_tab_others)-1, ITEM_MODEL_FLIGHT_MODE_MAX - HEADER_LINE - (s_currIdx==0 ? (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_SWITCH-1) : 0)); check(event, 0, NULL, 0, (s_currIdx == 0) ? mstate_tab_fm1 : mstate_tab_others, DIM(mstate_tab_others)-1, ITEM_MODEL_FLIGHT_MODE_MAX - HEADER_LINE - (s_currIdx==0 ? (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_SWITCH-1) : 0));
@ -80,7 +79,7 @@ void menuModelFlightModeOne(event_t event)
#define PHASE_ONE_FIRST_LINE (1+1*FH) #define PHASE_ONE_FIRST_LINE (1+1*FH)
#else #else
SUBMENU(STR_MENUFLIGHTMODE, 3 + (s_currIdx==0 ? 0 : 2 + (bool)NUM_ROTARY_ENCODERS), {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0/*, 0*/}); SUBMENU(STR_MENUFLIGHTMODE, 3 + (s_currIdx==0 ? 0 : 2), {0, 0, 3, 0/*, 0*/});
#define PHASE_ONE_FIRST_LINE (1+1*FH) #define PHASE_ONE_FIRST_LINE (1+1*FH)
#endif #endif
@ -121,24 +120,6 @@ void menuModelFlightModeOne(event_t event)
} }
break; break;
#if ROTARY_ENCODERS > 0
case ITEM_MODEL_FLIGHT_MODE_ROTARY_ENCODERS:
lcdDrawTextAlignedLeft(y, STR_ROTARY_ENCODER);
for (uint8_t t=0; t<NUM_ROTARY_ENCODERS; t++) {
putsRotaryEncoderMode(MIXES_2ND_COLUMN+(t*FW), y, s_currIdx, t, menuHorizontalPosition==t ? attr : 0);
if (attr && menuHorizontalPosition == t && editMode > 0) {
int16_t v = flightModeAddress(s_currIdx)->rotaryEncoders[t];
if (v < ROTARY_ENCODER_MAX) v = ROTARY_ENCODER_MAX;
v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_FLIGHT_MODES-1, EE_MODEL);
if (checkIncDec_Ret) {
if (v == ROTARY_ENCODER_MAX) v = 0;
flightModeAddress(s_currIdx)->rotaryEncoders[t] = v;
}
}
}
break;
#endif
case ITEM_MODEL_FLIGHT_MODE_FADE_IN: case ITEM_MODEL_FLIGHT_MODE_FADE_IN:
fm->fadeIn = EDIT_DELAY(0, y, event, attr, STR_FADEIN, fm->fadeIn); fm->fadeIn = EDIT_DELAY(0, y, event, attr, STR_FADEIN, fm->fadeIn);
break; break;
@ -191,19 +172,7 @@ void menuModelFlightModeOne(event_t event)
} }
} }
#if defined(ROTARY_ENCODERS) #if defined(PCBTARANIS)
#if ROTARY_ENCODERS > 2
#define NAME_OFS (-4-12)
#define SWITCH_OFS (-FW/2-2-13)
#define TRIMS_OFS (-FW/2-4-15)
#define ROTARY_ENC_OFS (0)
#else
#define NAME_OFS (-4)
#define SWITCH_OFS (-FW/2-2)
#define TRIMS_OFS (-FW/2-4)
#define ROTARY_ENC_OFS (2)
#endif
#elif defined(PCBTARANIS)
#define NAME_POS 20 #define NAME_POS 20
#define SWITCH_POS 59 #define SWITCH_POS 59
#define TRIMS_POS 79 #define TRIMS_POS 79
@ -220,7 +189,6 @@ void menuModelFlightModesAll(event_t event)
int8_t sub = menuVerticalPosition - HEADER_LINE; int8_t sub = menuVerticalPosition - HEADER_LINE;
switch (event) { switch (event) {
CASE_EVT_ROTARY_BREAK
case EVT_KEY_FIRST(KEY_ENTER): case EVT_KEY_FIRST(KEY_ENTER):
if (sub == MAX_FLIGHT_MODES) { if (sub == MAX_FLIGHT_MODES) {
s_editMode = 0; s_editMode = 0;

View file

@ -382,14 +382,7 @@ void menuModelMixOne(event_t event)
MixData * md2 = mixAddress(s_currIdx) ; MixData * md2 = mixAddress(s_currIdx) ;
putsChn(lcdLastRightPos+1*FW, 0, md2->destCh+1,0); putsChn(lcdLastRightPos+1*FW, 0, md2->destCh+1,0);
#if defined(ROTARY_ENCODERS)
if ((menuVerticalPosition == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) || (menuVerticalPosition == MIX_FIELD_CURVE && md2->curveMode == MODE_CURVE))
SUBMENU_NOTITLE(MIX_FIELD_COUNT, {0, 0, 0, 0, 0, 0, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/})
else
SUBMENU_NOTITLE(MIX_FIELD_COUNT, {0, 0, 0, 0, 1, 1, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); SUBMENU_NOTITLE(MIX_FIELD_COUNT, {0, 0, 0, 0, 1, 1, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/});
#else
SUBMENU_NOTITLE(MIX_FIELD_COUNT, {0, 0, 0, 0, 1, 1, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/});
#endif
int8_t sub = menuVerticalPosition; int8_t sub = menuVerticalPosition;
int8_t editMode = s_editMode; int8_t editMode = s_editMode;
@ -654,7 +647,6 @@ void menuModelExpoMix(uint8_t expo, event_t event)
} }
// no break // no break
CASE_EVT_ROTARY_BREAK
case EVT_KEY_LONG(KEY_ENTER): case EVT_KEY_LONG(KEY_ENTER):
killEvents(event); killEvents(event);
if (s_copyTgtOfs) { if (s_copyTgtOfs) {

View file

@ -113,21 +113,6 @@ void menuModelSelect(event_t event)
} }
break; break;
#if defined(ROTARY_ENCODERS)
case EVT_ROTARY_LONG:
killEvents(event);
if (s_editMode < 0) {
popMenu();
break;
}
else if (!s_copyMode) {
menuVerticalPosition = sub = g_eeGeneral.currModel;
s_copyMode = 0;
s_editMode = EDIT_MODE_INIT;
}
// no break
#endif
case EVT_KEY_BREAK(KEY_EXIT): case EVT_KEY_BREAK(KEY_EXIT):
if (s_copyMode) { if (s_copyMode) {
sub = menuVerticalPosition = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow; sub = menuVerticalPosition = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow;
@ -141,15 +126,6 @@ void menuModelSelect(event_t event)
} }
break; break;
#if defined(ROTARY_ENCODERS)
case EVT_ROTARY_BREAK:
if (s_editMode == -1) {
s_editMode = 0;
break;
}
// no break;
#endif
case EVT_KEY_LONG(KEY_ENTER): case EVT_KEY_LONG(KEY_ENTER):
case EVT_KEY_BREAK(KEY_ENTER): case EVT_KEY_BREAK(KEY_ENTER):
s_editMode = 0; s_editMode = 0;

View file

@ -551,7 +551,7 @@ void menuModelSetup(event_t event)
SW_WARN_ROWS, // Switch warning SW_WARN_ROWS, // Switch warning
POT_WARN_ITEMS(), // Pot warning POT_WARN_ITEMS(), // Pot warning
NUM_STICKS + NUM_POTS + NUM_SLIDERS + NUM_ROTARY_ENCODERS - 1, // Center beeps NUM_STICKS + NUM_POTS + NUM_SLIDERS - 1, // Center beeps
0, // Global functions 0, // Global functions
uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID
@ -588,7 +588,7 @@ void menuModelSetup(event_t event)
TRAINER_ROWS TRAINER_ROWS
}); });
#else #else
MENU_TAB({ HEADER_LINE_COLUMNS 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, LABEL(PreflightCheck), 0, 0, NUM_SWITCHES-1, NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS-1, 0, MENU_TAB({ HEADER_LINE_COLUMNS 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, LABEL(PreflightCheck), 0, 0, NUM_SWITCHES-1, NUM_STICKS+NUM_POTS+NUM_SLIDERS-1, 0,
LABEL(ExternalModule), LABEL(ExternalModule),
EXTERNAL_MODULE_MODE_ROWS, EXTERNAL_MODULE_MODE_ROWS,
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE)
@ -882,7 +882,6 @@ void menuModelSetup(event_t event)
s_editMode = 0; s_editMode = 0;
if (!READ_ONLY()) { if (!READ_ONLY()) {
switch (event) { switch (event) {
CASE_EVT_ROTARY_BREAK
case EVT_KEY_BREAK(KEY_ENTER): case EVT_KEY_BREAK(KEY_ENTER):
if (menuHorizontalPosition < NUM_SWITCHES-1) { if (menuHorizontalPosition < NUM_SWITCHES-1) {
g_model.switchWarningEnable ^= (1 << menuHorizontalPosition); g_model.switchWarningEnable ^= (1 << menuHorizontalPosition);
@ -980,7 +979,7 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_BEEP_CENTER: case ITEM_MODEL_BEEP_CENTER:
lcdDrawTextAlignedLeft(y, STR_BEEPCTR); lcdDrawTextAlignedLeft(y, STR_BEEPCTR);
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS; i++) { for (uint8_t i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS; i++) {
// TODO flash saving, \001 not needed in STR_RETA123 // TODO flash saving, \001 not needed in STR_RETA123
coord_t x = MODEL_SETUP_2ND_COLUMN+i*FW; coord_t x = MODEL_SETUP_2ND_COLUMN+i*FW;
lcdDrawTextAtIndex(x, y, STR_RETA123, i, ((menuHorizontalPosition==i) && attr) ? BLINK|INVERS : (((g_model.beepANACenter & ((BeepANACenter)1<<i)) || (attr && CURSOR_ON_LINE())) ? INVERS : 0 ) ); lcdDrawTextAtIndex(x, y, STR_RETA123, i, ((menuHorizontalPosition==i) && attr) ? BLINK|INVERS : (((g_model.beepANACenter & ((BeepANACenter)1<<i)) || (attr && CURSOR_ON_LINE())) ? INVERS : 0 ) );
@ -1379,6 +1378,7 @@ void menuModelSetup(event_t event)
{ {
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k); uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
ModuleInformation & moduleInformation = reusableBuffer.moduleSetup.pxx2.moduleInformation;
drawStringWithIndex(INDENT_WIDTH, y, STR_RECEIVER, receiverIdx + 1); drawStringWithIndex(INDENT_WIDTH, y, STR_RECEIVER, receiverIdx + 1);
@ -1398,8 +1398,8 @@ void menuModelSetup(event_t event)
drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr); drawReceiverName(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, receiverIdx, attr);
if (s_editMode && isModuleR9M2(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && reusableBuffer.moduleSetup.pxx2.moduleInformation.information.modelID) { if (s_editMode && isModuleR9M2(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_NORMAL && moduleInformation.information.modelID) {
reusableBuffer.moduleSetup.pxx2.moduleInformation.information.modelID = 0; moduleInformation.information.modelID = 0;
moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation); moduleState[moduleIdx].startBind(&reusableBuffer.moduleSetup.bindInformation);
} }
@ -1414,7 +1414,8 @@ void menuModelSetup(event_t event)
} }
if (moduleState[moduleIdx].mode == MODULE_MODE_BIND) { if (moduleState[moduleIdx].mode == MODULE_MODE_BIND) {
if (reusableBuffer.moduleSetup.bindInformation.step == BIND_INIT && reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount > 0) { if (reusableBuffer.moduleSetup.bindInformation.step == BIND_INIT) {
if (reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount > 0) {
popupMenuItemsCount = min<uint8_t>(reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); popupMenuItemsCount = min<uint8_t>(reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE);
for (uint8_t i = 0; i < popupMenuItemsCount; i++) { for (uint8_t i = 0; i < popupMenuItemsCount; i++) {
popupMenuItems[i] = reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[i]; popupMenuItems[i] = reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[i];
@ -1422,6 +1423,10 @@ void menuModelSetup(event_t event)
popupMenuTitle = STR_PXX2_SELECT_RX; popupMenuTitle = STR_PXX2_SELECT_RX;
POPUP_MENU_START(onPXX2BindMenu); POPUP_MENU_START(onPXX2BindMenu);
} }
else {
drawMessageBox("Waiting for RX...");
}
}
} }
if (attr && EVT_KEY_MASK(event) == KEY_ENTER) { if (attr && EVT_KEY_MASK(event) == KEY_ENTER) {

View file

@ -86,25 +86,17 @@ void menuRadioDiagKeys(event_t event)
} }
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
for (uint8_t i=0; i<DIM(rotencValue); i++) { #if defined(PCBX7) || defined(PCBX3)
#if defined(PCBX7)
coord_t y = MENU_HEADER_HEIGHT + FH; coord_t y = MENU_HEADER_HEIGHT + FH;
coord_t x = 6*FW+3; coord_t x = 6*FW+3;
lcdDrawTextAtIndex(0, MENU_HEADER_HEIGHT + FH , STR_VRENCODERS, i, 0); lcdDrawTextAtIndex(0, MENU_HEADER_HEIGHT + FH , STR_VRENCODERS, 0, 0);
lcdDrawNumber(x, y, rotencValue, RIGHT);
#else #else
coord_t y = MENU_HEADER_HEIGHT /* ??? + 1 ??? */ + i*FH; coord_t y = MENU_HEADER_HEIGHT;
coord_t x = 19*FW; coord_t x = 19*FW;
lcdDrawTextAtIndex(14*FW, y, STR_VRENCODERS, i, 0); lcdDrawTextAtIndex(14*FW, y, STR_VRENCODERS, 0, 0);
lcdDrawNumber(x, y, rotencValue, LEFT);
#endif #endif
#if defined(ROTARY_ENCODERS)
lcdDrawNumber(x, y, rotencValue[i], LEFT|(keyState(BTN_REa+i) ? INVERS : 0));
#elif defined(PCBX7)
lcdDrawNumber(x, y, rotencValue[i], RIGHT);
#else
lcdDrawNumber(x, y, rotencValue[i], LEFT);
#endif
}
#endif #endif
} }

View file

@ -29,14 +29,13 @@ enum MenuRadioHardwareItems {
ITEM_RADIO_HARDWARE_STICK_LH_GAIN, ITEM_RADIO_HARDWARE_STICK_LH_GAIN,
ITEM_RADIO_HARDWARE_STICK_RV_GAIN, ITEM_RADIO_HARDWARE_STICK_RV_GAIN,
ITEM_RADIO_HARDWARE_STICK_RH_GAIN, ITEM_RADIO_HARDWARE_STICK_RH_GAIN,
IF_ROTARY_ENCODERS(ITEM_RADIO_HARDWARE_ROTARY_ENCODER)
CASE_BLUETOOTH(ITEM_RADIO_HARDWARE_BT_BAUDRATE) CASE_BLUETOOTH(ITEM_RADIO_HARDWARE_BT_BAUDRATE)
ITEM_RADIO_HARDWARE_MAX ITEM_RADIO_HARDWARE_MAX
}; };
void menuRadioHardware(event_t event) void menuRadioHardware(event_t event)
{ {
MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX+1, {0, 0, (uint8_t)-1, 0, 0, 0, IF_ROTARY_ENCODERS(0) CASE_BLUETOOTH(0)}); MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX+1, {0, 0, (uint8_t)-1, 0, 0, 0, CASE_BLUETOOTH(0)});
uint8_t sub = menuVerticalPosition - 1; uint8_t sub = menuVerticalPosition - 1;
@ -75,12 +74,6 @@ void menuRadioHardware(event_t event)
break; break;
} }
#if defined(ROTARY_ENCODERS)
case ITEM_RADIO_HARDWARE_ROTARY_ENCODER:
g_eeGeneral.rotarySteps = editChoice(HW_SETTINGS_COLUMN, y, "Rotary Encoder", "\0062steps4steps", g_eeGeneral.rotarySteps, 0, 1, attr, event);
break;
#endif
#if defined(BLUETOOTH) #if defined(BLUETOOTH)
case ITEM_RADIO_HARDWARE_BT_BAUDRATE: case ITEM_RADIO_HARDWARE_BT_BAUDRATE:
g_eeGeneral.bluetoothBaudrate = editChoice(HW_SETTINGS_COLUMN, y, STR_BAUDRATE, "\005115k 9600 19200", g_eeGeneral.bluetoothBaudrate, 0, 2, attr, event); g_eeGeneral.bluetoothBaudrate = editChoice(HW_SETTINGS_COLUMN, y, STR_BAUDRATE, "\005115k 9600 19200", g_eeGeneral.bluetoothBaudrate, 0, 2, attr, event);

View file

@ -80,7 +80,6 @@ enum MenuRadioSetupItems {
ITEM_SETUP_MEMORY_WARNING, ITEM_SETUP_MEMORY_WARNING,
ITEM_SETUP_ALARM_WARNING, ITEM_SETUP_ALARM_WARNING,
ITEM_SETUP_RSSI_POWEROFF_ALARM, ITEM_SETUP_RSSI_POWEROFF_ALARM,
IF_ROTARY_ENCODERS(ITEM_SETUP_RE_NAVIGATION)
ITEM_SETUP_BACKLIGHT_LABEL, ITEM_SETUP_BACKLIGHT_LABEL,
ITEM_SETUP_BACKLIGHT_MODE, ITEM_SETUP_BACKLIGHT_MODE,
ITEM_SETUP_BACKLIGHT_DELAY, ITEM_SETUP_BACKLIGHT_DELAY,
@ -155,7 +154,7 @@ void menuRadioSetup(event_t event)
CASE_GYRO(0) CASE_GYRO(0)
0, LABEL(ALARMS), 0, CASE_CAPACITY(0) 0, LABEL(ALARMS), 0, CASE_CAPACITY(0)
CASE_PCBSKY9X(0) CASE_PCBSKY9X(0)
0, 0, 0, 0, IF_ROTARY_ENCODERS(0) 0, 0, 0, 0,
LABEL(BACKLIGHT), 0, 0, 0, CASE_PWM_BACKLIGHT(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_PWM_BACKLIGHT(0)
CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0)
0, 0,
@ -460,15 +459,6 @@ void menuRadioSetup(event_t event)
if(attr) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes if(attr) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes
break; break;
#if defined(ROTARY_ENCODERS)
case ITEM_SETUP_RE_NAVIGATION:
g_eeGeneral.reNavigation = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_RENAVIG, STR_VRENAVIG, g_eeGeneral.reNavigation, 0, NUM_ROTARY_ENCODERS, attr, event);
if (attr && checkIncDec_Ret) {
ROTARY_ENCODER_NAVIGATION_VALUE = 0;
}
break;
#endif
case ITEM_SETUP_BACKLIGHT_LABEL: case ITEM_SETUP_BACKLIGHT_LABEL:
lcdDrawTextAlignedLeft(y, STR_BACKLIGHT_LABEL); lcdDrawTextAlignedLeft(y, STR_BACKLIGHT_LABEL);
break; break;

View file

@ -354,13 +354,11 @@ void menuMainView(event_t event)
break; break;
#endif #endif
CASE_EVT_ROTARY_BREAK
case EVT_KEY_MODEL_MENU: case EVT_KEY_MODEL_MENU:
pushMenu(menuModelSelect); pushMenu(menuModelSelect);
killEvents(event); killEvents(event);
break; break;
CASE_EVT_ROTARY_LONG
case EVT_KEY_GENERAL_MENU: case EVT_KEY_GENERAL_MENU:
pushMenu(menuRadioSetup); pushMenu(menuRadioSetup);
killEvents(event); killEvents(event);

View file

@ -281,7 +281,7 @@ void menuModelSetup(event_t event)
int8_t old_editMode = s_editMode; int8_t old_editMode = s_editMode;
MENU_TAB({ 0, 0, TIMERS_ROWS, TOPLCD_ROWS 0, 1, 0, 0, MENU_TAB({ 0, 0, TIMERS_ROWS, TOPLCD_ROWS 0, 1, 0, 0,
LABEL(Throttle), 0, 0, 0, LABEL(Throttle), 0, 0, 0,
LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS-1), 0, LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_SLIDERS-1), 0,
LABEL(InternalModule), LABEL(InternalModule),
INTERNAL_MODULE_MODE_ROWS, INTERNAL_MODULE_MODE_ROWS,
INTERNAL_MODULE_CHANNELS_ROWS, INTERNAL_MODULE_CHANNELS_ROWS,
@ -636,7 +636,7 @@ void menuModelSetup(event_t event)
{ {
lcdDrawTextAlignedLeft(y, STR_BEEPCTR); lcdDrawTextAlignedLeft(y, STR_BEEPCTR);
coord_t x = MODEL_SETUP_2ND_COLUMN; coord_t x = MODEL_SETUP_2ND_COLUMN;
for (int i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS; i++) { for (int i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS; i++) {
if (i>=POT1 && i<POT1+NUM_XPOTS && !IS_POT_SLIDER_AVAILABLE(i)) { if (i>=POT1 && i<POT1+NUM_XPOTS && !IS_POT_SLIDER_AVAILABLE(i)) {
if (attr && menuHorizontalPosition == i) REPEAT_LAST_CURSOR_MOVE(); if (attr && menuHorizontalPosition == i) REPEAT_LAST_CURSOR_MOVE();
continue; continue;

View file

@ -116,7 +116,7 @@ void menuRadioSetup(event_t event)
} }
#endif #endif
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_SETUP_MAX, { 2, 2, 0, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, 0,IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_PCBX9E_PCBX9DP(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) 0, 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ }); MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_SETUP_MAX, { 2, 2, 0, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, 0, LABEL(BACKLIGHT), 0, 0, 0, CASE_PCBX9E_PCBX9DP(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) 0, 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ });
if (event == EVT_ENTRY) { if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode; reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;

View file

@ -542,7 +542,7 @@ bool menuModelSetup(event_t event)
MENU(STR_MENUSETUP, MODEL_ICONS, menuTabModel, MENU_MODEL_SETUP, ITEM_MODEL_SETUP_MAX, MENU(STR_MENUSETUP, MODEL_ICONS, menuTabModel, MENU_MODEL_SETUP, ITEM_MODEL_SETUP_MAX,
{ 0, 0, TIMERS_ROWS, 0, 1, 0, 0, { 0, 0, TIMERS_ROWS, 0, 1, 0, 0,
LABEL(Throttle), 0, 0, 0, LABEL(Throttle), 0, 0, 0,
LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ROWS, (g_model.potsWarnMode ? POT_WARN_ITEMS() : HIDDEN_ROW), (g_model.potsWarnMode ? SLIDER_WARN_ITEMS() : HIDDEN_ROW), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS-1), 0, LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ROWS, (g_model.potsWarnMode ? POT_WARN_ITEMS() : HIDDEN_ROW), (g_model.potsWarnMode ? SLIDER_WARN_ITEMS() : HIDDEN_ROW), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_SLIDERS-1), 0,
uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID
LABEL(InternalModule), LABEL(InternalModule),

View file

@ -144,9 +144,6 @@ const char * runPopupMenu(event_t event)
} }
break; break;
#if defined(CASE_EVT_ROTARY_BREAK)
CASE_EVT_ROTARY_BREAK
#endif
case EVT_KEY_BREAK(KEY_ENTER): case EVT_KEY_BREAK(KEY_ENTER):
result = popupMenuItems[s_menu_item + (popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)]; result = popupMenuItems[s_menu_item + (popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)];
popupMenuItemsCount = 0; popupMenuItemsCount = 0;
@ -155,12 +152,6 @@ const char * runPopupMenu(event_t event)
popupMenuTitle = nullptr; popupMenuTitle = nullptr;
break; break;
#if defined(CASE_EVT_ROTARY_LONG)
CASE_EVT_ROTARY_LONG
killEvents(event);
// no break
#endif
case EVT_KEY_BREAK(KEY_EXIT): case EVT_KEY_BREAK(KEY_EXIT):
result = STR_EXIT; result = STR_EXIT;
popupMenuItemsCount = 0; popupMenuItemsCount = 0;
@ -183,7 +174,20 @@ void runPopupWarning(event_t event)
lcdDrawSizedText(WARNING_LINE_X, WARNING_LINE_Y+FH, warningInfoText, warningInfoLength, WARNING_INFO_FLAGS); lcdDrawSizedText(WARNING_LINE_X, WARNING_LINE_Y+FH, warningInfoText, warningInfoLength, WARNING_INFO_FLAGS);
} }
lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH+2, warningType == WARNING_TYPE_INFO ? STR_OK : (warningType == WARNING_TYPE_ASTERISK ? STR_EXIT : STR_POPUPS_ENTER_EXIT)); switch (warningType) {
case WARNING_TYPE_INFO:
lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH+2, STR_OK);
break;
case WARNING_TYPE_ASTERISK:
lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH+2, STR_EXIT);
break;
default:
lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH+2, STR_POPUPS_ENTER_EXIT);
break;
}
switch (event) { switch (event) {
case EVT_KEY_BREAK(KEY_ENTER): case EVT_KEY_BREAK(KEY_ENTER):

View file

@ -270,7 +270,6 @@ void menuRadioSdManager(event_t _event)
break; break;
#if !defined(PCBTARANIS) #if !defined(PCBTARANIS)
CASE_EVT_ROTARY_BREAK
case EVT_KEY_FIRST(KEY_RIGHT): case EVT_KEY_FIRST(KEY_RIGHT):
#endif #endif
case EVT_KEY_BREAK(KEY_ENTER): case EVT_KEY_BREAK(KEY_ENTER):
@ -484,7 +483,8 @@ void menuRadioSdManager(event_t _event)
} }
if (moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) { if (moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) {
if (reusableBuffer.sdManager.otaInformation.step == BIND_INIT && reusableBuffer.sdManager.otaInformation.candidateReceiversCount > 0) { if (reusableBuffer.sdManager.otaInformation.step == BIND_INIT) {
if (reusableBuffer.sdManager.otaInformation.candidateReceiversCount > 0) {
popupMenuItemsCount = min<uint8_t>(reusableBuffer.sdManager.otaInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE); popupMenuItemsCount = min<uint8_t>(reusableBuffer.sdManager.otaInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE);
for (uint8_t i=0; i<popupMenuItemsCount; i++) { for (uint8_t i=0; i<popupMenuItemsCount; i++) {
popupMenuItems[i] = reusableBuffer.sdManager.otaInformation.candidateReceiversNames[i]; popupMenuItems[i] = reusableBuffer.sdManager.otaInformation.candidateReceiversNames[i];
@ -492,6 +492,10 @@ void menuRadioSdManager(event_t _event)
popupMenuTitle = STR_PXX2_SELECT_RX; popupMenuTitle = STR_PXX2_SELECT_RX;
POPUP_MENU_START(onUpdateReceiverSelection); POPUP_MENU_START(onUpdateReceiverSelection);
} }
else {
drawMessageBox("Waiting for RX...");
}
}
} }
#if LCD_DEPTH > 1 #if LCD_DEPTH > 1

View file

@ -163,13 +163,6 @@ void pauseEvents(event_t event)
// Disables any further event generation (BREAK and REPEAT) for this key, until the key is released // Disables any further event generation (BREAK and REPEAT) for this key, until the key is released
void killEvents(event_t event) void killEvents(event_t event)
{ {
#if defined(ROTARY_ENCODERS)
if (event == EVT_ROTARY_LONG) {
killEvents(BTN_REa + g_eeGeneral.reNavigation - 1);
return;
}
#endif
event = EVT_KEY_MASK(event); event = EVT_KEY_MASK(event);
if (event < (int)DIM(keys)) { if (event < (int)DIM(keys)) {
keys[event].killEvents(); keys[event].killEvents();

View file

@ -324,16 +324,6 @@ getvalue_t getValue(mixsrc_t i)
} }
#endif #endif
#if defined(PCBSKY9X)
else if (i <= MIXSRC_LAST_ROTARY_ENCODER) {
#if ROTARY_ENCODERS > 0
return getRotaryEncoder(i - MIXSRC_REa);
#else
return 0;
#endif
}
#endif
else if (i == MIXSRC_MAX) { else if (i == MIXSRC_MAX) {
return 1024; return 1024;
} }
@ -499,14 +489,6 @@ void evalInputs(uint8_t mode)
} }
} }
#if defined(ROTARY_ENCODERS)
for (uint8_t i=0; i<NUM_ROTARY_ENCODERS; i++) {
if (getRotaryEncoder(i) == 0) {
anaCenter |= ((BeepANACenter)1 << (NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_MOUSE_ANALOGS+i));
}
}
#endif
#if NUM_MOUSE_ANALOGS > 0 #if NUM_MOUSE_ANALOGS > 0
for (uint8_t i=0; i<NUM_MOUSE_ANALOGS; i++) { for (uint8_t i=0; i<NUM_MOUSE_ANALOGS; i++) {
uint8_t ch = NUM_STICKS+NUM_POTS+NUM_SLIDERS+i; uint8_t ch = NUM_STICKS+NUM_POTS+NUM_SLIDERS+i;

View file

@ -496,15 +496,6 @@ void modelDefault(uint8_t id)
} }
#endif #endif
#if defined(FLIGHT_MODES) && defined(ROTARY_ENCODERS)
for (int p=1; p<MAX_FLIGHT_MODES; p++) {
for (int i=0; i<ROTARY_ENCODERS; i++) {
g_model.flightModeData[p].rotaryEncoders[i] = ROTARY_ENCODER_MAX+1;
}
}
#endif
#if !defined(EEPROM) #if !defined(EEPROM)
strcpy(g_model.header.name, "\015\361\374\373\364"); strcpy(g_model.header.name, "\015\361\374\373\364");
g_model.header.name[5] = '\033' + id/10; g_model.header.name[5] = '\033' + id/10;
@ -648,36 +639,6 @@ bool setTrimValue(uint8_t phase, uint8_t idx, int trim)
return true; return true;
} }
#if defined(ROTARY_ENCODERS)
uint8_t getRotaryEncoderFlightMode(uint8_t idx)
{
uint8_t phase = mixerCurrentFlightMode;
for (uint8_t i=0; i<MAX_FLIGHT_MODES; i++) {
if (phase == 0) return 0;
int16_t value = flightModeAddress(phase)->rotaryEncoders[idx];
if (value <= ROTARY_ENCODER_MAX) return phase;
uint8_t result = value-ROTARY_ENCODER_MAX-1;
if (result >= phase) result++;
phase = result;
}
return 0;
}
int16_t getRotaryEncoder(uint8_t idx)
{
return flightModeAddress(getRotaryEncoderFlightMode(idx))->rotaryEncoders[idx];
}
void incRotaryEncoder(uint8_t idx, int8_t inc)
{
rotencValue[idx] += inc;
int16_t *value = &(flightModeAddress(getRotaryEncoderFlightMode(idx))->rotaryEncoders[idx]);
*value = limit((int16_t)-RESX, (int16_t)(*value + (inc * 8)), (int16_t)+RESX);
storageDirty(EE_MODEL);
}
#endif
getvalue_t convert16bitsTelemValue(source_t channel, ls_telemetry_value_t value) getvalue_t convert16bitsTelemValue(source_t channel, ls_telemetry_value_t value)
{ {
return value; return value;
@ -1366,10 +1327,6 @@ void evalTrims()
} }
} }
uint8_t mSwitchDuration[1+NUM_ROTARY_ENCODERS] = { 0 };
#define CFN_PRESSLONG_DURATION 100
uint8_t s_mixer_first_run_done = false; uint8_t s_mixer_first_run_done = false;
void doMixerCalculations() void doMixerCalculations()
@ -1766,20 +1723,12 @@ void moveTrimsToOffsets() // copy state of 3 primary to subtrim
AUDIO_WARNING2(); AUDIO_WARNING2();
} }
#if defined(ROTARY_ENCODERS)
volatile rotenc_t rotencValue[ROTARY_ENCODERS] = {0};
#elif defined(ROTARY_ENCODER_NAVIGATION)
volatile rotenc_t rotencValue[1] = {0};
#endif
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
volatile rotenc_t rotencValue = 0;
uint8_t rotencSpeed; uint8_t rotencSpeed;
#endif #endif
void opentxInit()
#define OPENTX_INIT_ARGS
void opentxInit(OPENTX_INIT_ARGS)
{ {
TRACE("opentxInit"); TRACE("opentxInit");

View file

@ -178,10 +178,6 @@
#define CASE_CAPACITY(x) #define CASE_CAPACITY(x)
#endif #endif
#if ROTARY_ENCODERS > 0
#define ROTARY_ENCODER_NAVIGATION
#endif
#if defined(FAI) #if defined(FAI)
#define IS_FAI_ENABLED() true #define IS_FAI_ENABLED() true
#define IF_FAI_CHOICE(x) #define IF_FAI_CHOICE(x)
@ -294,12 +290,6 @@ void memswap(void * a, void * b, uint8_t size);
#define GET_LOWRES_POT_POSITION(i) (getValue(MIXSRC_FIRST_POT+(i)) >> 4) #define GET_LOWRES_POT_POSITION(i) (getValue(MIXSRC_FIRST_POT+(i)) >> 4)
#define SAVE_POT_POSITION(i) g_model.potsWarnPosition[i] = GET_LOWRES_POT_POSITION(i) #define SAVE_POT_POSITION(i) g_model.potsWarnPosition[i] = GET_LOWRES_POT_POSITION(i)
#if ROTARY_ENCODERS > 0
#define IF_ROTARY_ENCODERS(x) x,
#else
#define IF_ROTARY_ENCODERS(x)
#endif
#define PPM_CENTER 1500 #define PPM_CENTER 1500
#if defined(PPM_CENTER_ADJUSTABLE) #if defined(PPM_CENTER_ADJUSTABLE)
@ -386,17 +376,10 @@ extern uint8_t channel_order(uint8_t x);
#define SPLASH_TIMEOUT (4*100) // 4 seconds #define SPLASH_TIMEOUT (4*100) // 4 seconds
#endif #endif
#if defined(ROTARY_ENCODERS)
#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() g_eeGeneral.reNavigation
extern volatile rotenc_t rotencValue[ROTARY_ENCODERS];
#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue[g_eeGeneral.reNavigation - 1]
#elif defined(ROTARY_ENCODER_NAVIGATION)
#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() true
extern volatile rotenc_t rotencValue[1];
#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue[0]
#endif
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() true
extern volatile rotenc_t rotencValue;
#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue
extern uint8_t rotencSpeed; extern uint8_t rotencSpeed;
#define ROTENC_LOWSPEED 1 #define ROTENC_LOWSPEED 1
#define ROTENC_MIDSPEED 5 #define ROTENC_MIDSPEED 5
@ -549,11 +532,6 @@ int getTrimValue(uint8_t phase, uint8_t idx);
bool setTrimValue(uint8_t phase, uint8_t idx, int trim); bool setTrimValue(uint8_t phase, uint8_t idx, int trim);
#if defined(ROTARY_ENCODERS)
int16_t getRotaryEncoder(uint8_t idx);
void incRotaryEncoder(uint8_t idx, int8_t inc);
#endif
#if defined(PCBSKY9X) #if defined(PCBSKY9X)
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps) #define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
#elif defined(PCBHORUS) #elif defined(PCBHORUS)

View file

@ -274,9 +274,6 @@ void Open9xSim::updateKeysAndSwitches(bool start)
KEY_Left, KEY_LEFT, KEY_Left, KEY_LEFT,
KEY_Up, KEY_UP, KEY_Up, KEY_UP,
KEY_Down, KEY_DOWN, KEY_Down, KEY_DOWN,
#if defined(ROTARY_ENCODER_NAVIGATION)
KEY_F, BTN_REa,
#endif
#endif #endif
}; };

View file

@ -452,16 +452,6 @@ bool getSwitch(swsrc_t swtch, uint8_t flags)
idx = (CONVERT_MODE_TRIMS(idx/2) << 1) + (idx & 1); idx = (CONVERT_MODE_TRIMS(idx/2) << 1) + (idx & 1);
result = trimDown(idx); result = trimDown(idx);
} }
#if ROTARY_ENCODERS > 0
else if (cs_idx == SWSRC_REa) {
result = REA_DOWN();
}
#endif
#if ROTARY_ENCODERS > 1
else if (cs_idx == SWSRC_REb) {
result = REB_DOWN();
}
#endif
else if (cs_idx >= SWSRC_FIRST_SENSOR) { else if (cs_idx >= SWSRC_FIRST_SENSOR) {
result = !telemetryItems[cs_idx-SWSRC_FIRST_SENSOR].isOld(); result = !telemetryItems[cs_idx-SWSRC_FIRST_SENSOR].isOld();
} }

View file

@ -8,7 +8,9 @@ if(PCB STREQUAL X12S OR PCB STREQUAL X10)
../f4/system_stm32f4xx.c ../f4/system_stm32f4xx.c
../../../../../targets/${TARGET_DIR}/startup_stm32f42_43xxx.s ../../../../../targets/${TARGET_DIR}/startup_stm32f42_43xxx.s
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fmc.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fmc.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_ltdc.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_ltdc.c
@ -23,7 +25,9 @@ elseif(PCB STREQUAL X9E)
../f4/system_stm32f4xx.c ../f4/system_stm32f4xx.c
../../../../../targets/${TARGET_DIR}/startup_stm32f40_41xxx.s ../../../../../targets/${TARGET_DIR}/startup_stm32f40_41xxx.s
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c
../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/misc.c ../../../../../${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/src/misc.c
@ -34,7 +38,9 @@ else()
../f2/system_stm32f2xx.c ../f2/system_stm32f2xx.c
../../../../../${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s ../../../../../${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c ../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c ../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c ../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c ../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c
../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/misc.c ../../../../../${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/src/misc.c
@ -78,6 +84,13 @@ set(BOOTLOADER_SRC
bin_files.cpp bin_files.cpp
) )
if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X3)
set(BOOTLOADER_SRC
${BOOTLOADER_SRC}
../../../../../targets/common/arm/stm32/rotary_encoder_driver.cpp
)
endif()
if(NOT (PCB STREQUAL X10 OR PCB STREQUAL X12S)) if(NOT (PCB STREQUAL X10 OR PCB STREQUAL X12S))
set(BOOTLOADER_SRC set(BOOTLOADER_SRC
${BOOTLOADER_SRC} ${BOOTLOADER_SRC}

View file

@ -50,7 +50,7 @@ const uint8_t bootloaderVersion[] __attribute__ ((section(".version"), used)) =
{ 'B', 'O', 'O', 'T', '1', '0' }; { 'B', 'O', 'O', 'T', '1', '0' };
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
volatile rotenc_t rotencValue[1] = {0}; volatile rotenc_t rotencValue = 0;
#endif #endif
/*---------------------------------------------------------------------------- /*----------------------------------------------------------------------------
@ -86,18 +86,12 @@ void interrupt10ms(void)
} }
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
checkRotaryEncoder();
static rotenc_t rePreviousValue; static rotenc_t rePreviousValue;
rotenc_t reNewValue = (rotencValue[0] / ROTARY_ENCODER_GRANULARITY); rotenc_t reNewValue = (rotencValue / ROTARY_ENCODER_GRANULARITY);
int8_t scrollRE = reNewValue - rePreviousValue; int8_t scrollRE = reNewValue - rePreviousValue;
if (scrollRE) { if (scrollRE) {
rePreviousValue = reNewValue; rePreviousValue = reNewValue;
if (scrollRE < 0) { putEvent(scrollRE < 0 ? EVT_KEY_FIRST(KEY_UP) : EVT_KEY_FIRST(KEY_DOWN));
putEvent(EVT_KEY_FIRST(KEY_UP)); //EVT_ROTARY_LEFT
}
else {
putEvent(EVT_KEY_FIRST(KEY_DOWN)); //EVT_ROTARY_RIGHT
}
} }
#endif #endif
} }
@ -221,6 +215,10 @@ int main()
keysInit(); keysInit();
#if defined(ROTARY_ENCODER_NAVIGATION)
rotaryEncoderInit();
#endif
// wait for inputs to stabilize // wait for inputs to stabilize
for (uint32_t i = 0; i < 50000; i += 1) { for (uint32_t i = 0; i < 50000; i += 1) {
wdt_reset(); wdt_reset();

View file

@ -11,8 +11,10 @@ set(STM32LIB_SRC
CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s
STM32F2xx_StdPeriph_Driver/src/misc.c STM32F2xx_StdPeriph_Driver/src/misc.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c
STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c

View file

@ -10,8 +10,10 @@ set(STM32LIB_SRC
${STM32LIB_SRC} ${STM32LIB_SRC}
STM32F4xx_StdPeriph_Driver/src/misc.c STM32F4xx_StdPeriph_Driver/src/misc.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_exti.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dbgmcu.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_rcc.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_spi.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_i2c.c
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_dma.c

View file

@ -0,0 +1,103 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "opentx.h"
uint32_t rotencPosition;
void rotaryEncoderInit()
{
SYSCFG_EXTILineConfig(ROTARY_ENCODER_EXTI_PortSource, ROTARY_ENCODER_EXTI_PinSource1);
#if defined(ROTARY_ENCODER_EXTI_LINE2)
SYSCFG_EXTILineConfig(ROTARY_ENCODER_EXTI_PortSource, ROTARY_ENCODER_EXTI_PinSource2);
#endif
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_StructInit(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = ROTARY_ENCODER_EXTI_LINE1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
#if defined(ROTARY_ENCODER_EXTI_LINE2)
EXTI_InitStructure.EXTI_Line = ROTARY_ENCODER_EXTI_LINE2;
EXTI_Init(&EXTI_InitStructure);
#endif
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = ROTARY_ENCODER_EXTI_IRQn1;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
#if defined(ROTARY_ENCODER_EXTI_IRQn2)
NVIC_InitStructure.NVIC_IRQChannel = ROTARY_ENCODER_EXTI_IRQn2;
NVIC_Init(&NVIC_InitStructure);
#endif
rotencPosition = ROTARY_ENCODER_POSITION();
}
void rotaryEncoderCheck()
{
uint32_t newpos = ROTARY_ENCODER_POSITION();
if (newpos != rotencPosition && !keyState(KEY_ENTER)) {
if ((rotencPosition & 0x01) ^ ((newpos & 0x02) >> 1)) {
--rotencValue;
}
else {
++rotencValue;
}
rotencPosition = newpos;
#if !defined(BOOT)
if (g_eeGeneral.backlightMode & e_backlight_mode_keys) {
backlightOn();
}
#endif
}
}
extern "C" void ROTARY_ENCODER_EXTI_IRQHandler1(void)
{
if (EXTI_GetITStatus(ROTARY_ENCODER_EXTI_LINE1) != RESET) {
rotaryEncoderCheck();
EXTI_ClearITPendingBit(ROTARY_ENCODER_EXTI_LINE1);
}
#if !defined(ROTARY_ENCODER_EXTI_IRQn2)
if (EXTI_GetITStatus(ROTARY_ENCODER_EXTI_LINE2) != RESET) {
rotaryEncoderCheck();
EXTI_ClearITPendingBit(ROTARY_ENCODER_EXTI_LINE2);
}
#endif
}
#if defined(ROTARY_ENCODER_EXTI_IRQn2)
extern "C" void ROTARY_ENCODER_EXTI_IRQHandler2(void)
{
if (EXTI_GetITStatus(ROTARY_ENCODER_EXTI_LINE2) != RESET) {
rotaryEncoderCheck();
EXTI_ClearITPendingBit(ROTARY_ENCODER_EXTI_LINE2);
}
}
#endif

View file

@ -36,7 +36,6 @@ if (PCB STREQUAL X10)
../common/arm/stm32/adc_driver.cpp ../common/arm/stm32/adc_driver.cpp
../common/arm/stm32/sticks_pwm_driver.cpp ../common/arm/stm32/sticks_pwm_driver.cpp
) )
set(BITMAPS_TARGET x10_bitmaps) set(BITMAPS_TARGET x10_bitmaps)
set(FONTS_TARGET x10_fonts) set(FONTS_TARGET x10_fonts)
set(LCD_DRIVER lcd_driver.cpp) set(LCD_DRIVER lcd_driver.cpp)
@ -133,6 +132,7 @@ set(TARGET_SRC
trainer_driver.cpp trainer_driver.cpp
../common/arm/stm32/intmodule_serial_driver.cpp ../common/arm/stm32/intmodule_serial_driver.cpp
../common/arm/stm32/bluetooth_driver.cpp ../common/arm/stm32/bluetooth_driver.cpp
../common/arm/stm32/rotary_encoder_driver.cpp
) )
set(FIRMWARE_TARGET_SRC set(FIRMWARE_TARGET_SRC

View file

@ -86,10 +86,6 @@ void interrupt1ms()
per10ms(); per10ms();
DEBUG_TIMER_STOP(debugTimerPer10ms); DEBUG_TIMER_STOP(debugTimerPer10ms);
} }
DEBUG_TIMER_START(debugTimerRotEnc);
checkRotaryEncoder();
DEBUG_TIMER_STOP(debugTimerRotEnc);
} }
extern "C" void INTERRUPT_xMS_IRQHandler() extern "C" void INTERRUPT_xMS_IRQHandler()
@ -168,7 +164,8 @@ void boardInit()
BACKLIGHT_RCC_APB1Periph, BACKLIGHT_RCC_APB1Periph,
ENABLE); ENABLE);
RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG |
LCD_RCC_APB2Periph |
ADC_RCC_APB2Periph | ADC_RCC_APB2Periph |
HAPTIC_RCC_APB2Periph | HAPTIC_RCC_APB2Periph |
INTMODULE_RCC_APB2Periph | INTMODULE_RCC_APB2Periph |
@ -196,6 +193,7 @@ void boardInit()
memset(&g_FATFS_Obj, 0, sizeof(g_FATFS_Obj)); memset(&g_FATFS_Obj, 0, sizeof(g_FATFS_Obj));
keysInit(); keysInit();
rotaryEncoderInit();
#if NUM_PWMSTICKS > 0 #if NUM_PWMSTICKS > 0
sticksPwmInit(); sticksPwmInit();

View file

@ -37,7 +37,9 @@ extern "C" {
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h"
@ -344,7 +346,8 @@ uint32_t readTrims(void);
// Rotary encoder driver // Rotary encoder driver
#define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_NAVIGATION
void checkRotaryEncoder(void); void rotaryEncoderInit(void);
void rotaryEncoderCheck(void);
// WDT driver // WDT driver
#define WDTO_500MS 500 #define WDTO_500MS 500

View file

@ -62,6 +62,13 @@
#define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_11 // PH.11 #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_11 // PH.11
#define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_10 // PH.10 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_10 // PH.10
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03) #define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)
#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line11
#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line10
#define ROTARY_ENCODER_EXTI_IRQn1 EXTI15_10_IRQn
#define ROTARY_ENCODER_EXTI_IRQHandler1 EXTI15_10_IRQHandler
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOH
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource11
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource10
// Switches // Switches
#define SWITCHES_GPIO_REG_A_H GPIOH->IDR #define SWITCHES_GPIO_REG_A_H GPIOH->IDR

View file

@ -20,68 +20,6 @@
#include "opentx.h" #include "opentx.h"
/*
* Rotary encoder handling based on state table:
* Copyright (C) by Ben Buxton
*
* This includes the state table definition bellow
* as well as the implementation of checkRotaryEncoder().
*
* The below state table has, for each state (row), the new state
* to set based on the next encoder output. From left to right in,
* the table, the encoder outputs are 00, 01, 10, 11, and the value
* in that position is the new state to set.
*/
#define R_START 0x0
#define DIR_CW 0x10
#define DIR_CCW 0x20
// Use the half-step state table (emits a code at 00 and 11)
#define R_CCW_BEGIN 0x1
#define R_CW_BEGIN 0x2
#define R_START_M 0x3
#define R_CW_BEGIN_M 0x4
#define R_CCW_BEGIN_M 0x5
const unsigned char rotenc_table[6][4] = {
// R_START (00)
{R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START},
// R_CCW_BEGIN
{R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START},
// R_CW_BEGIN
{R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START},
// R_START_M (11)
{R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START},
// R_CW_BEGIN_M
{R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW},
// R_CCW_BEGIN_M
{R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW},
};
void checkRotaryEncoder()
{
static uint8_t state = 0;
uint32_t pins = ROTARY_ENCODER_POSITION();
state = rotenc_table[state & 0x0F][pins];
if ((state & 0x30) && !keyState(KEY_ENTER)) {
if ((state & 0x30) == DIR_CW) {
--rotencValue[0];
}
else {
++rotencValue[0];
}
#if !defined(BOOT)
if (g_eeGeneral.backlightMode & e_backlight_mode_keys)
backlightOn();
#endif
}
}
/*
* End of the rotary encoder handler code
*/
uint32_t readKeys() uint32_t readKeys()
{ {
uint32_t result = 0; uint32_t result = 0;

View file

@ -362,9 +362,6 @@ const int OpenTxSimulator::getCapability(Capability cap)
break; break;
case CAP_ROTARY_ENC : case CAP_ROTARY_ENC :
#ifdef ROTARY_ENCODERS
ret = ROTARY_ENCODERS;
#endif
break; break;
case CAP_ROTARY_ENC_NAV : case CAP_ROTARY_ENC_NAV :

View file

@ -150,9 +150,8 @@ void simuInit()
for (int i = 0; i < 2*NUM_TRIMS; i++) for (int i = 0; i < 2*NUM_TRIMS; i++)
simuSetTrim(i, false); simuSetTrim(i, false);
#if defined(ROTARY_ENCODERS) || defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
for (uint8_t i=0; i < DIM(rotencValue); i++) rotencValue = 0;
rotencValue[i] = 0;
#endif #endif
} }
@ -225,9 +224,6 @@ void simuSetKey(uint8_t key, bool state)
KEY_CASE(KEY_LEFT, KEYS_GPIO_REG_LEFT, KEYS_GPIO_PIN_LEFT) KEY_CASE(KEY_LEFT, KEYS_GPIO_REG_LEFT, KEYS_GPIO_PIN_LEFT)
KEY_CASE(KEY_UP, KEYS_GPIO_REG_UP, KEYS_GPIO_PIN_UP) KEY_CASE(KEY_UP, KEYS_GPIO_REG_UP, KEYS_GPIO_PIN_UP)
KEY_CASE(KEY_DOWN, KEYS_GPIO_REG_DOWN, KEYS_GPIO_PIN_DOWN) KEY_CASE(KEY_DOWN, KEYS_GPIO_REG_DOWN, KEYS_GPIO_PIN_DOWN)
#endif
#if defined(PCBSKY9X) && !defined(REVX) && !defined(AR9X) && defined(ROTARY_ENCODERS)
KEY_CASE(BTN_REa, PIOB->PIO_PDSR, 0x40)
#endif #endif
} }
} }
@ -692,6 +688,13 @@ void RCC_LSEConfig(uint8_t RCC_LSE) { }
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) { }; void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) { };
FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) { return SET; } FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) { return SET; }
// EXTI fake functions
void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex) { }
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct) { }
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) { return RESET; }
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct) { }
void EXTI_ClearITPendingBit(uint32_t EXTI_Line) { }
// RTC fake functions // RTC fake functions
ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct) { return SUCCESS; } ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct) { return SUCCESS; }
void RTC_TimeStructInit(RTC_TimeTypeDef* RTC_TimeStruct) { } void RTC_TimeStructInit(RTC_TimeTypeDef* RTC_TimeStruct) { }

View file

@ -475,10 +475,7 @@ void boardInit()
eepromInit(); eepromInit();
#if defined(ROTARY_ENCODERS) rotaryEncoderInit();
rotencInit();
#endif
init_SDcard(); init_SDcard();
} }
#else #else

View file

@ -38,11 +38,10 @@ void boardInit(void);
#define boardOff() pwrOff() #define boardOff() pwrOff()
// Rotary Encoder driver // Rotary Encoder driver
void rotencInit(); void rotaryEncoderInit();
void rotencEnd(); void rotaryEncoderEnd();
#if !defined(REVX) && !defined(AR9X) #if !defined(REVX) && !defined(AR9X)
#define ROTARY_ENCODERS 1
#define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_NAVIGATION
#define REA_DOWN() (!(PIOB->PIO_PDSR & 0x40)) #define REA_DOWN() (!(PIOB->PIO_PDSR & 0x40))
#else #else
@ -74,10 +73,6 @@ enum EnumKeys
TRM_RH_UP, TRM_RH_UP,
TRM_LAST = TRM_RH_UP, TRM_LAST = TRM_RH_UP,
#if defined(ROTARY_ENCODERS)
BTN_REa,
#endif
NUM_KEYS NUM_KEYS
}; };

View file

@ -109,10 +109,6 @@ void readKeysAndTrims()
{ {
uint32_t i; uint32_t i;
#if ROTARY_ENCODERS > 0
keys[BTN_REa].input(REA_DOWN());
#endif
uint8_t index = 0; uint8_t index = 0;
uint8_t keys_input = readKeys(); uint8_t keys_input = readKeys();
for (i = 1; i < 7; i++) { for (i = 1; i < 7; i++) {

View file

@ -20,7 +20,7 @@
#include "opentx.h" #include "opentx.h"
void rotencInit() void rotaryEncoderInit()
{ {
configure_pins(PIO_PC19 | PIO_PC21, PIN_ENABLE | PIN_INPUT | PIN_PORTC | PIN_PULLUP); // 19 and 21 are rotary encoder configure_pins(PIO_PC19 | PIO_PC21, PIN_ENABLE | PIN_INPUT | PIN_PORTC | PIN_PULLUP); // 19 and 21 are rotary encoder
configure_pins(PIO_PB6, PIN_ENABLE | PIN_INPUT | PIN_PORTB | PIN_PULLUP); // rotary encoder switch configure_pins(PIO_PB6, PIN_ENABLE | PIN_INPUT | PIN_PORTB | PIN_PULLUP); // rotary encoder switch
@ -28,7 +28,7 @@ void rotencInit()
NVIC_EnableIRQ(PIOC_IRQn); NVIC_EnableIRQ(PIOC_IRQn);
} }
void rotencEnd() void rotaryEncoderEnd()
{ {
NVIC_DisableIRQ(PIOC_IRQn); NVIC_DisableIRQ(PIOC_IRQn);
PIOC->PIO_IDR = PIO_PC19 | PIO_PC21; PIOC->PIO_IDR = PIO_PC19 | PIO_PC21;
@ -47,9 +47,9 @@ extern "C" void PIOC_IRQHandler()
dummy &= 0x05; // pick out the three bits dummy &= 0x05; // pick out the three bits
if (dummy != (Rotary_position & 0x05)) { if (dummy != (Rotary_position & 0x05)) {
if ((Rotary_position & 0x01) ^ ((dummy & 0x04) >> 2)) if ((Rotary_position & 0x01) ^ ((dummy & 0x04) >> 2))
incRotaryEncoder(0, -1); rotencValue -= 1;
else else
incRotaryEncoder(0, +1); rotencValue += 1;
Rotary_position &= ~0x45; Rotary_position &= ~0x45;
Rotary_position |= dummy; Rotary_position |= dummy;

View file

@ -188,6 +188,13 @@ if(NOT PCB STREQUAL XLITE)
) )
endif() endif()
if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X3)
set(TARGET_SRC
${TARGET_SRC}
../common/arm/stm32/rotary_encoder_driver.cpp
)
endif()
if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES) if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
add_definitions(-DBLUETOOTH) add_definitions(-DBLUETOOTH)
set(TARGET_SRC set(TARGET_SRC

View file

@ -88,10 +88,6 @@ void interrupt5ms()
per10ms(); per10ms();
DEBUG_TIMER_STOP(debugTimerPer10ms); DEBUG_TIMER_STOP(debugTimerPer10ms);
} }
#if defined(ROTARY_ENCODER_NAVIGATION)
checkRotaryEncoder();
#endif
} }
#if !defined(SIMU) #if !defined(SIMU)
@ -143,28 +139,53 @@ void sportUpdatePowerOff()
void boardInit() void boardInit()
{ {
#if !defined(SIMU) #if !defined(SIMU)
RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | PCBREV_RCC_AHB1Periph | RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph |
KEYS_RCC_AHB1Periph | LCD_RCC_AHB1Periph | PCBREV_RCC_AHB1Periph |
AUDIO_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph | KEYS_RCC_AHB1Periph |
ADC_RCC_AHB1Periph | I2C_RCC_AHB1Periph | LCD_RCC_AHB1Periph |
SD_RCC_AHB1Periph | HAPTIC_RCC_AHB1Periph | AUDIO_RCC_AHB1Periph |
INTMODULE_RCC_AHB1Periph | EXTMODULE_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph |
TELEMETRY_RCC_AHB1Periph | SPORT_UPDATE_RCC_AHB1Periph | ADC_RCC_AHB1Periph |
SERIAL_RCC_AHB1Periph | TRAINER_RCC_AHB1Periph | I2C_RCC_AHB1Periph |
HEARTBEAT_RCC_AHB1Periph | BT_RCC_AHB1Periph | GYRO_RCC_AHB1Periph, SD_RCC_AHB1Periph |
HAPTIC_RCC_AHB1Periph |
INTMODULE_RCC_AHB1Periph |
EXTMODULE_RCC_AHB1Periph |
TELEMETRY_RCC_AHB1Periph |
SPORT_UPDATE_RCC_AHB1Periph |
SERIAL_RCC_AHB1Periph |
TRAINER_RCC_AHB1Periph |
HEARTBEAT_RCC_AHB1Periph |
BT_RCC_AHB1Periph |
GYRO_RCC_AHB1Periph,
ENABLE); ENABLE);
RCC_APB1PeriphClockCmd(LCD_RCC_APB1Periph | AUDIO_RCC_APB1Periph | ADC_RCC_APB1Periph | RCC_APB1PeriphClockCmd(LCD_RCC_APB1Periph |
BACKLIGHT_RCC_APB1Periph | HAPTIC_RCC_APB1Periph | INTERRUPT_xMS_RCC_APB1Periph | AUDIO_RCC_APB1Periph |
TIMER_2MHz_RCC_APB1Periph | I2C_RCC_APB1Periph | ADC_RCC_APB1Periph |
SD_RCC_APB1Periph | TRAINER_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph |
TELEMETRY_RCC_APB1Periph | SERIAL_RCC_APB1Periph | HAPTIC_RCC_APB1Periph |
INTMODULE_RCC_APB1Periph | BT_RCC_APB1Periph | GYRO_RCC_APB1Periph, ENABLE); INTERRUPT_xMS_RCC_APB1Periph |
TIMER_2MHz_RCC_APB1Periph |
I2C_RCC_APB1Periph |
SD_RCC_APB1Periph |
TRAINER_RCC_APB1Periph |
TELEMETRY_RCC_APB1Periph |
SERIAL_RCC_APB1Periph |
INTMODULE_RCC_APB1Periph |
BT_RCC_APB1Periph |
GYRO_RCC_APB1Periph,
ENABLE);
RCC_APB2PeriphClockCmd(BACKLIGHT_RCC_APB2Periph | ADC_RCC_APB2Periph | RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG |
HAPTIC_RCC_APB2Periph | INTMODULE_RCC_APB2Periph | BACKLIGHT_RCC_APB2Periph |
EXTMODULE_RCC_APB2Periph | HEARTBEAT_RCC_APB2Periph | ADC_RCC_APB2Periph |
BT_RCC_APB2Periph, ENABLE); HAPTIC_RCC_APB2Periph |
INTMODULE_RCC_APB2Periph |
EXTMODULE_RCC_APB2Periph |
HEARTBEAT_RCC_APB2Periph |
BT_RCC_APB2Periph,
ENABLE);
#if defined(BLUETOOTH) #if defined(BLUETOOTH)
bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, true); bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, true);
@ -181,6 +202,11 @@ void boardInit()
#endif #endif
keysInit(); keysInit();
#if defined(ROTARY_ENCODER_NAVIGATION)
rotaryEncoderInit();
#endif
delaysInit(); delaysInit();
#if NUM_PWMSTICKS > 0 #if NUM_PWMSTICKS > 0

View file

@ -39,7 +39,9 @@ extern "C" {
#if defined(STM32F4) #if defined(STM32F4)
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_syscfg.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_exti.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_tim.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h"
#include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h"
@ -54,7 +56,9 @@ extern "C" {
#else #else
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h"
#include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h"
@ -420,7 +424,8 @@ uint32_t readTrims(void);
#if defined(PCBX9E) || defined(PCBX7) || defined(PCBX3) #if defined(PCBX9E) || defined(PCBX7) || defined(PCBX3)
// Rotary Encoder driver // Rotary Encoder driver
#define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_NAVIGATION
void checkRotaryEncoder(void); void rotaryEncoderInit(void);
void rotaryEncoderCheck(void);
#endif #endif
// WDT driver // WDT driver

View file

@ -81,28 +81,51 @@
// Rotary Encoder // Rotary Encoder
#if defined(PCBX9E) #if defined(PCBX9E)
#define ENC_GPIO GPIOD #define ROTARY_ENCODER_GPIO GPIOD
#define ENC_GPIO_PIN_A GPIO_Pin_12 // PD.12 #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_12 // PD.12
#define ENC_GPIO_PIN_B GPIO_Pin_13 // PD.13 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_13 // PD.13
#define ROTARY_ENCODER_POSITION() (ENC_GPIO->IDR >> 12) & 0x03 #define ROTARY_ENCODER_POSITION() (ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03
#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line12
#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line13
#define ROTARY_ENCODER_EXTI_IRQn1 EXTI15_10_IRQn
#define ROTARY_ENCODER_EXTI_IRQHandler1 EXTI15_10_IRQHandler
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOD
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource12
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource13
#elif defined(PCBX7) #elif defined(PCBX7)
#define ENC_GPIO GPIOE #define ROTARY_ENCODER_GPIO GPIOE
#define ENC_GPIO_PIN_A GPIO_Pin_9 // PE.09 #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09
#define ENC_GPIO_PIN_B GPIO_Pin_11 // PE.11 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_11 // PE.11
#define ROTARY_ENCODER_POSITION() (((ENC_GPIO->IDR >> 10) & 0x02) + ((ENC_GPIO->IDR >> 9) & 0x01)) #define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))
#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line9
#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line11
#define ROTARY_ENCODER_EXTI_IRQn1 EXTI9_5_IRQn
#define ROTARY_ENCODER_EXTI_IRQHandler1 EXTI9_5_IRQHandler
#define ROTARY_ENCODER_EXTI_IRQn2 EXTI15_10_IRQn
#define ROTARY_ENCODER_EXTI_IRQHandler2 EXTI15_10_IRQHandler
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource9
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource11
#elif defined(PCBX3) #elif defined(PCBX3)
#define ENC_GPIO GPIOE #define ROTARY_ENCODER_GPIO GPIOE
#define ENC_GPIO_PIN_A GPIO_Pin_10 // PE.10 #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_10 // PE.10
#define ENC_GPIO_PIN_B GPIO_Pin_12 // PE.12 #define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_12 // PE.12
#define ROTARY_ENCODER_POSITION() (((ENC_GPIO->IDR >> 12) & 0x01) + ((ENC_GPIO->IDR >> 9) & 0x02)) #define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line10
#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line12
#define ROTARY_ENCODER_EXTI_IRQn1 EXTI15_10_IRQn
#define ROTARY_ENCODER_EXTI_IRQHandler1 EXTI15_10_IRQHandler
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource10
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource12
#endif #endif
// This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys
#if defined(SIMU) && (defined(PCBX9E) || defined(PCBX7) || defined(PCBX3)) #if defined(SIMU) && (defined(PCBX9E) || defined(PCBX7) || defined(PCBX3))
#define KEYS_GPIO_REG_PLUS ENC_GPIO->IDR #define KEYS_GPIO_REG_PLUS ROTARY_ENCODER_GPIO->IDR
#define KEYS_GPIO_PIN_PLUS ENC_GPIO_PIN_A #define KEYS_GPIO_PIN_PLUS ROTARY_ENCODER_GPIO_PIN_A
#define KEYS_GPIO_REG_MINUS ENC_GPIO->IDR #define KEYS_GPIO_REG_MINUS ROTARY_ENCODER_GPIO->IDR
#define KEYS_GPIO_PIN_MINUS ENC_GPIO_PIN_B #define KEYS_GPIO_PIN_MINUS ROTARY_ENCODER_GPIO_PIN_B
#endif #endif
// Trims // Trims
@ -403,7 +426,7 @@
#define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_M_L) #define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_M_L)
#define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_N_H | SWITCHES_GPIO_PIN_N_L | SWITCHES_GPIO_PIN_R_H) #define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_N_H | SWITCHES_GPIO_PIN_N_L | SWITCHES_GPIO_PIN_R_H)
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR) #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR)
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_A_L | ENC_GPIO_PIN_A | ENC_GPIO_PIN_B) #define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_A_L | ROTARY_ENCODER_GPIO_PIN_A | ROTARY_ENCODER_GPIO_PIN_B)
#define KEYS_GPIOE_PINS (TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L| SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_I_L | SWITCHES_GPIO_PIN_L_H | SWITCHES_GPIO_PIN_L_L | SWITCHES_GPIO_PIN_M_H | SWITCHES_GPIO_PIN_O_L | SWITCHES_GPIO_PIN_R_L) #define KEYS_GPIOE_PINS (TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L| SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_I_L | SWITCHES_GPIO_PIN_L_H | SWITCHES_GPIO_PIN_L_L | SWITCHES_GPIO_PIN_M_H | SWITCHES_GPIO_PIN_O_L | SWITCHES_GPIO_PIN_R_L)
#define KEYS_GPIOF_PINS (KEYS_GPIO_PIN_ENTER | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | SWITCHES_GPIO_PIN_I_H | SWITCHES_GPIO_PIN_O_H | SWITCHES_GPIO_PIN_P_H | SWITCHES_GPIO_PIN_P_L | SWITCHES_GPIO_PIN_Q_H | SWITCHES_GPIO_PIN_Q_L) #define KEYS_GPIOF_PINS (KEYS_GPIO_PIN_ENTER | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | SWITCHES_GPIO_PIN_I_H | SWITCHES_GPIO_PIN_O_H | SWITCHES_GPIO_PIN_P_H | SWITCHES_GPIO_PIN_P_L | SWITCHES_GPIO_PIN_Q_H | SWITCHES_GPIO_PIN_Q_L)
#define KEYS_GPIOG_PINS (TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LHR| SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_J_H | SWITCHES_GPIO_PIN_J_L | SWITCHES_GPIO_PIN_K_H | SWITCHES_GPIO_PIN_K_L) #define KEYS_GPIOG_PINS (TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LHR| SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_J_H | SWITCHES_GPIO_PIN_J_L | SWITCHES_GPIO_PIN_K_H | SWITCHES_GPIO_PIN_K_L)
@ -431,7 +454,7 @@
#define KEYS_GPIOA_PINS SWITCHES_GPIO_PIN_B_H #define KEYS_GPIOA_PINS SWITCHES_GPIO_PIN_B_H
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU) #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU)
#define KEYS_GPIOD_PINS (TRIMS_GPIO_PIN_LHL | KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_H) #define KEYS_GPIOD_PINS (TRIMS_GPIO_PIN_LHL | KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_H)
#define KEYS_GPIOE_PINS (ENC_GPIO_PIN_A | ENC_GPIO_PIN_B | KEYS_GPIO_PIN_ENTER | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_F) #define KEYS_GPIOE_PINS (ROTARY_ENCODER_GPIO_PIN_A | ROTARY_ENCODER_GPIO_PIN_B | KEYS_GPIO_PIN_ENTER | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_F)
#elif defined(PCBX3) #elif defined(PCBX3)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS (GPIO_Pin_5) #define KEYS_GPIOA_PINS (GPIO_Pin_5)

View file

@ -20,10 +20,6 @@
#include "opentx.h" #include "opentx.h"
#if defined(ROTARY_ENCODER_NAVIGATION)
uint32_t rotencPosition;
#endif
uint32_t readKeys() uint32_t readKeys()
{ {
uint32_t result = 0; uint32_t result = 0;
@ -114,27 +110,6 @@ bool keyDown()
return readKeys() || readTrims(); return readKeys() || readTrims();
} }
#if defined(ROTARY_ENCODER_NAVIGATION)
void checkRotaryEncoder()
{
uint32_t newpos = ROTARY_ENCODER_POSITION();
if (newpos != rotencPosition && !keyState(KEY_ENTER)) {
if ((rotencPosition & 0x01) ^ ((newpos & 0x02) >> 1)) {
--rotencValue[0];
}
else {
++rotencValue[0];
}
rotencPosition = newpos;
#if !defined(BOOT)
if (g_eeGeneral.backlightMode & e_backlight_mode_keys) {
backlightOn();
}
#endif
}
}
#endif
/* TODO common to ARM */ /* TODO common to ARM */
void readKeysAndTrims() void readKeysAndTrims()
{ {
@ -289,8 +264,4 @@ void keysInit()
GPIO_InitStructure.GPIO_Pin = KEYS_GPIOG_PINS; GPIO_InitStructure.GPIO_Pin = KEYS_GPIOG_PINS;
GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_Init(GPIOG, &GPIO_InitStructure);
#endif #endif
#if defined(ROTARY_ENCODER_NAVIGATION)
rotencPosition = ROTARY_ENCODER_POSITION();
#endif
} }

View file

@ -31,9 +31,6 @@ const char STR_OPEN9X[] =
ISTR(VBEEPLEN) ISTR(VBEEPLEN)
#endif #endif
ISTR(VBEEPMODE) ISTR(VBEEPMODE)
#if defined(ROTARY_ENCODERS)
ISTR(VRENAVIG)
#endif
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
ISTR(VRENCODERS) ISTR(VRENCODERS)
#endif #endif
@ -224,9 +221,6 @@ const char STR_RSSISHUTDOWNALARM[] = TR_RSSISHUTDOWNALARM;
const char STR_MODEL_STILL_POWERED[] = TR_MODEL_STILL_POWERED; const char STR_MODEL_STILL_POWERED[] = TR_MODEL_STILL_POWERED;
const char STR_MODEL_SHUTDOWN[] = TR_MODEL_SHUTDOWN; const char STR_MODEL_SHUTDOWN[] = TR_MODEL_SHUTDOWN;
const char STR_PRESS_ENTER_TO_CONFIRM[] = TR_PRESS_ENTER_TO_CONFIRM; const char STR_PRESS_ENTER_TO_CONFIRM[] = TR_PRESS_ENTER_TO_CONFIRM;
#if defined(ROTARY_ENCODERS)
const char STR_RENAVIG[] = TR_RENAVIG;
#endif
const char STR_THROTTLEREVERSE[] = TR_THROTTLEREVERSE; const char STR_THROTTLEREVERSE[] = TR_THROTTLEREVERSE;
const char STR_TIMER_NAME[] = TR_TIMER_NAME; const char STR_TIMER_NAME[] = TR_TIMER_NAME;
const char STR_MINUTEBEEP[] = TR_MINUTEBEEP; const char STR_MINUTEBEEP[] = TR_MINUTEBEEP;

View file

@ -115,11 +115,7 @@ extern const char STR_OPEN9X[];
#define OFS_VBEEPLEN (OFS_NCHANNELS + sizeof(TR_NCHANNELS)) #define OFS_VBEEPLEN (OFS_NCHANNELS + sizeof(TR_NCHANNELS))
#define OFS_VBEEPMODE (OFS_VBEEPLEN + sizeof(TR_VBEEPLEN)) #define OFS_VBEEPMODE (OFS_VBEEPLEN + sizeof(TR_VBEEPLEN))
#endif #endif
#if defined(ROTARY_ENCODERS) #if defined(ROTARY_ENCODER_NAVIGATION)
#define OFS_VRENAVIG (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE))
#define OFS_VRENCODERS (OFS_VRENAVIG + sizeof(TR_VRENAVIG))
#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS))
#elif defined(ROTARY_ENCODER_NAVIGATION)
#define OFS_VRENCODERS (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) #define OFS_VRENCODERS (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE))
#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS)) #define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS))
#else #else
@ -275,10 +271,6 @@ extern const char STR_OPEN9X[];
#endif #endif
#define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES) #define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES)
#if defined(ROTARY_ENCODERS)
#define STR_VRENAVIG (STR_OPEN9X + OFS_VRENAVIG)
#endif
#if defined(ROTARY_ENCODER_NAVIGATION) #if defined(ROTARY_ENCODER_NAVIGATION)
#define STR_VRENCODERS (STR_OPEN9X + OFS_VRENCODERS) #define STR_VRENCODERS (STR_OPEN9X + OFS_VRENCODERS)
#endif #endif

View file

@ -297,21 +297,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0 ""RotEnc B\0 ")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("RoEn", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Stopky1\0 ""Stopky2\0 ""Stopky3\0 " #define TR_FSW_RESET_TIMERS "Stopky1\0 ""Stopky2\0 ""Stopky3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "Vše\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Vše\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "Vše\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Vše\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -302,21 +302,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("DGa\0""DGb\0", "DrehGb A\0""DrehGb B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("D.G.", "DrehGb\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Piep1\0""Piep2\0""Piep3\0""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Piep1\0""Piep2\0""Piep3\0""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -301,21 +301,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Flight\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Flight\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -299,21 +299,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Avs1""Avs2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Aviso1""Aviso2""Cheep ""Ratata""Tick ""Sirena""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Avs1""Avs2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Aviso1""Aviso2""Cheep ""Ratata""Tick ""Sirena""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -299,21 +299,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -301,21 +301,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("ERa\0""ERb\0", "Enc.Rot.A\0""Enc.Rot.B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("EncR", "Enc.Rot\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Chrono 1\0 ""Chrono 2\0 ""Chrono 3\0 " #define TR_FSW_RESET_TIMERS "Chrono 1\0 ""Chrono 2\0 ""Chrono 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Chr1""Chr2""Chr3" #define TR_FSW_RESET_TIMERS "Chr1""Chr2""Chr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "Tout" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Tout\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "Tout" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Tout\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -301,21 +301,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "EncRot A\0""EncRot B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "EncRot\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Tutto\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Tutto\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -303,21 +303,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0 ""RotEnc B\0 ")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Vliegdata\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Vliegdata\0" TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -302,21 +302,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if LCD_W >= 212 #if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Ost1""Ost2""Chee""Rata""Tik ""Syre""Dzwo""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Ostrz1""Ostrz1""Cheep ""Ratata""Tick ""Syrena""Dzwone""SciFi ""Robot ""Chirp ""Tada ""Krytcz""AlmZeg") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Ost1""Ost2""Chee""Rata""Tik ""Syre""Dzwo""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Ostrz1""Ostrz1""Cheep ""Ratata""Tick ""Syrena""Dzwone""SciFi ""Robot ""Chirp ""Tada ""Krytcz""AlmZeg")

View file

@ -298,21 +298,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "All\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Avis1 ""Avis2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Avis1 ""Avis2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")

View file

@ -299,21 +299,13 @@
#define TR_FSW_RESET_TELEM #define TR_FSW_RESET_TELEM
#endif #endif
#if ROTARY_ENCODERS == 2
#define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnk A\0""RotEnk B\0")
#elif ROTARY_ENCODERS == 1
#define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnk\0 ")
#else
#define TR_FSW_RESET_ROTENC
#endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#else #else
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#endif #endif
#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Alla\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) #define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Alla\0 " TR_FSW_RESET_TELEM)
#define LEN_FUNCSOUNDS TR("\004", "\006") #define LEN_FUNCSOUNDS TR("\004", "\006")
#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk")