mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 09:15:38 +03:00
[sky9x] Issue 111 fixed
[stock] 120bytes saved with DBLKEYS option
This commit is contained in:
parent
fddbe300a1
commit
bd2def4d4d
4 changed files with 38 additions and 9 deletions
|
@ -78,4 +78,11 @@ extern uint8_t maxTemperature ; // Raw temp reading
|
|||
#define strcpy_P strcpy
|
||||
#define strcat_P strcat
|
||||
|
||||
extern uint32_t read_keys();
|
||||
#define KEYS_PRESSED() (~read_keys())
|
||||
#define DBLKEYS_PRESSED_RGT_LFT(i) (in & (0x20 + 0x40))
|
||||
#define DBLKEYS_PRESSED_UP_DWN(i) (in & (0x10 + 0x08))
|
||||
#define DBLKEYS_PRESSED_RGT_UP(i) (in & (0x20 + 0x10))
|
||||
#define DBLKEYS_PRESSED_LFT_DWN(i) (in & (0x40 + 0x08))
|
||||
|
||||
#endif
|
||||
|
|
|
@ -74,13 +74,13 @@ void Key::input(bool val, EnumKeys enuk)
|
|||
{
|
||||
uint8_t t_vals = m_vals ;
|
||||
t_vals <<= 1 ;
|
||||
if(val) t_vals |= 1; //portbit einschieben
|
||||
if (val) t_vals |= 1; //portbit einschieben
|
||||
m_vals = t_vals ;
|
||||
|
||||
m_cnt++;
|
||||
|
||||
if(m_state && m_vals==0){ //gerade eben sprung auf 0
|
||||
if(m_state!=KSTATE_KILLED) {
|
||||
if (m_state && m_vals==0) { //gerade eben sprung auf 0
|
||||
if (m_state != KSTATE_KILLED) {
|
||||
putEvent(EVT_KEY_BREAK(enuk));
|
||||
}
|
||||
m_cnt = 0;
|
||||
|
@ -88,7 +88,7 @@ void Key::input(bool val, EnumKeys enuk)
|
|||
}
|
||||
switch(m_state){
|
||||
case KSTATE_OFF:
|
||||
if(m_vals==FFVAL){ //gerade eben sprung auf ff
|
||||
if (m_vals == FFVAL) { //gerade eben sprung auf ff
|
||||
m_state = KSTATE_START;
|
||||
m_cnt = 0;
|
||||
}
|
||||
|
|
|
@ -74,22 +74,23 @@ int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, ui
|
|||
int16_t newval = val;
|
||||
|
||||
#if defined(DBLKEYS)
|
||||
if (keyState(KEY_RIGHT) && keyState(KEY_LEFT)) {
|
||||
uint8_t in = KEYS_PRESSED();
|
||||
if (DBLKEYS_PRESSED_RGT_LFT(in)) {
|
||||
newval = -val;
|
||||
killEvents(KEY_LEFT);
|
||||
killEvents(KEY_RIGHT);
|
||||
}
|
||||
else if (s_editMode && keyState(KEY_RIGHT) && keyState(KEY_UP)) {
|
||||
else if (s_editMode && DBLKEYS_PRESSED_RGT_UP(in)) {
|
||||
newval = (i_max > 100 ? 100 : i_max);
|
||||
killEvents(KEY_RIGHT);
|
||||
killEvents(KEY_UP);
|
||||
}
|
||||
else if (s_editMode && keyState(KEY_LEFT) && keyState(KEY_DOWN)) {
|
||||
else if (s_editMode && DBLKEYS_PRESSED_LFT_DWN(in)) {
|
||||
newval = (i_min < -100 ? -100 : i_min);
|
||||
killEvents(KEY_LEFT);
|
||||
killEvents(KEY_DOWN);
|
||||
}
|
||||
else if (s_editMode && keyState(KEY_UP) && keyState(KEY_DOWN)) {
|
||||
else if (s_editMode && DBLKEYS_PRESSED_UP_DWN(in)) {
|
||||
newval = 0;
|
||||
killEvents(KEY_UP);
|
||||
killEvents(KEY_DOWN);
|
||||
|
|
23
src/open9x.h
23
src/open9x.h
|
@ -244,7 +244,22 @@ extern uint8_t s_bind_allowed;
|
|||
# define OUT_H_14DBUSY 6
|
||||
#endif
|
||||
|
||||
#else // boards prior to v4 ...
|
||||
inline uint8_t KEYS_PRESSED()
|
||||
{
|
||||
uint8_t tin = ~PINL;
|
||||
uint8_t in;
|
||||
in = (tin & 0x0f) << 3;
|
||||
in |= (tin & 0x30) >> 3;
|
||||
return in;
|
||||
}
|
||||
|
||||
#define DBLKEYS_PRESSED_RGT_LFT(i) (in & ((1<<INP_P_KEY_RGT) + (1<<INP_P_KEY_LFT)))
|
||||
#define DBLKEYS_PRESSED_UP_DWN(i) (in & ((1<<INP_P_KEY_UP) + (1<<INP_P_KEY_DWN)))
|
||||
#define DBLKEYS_PRESSED_RGT_UP(i) (in & ((1<<INP_P_KEY_RGT) + (1<<INP_P_KEY_UP)))
|
||||
#define DBLKEYS_PRESSED_LFT_DWN(i) (in & ((1<<INP_P_KEY_LFT) + (1<<INP_P_KEY_DWN)))
|
||||
|
||||
|
||||
#elif defined(PCBSTD) // stock board ...
|
||||
|
||||
#define OUT_B_LIGHT 7
|
||||
#define INP_B_KEY_LFT 6
|
||||
|
@ -286,6 +301,12 @@ extern uint8_t s_bind_allowed;
|
|||
#define INP_G_RF_POW 1
|
||||
#define INP_G_RuddDR 0
|
||||
|
||||
#define KEYS_PRESSED() (~PINB)
|
||||
#define DBLKEYS_PRESSED_RGT_LFT(i) (in & ((1<<INP_B_KEY_RGT) + (1<<INP_B_KEY_LFT)))
|
||||
#define DBLKEYS_PRESSED_UP_DWN(i) (in & ((1<<INP_B_KEY_UP) + (1<<INP_B_KEY_DWN)))
|
||||
#define DBLKEYS_PRESSED_RGT_UP(i) (in & ((1<<INP_B_KEY_RGT) + (1<<INP_B_KEY_UP)))
|
||||
#define DBLKEYS_PRESSED_LFT_DWN(i) (in & ((1<<INP_B_KEY_LFT) + (1<<INP_B_KEY_DWN)))
|
||||
|
||||
#endif // defined (PCBV4)
|
||||
|
||||
#if defined(PCBARM)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue