From 0d9544d914cac988ae6fb31e0a9c2dd25b36c07c Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 10 Feb 2013 10:22:33 +0000 Subject: [PATCH] [sky9x] Rotary encoder button may be used to clear alarms / warnings --- src/general_menus.cpp | 8 -------- src/menus.h | 22 +++++++++++++++------- src/open9x.h | 11 ++++------- src/sky9x/board_sky9x.h | 6 ++++++ src/sky9x/keys_driver.cpp | 4 ++-- 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/general_menus.cpp b/src/general_menus.cpp index bcb1a688f..64c3014cb 100644 --- a/src/general_menus.cpp +++ b/src/general_menus.cpp @@ -1068,14 +1068,6 @@ void menuGeneralCalib(uint8_t event) if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i])>50) { g_eeGeneral.calibMid[i] = reusableBuffer.calib.midVals[i]; int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i]; - -// Stick tolerance varies between transmitters, Higher is better -#if defined (PCB9XR) || defined (PCB9XR128) - #define STICK_TOLERANCE 16 -#else - #define STICK_TOLERANCE 64 -#endif - g_eeGeneral.calibSpanNeg[i] = v - v/STICK_TOLERANCE; v = reusableBuffer.calib.hiVals[i] - reusableBuffer.calib.midVals[i]; g_eeGeneral.calibSpanPos[i] = v - v/STICK_TOLERANCE; diff --git a/src/menus.h b/src/menus.h index fed5d3838..e5a6d07a3 100644 --- a/src/menus.h +++ b/src/menus.h @@ -292,14 +292,22 @@ void menuChannelsMonitor(uint8_t event); #define LABEL(...) (uint8_t)-1 -#if defined(ROTARY_ENCODERS) || defined(PCBX9D) -#define CURSOR_MOVED_LEFT(event) (EVT_KEY_MASK(event) == KEY_LEFT || lastCursorMove < 0) -#define CURSOR_MOVED_RIGHT(event) (EVT_KEY_MASK(event) == KEY_RIGHT || lastCursorMove > 0) -#define REPEAT_LAST_CURSOR_MOVE() if (lastCursorMove) lastCursorMove *= 2; else m_posHorz = 0 +#if defined(PCBX9D) || defined(PCBACT) + #define KEY_MOVE_UP KEY_PLUS + #define KEY_MOVE_DOWN KEY_MINUS #else -#define CURSOR_MOVED_LEFT(event) (EVT_KEY_MASK(event) == KEY_LEFT) -#define CURSOR_MOVED_RIGHT(event) (EVT_KEY_MASK(event) == KEY_RIGHT) -#define REPEAT_LAST_CURSOR_MOVE() m_posHorz = 0; + #define KEY_MOVE_UP KEY_UP + #define KEY_MOVE_DOWN KEY_DOWN +#endif + +#if defined(ROTARY_ENCODERS) || defined(PCBX9D) + #define CURSOR_MOVED_LEFT(event) (EVT_KEY_MASK(event) == KEY_LEFT || lastCursorMove < 0) + #define CURSOR_MOVED_RIGHT(event) (EVT_KEY_MASK(event) == KEY_RIGHT || lastCursorMove > 0) + #define REPEAT_LAST_CURSOR_MOVE() if (lastCursorMove) lastCursorMove *= 2; else m_posHorz = 0 +#else + #define CURSOR_MOVED_LEFT(event) (EVT_KEY_MASK(event) == KEY_LEFT) + #define CURSOR_MOVED_RIGHT(event) (EVT_KEY_MASK(event) == KEY_RIGHT) + #define REPEAT_LAST_CURSOR_MOVE() m_posHorz = 0; #endif #endif diff --git a/src/open9x.h b/src/open9x.h index 8d867c90a..d0d54363c 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -1259,14 +1259,11 @@ char * strcat_zchar(char * dest, char * name, uint8_t size, const char *defaultN #define ZLEN(s) zlen(s, sizeof(s)) #endif -// TODO perhaps better in menus.h ? - -#if defined(PCBX9D) || defined(PCBACT) -#define KEY_MOVE_UP KEY_PLUS -#define KEY_MOVE_DOWN KEY_MINUS +// Stick tolerance varies between transmitters, Higher is better +#if defined (PCB9XR) || defined (PCB9XR128) + #define STICK_TOLERANCE 16 #else -#define KEY_MOVE_UP KEY_UP -#define KEY_MOVE_DOWN KEY_DOWN + #define STICK_TOLERANCE 64 #endif #endif diff --git a/src/sky9x/board_sky9x.h b/src/sky9x/board_sky9x.h index 276ff5214..3a569e6f9 100644 --- a/src/sky9x/board_sky9x.h +++ b/src/sky9x/board_sky9x.h @@ -236,4 +236,10 @@ void eepromInit(); void rotencInit(); void rotencEnd(); +#if defined(ROTARY_ENCODERS) + #define rotencDown() (!(PIOB->PIO_PDSR & 0x40)) +#else + #define rotencDown() 0 +#endif + #endif diff --git a/src/sky9x/keys_driver.cpp b/src/sky9x/keys_driver.cpp index 7ae0ead3a..3e89be1c8 100644 --- a/src/sky9x/keys_driver.cpp +++ b/src/sky9x/keys_driver.cpp @@ -113,7 +113,7 @@ uint32_t readTrims() uint8_t keyDown() { - return ~readKeys() & 0x7E ; + return (~readKeys() & 0x7E) || rotencDown(); } void readKeysAndTrims() @@ -121,7 +121,7 @@ void readKeysAndTrims() register uint32_t i; #if defined(ROTARY_ENCODERS) - keys[BTN_REa].input(!(PIOB->PIO_PDSR & 0x40), BTN_REa); + keys[BTN_REa].input(rotencDown(), BTN_REa); #endif uint8_t enuk = KEY_MENU;