1
0
Fork 0
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:
bsongis 2012-09-04 10:09:35 +00:00
parent fddbe300a1
commit bd2def4d4d
4 changed files with 38 additions and 9 deletions

View file

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

View file

@ -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;
}

View file

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

View file

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