Skip to content

Commit

Permalink
Merge pull request #26 from silpstream/u7e_master
Browse files Browse the repository at this point in the history
devo7e-256 bugfix for original switch mod
As it is a bug fix concerning a marginal platform I am merging it in the hope that later maintainer of the code will refactor it.
  • Loading branch information
victzh committed Oct 14, 2016
2 parents 821361d + bd77f89 commit 7909925
Show file tree
Hide file tree
Showing 6 changed files with 366 additions and 170 deletions.
4 changes: 2 additions & 2 deletions src/target/devo7e-256/Makefile.inc
Expand Up @@ -19,7 +19,7 @@ else

$(TARGET).fs_wrapper: $(LAST_MODEL)
perl -p -i -e 's/; has_pa-cyrf6936 = 1/ has_pa-cyrf6936 = 0/' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;switch_types: 3x2, 3x1, 2x2/;switch_types: 3x4, 3x3, 3x2, 3x1, 2x2, 2x1, potx2, potx1\n;May occur more than once if necessary./' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;extra-switches=/; extra-switches = 3x4\n; extra-switches = 2x2\n; extra-switches = potx2/' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;switch_types: 3x2, 3x1, 2x2/;switch_types: 3x4, 3x3, 3x2, 3x1, 2x8, 2x7, 2x6, 2x5, 2x4, 2x3, 2x2, 2x1, potx2, potx1\n;May occur more than once if necessary.\n;Add nostock if stock FMOD and HOLD switches have been removed./' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;extra-switches=/; extra-switches = nostock\n; extra-switches = 3x4\n; extra-switches = 2x2\n; extra-switches = potx2/' filesystem/$(FILESYSTEM)/hardware.ini

endif
4 changes: 4 additions & 0 deletions src/target/devo7e-256/capabilities.h
Expand Up @@ -25,6 +25,10 @@
CHANDEF(SWE1)
CHANDEF(SWF0)
CHANDEF(SWF1)
CHANDEF(SWG0)
CHANDEF(SWG1)
CHANDEF(SWH0)
CHANDEF(SWH1)
#endif

#ifdef UNDEF_INP
Expand Down
190 changes: 147 additions & 43 deletions src/target/devo7e-256/channels.c
Expand Up @@ -31,24 +31,57 @@
#define SWITCH_3x2 ((1 << INP_SWA0) | (1 << INP_SWA1) | (1 << INP_SWA2) \
| (1 << INP_SWB0) | (1 << INP_SWB1) | (1 << INP_SWB2))
#define SWITCH_3x1 ((1 << INP_SWA0) | (1 << INP_SWA1) | (1 << INP_SWA2))
#define SWITCH_2x2 ((1 << INP_SWE0) | (1 << INP_SWE1) \
#define SWITCH_2x8 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1) \
| (1 << INP_SWB0) | (1 << INP_SWB1) \
| (1 << INP_SWA0) | (1 << INP_SWA1))
#define SWITCH_2x7 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1) \
| (1 << INP_SWB0) | (1 << INP_SWB1))
#define SWITCH_2x6 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1))
#define SWITCH_2x5 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1))
#define SWITCH_2x4 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1))
#define SWITCH_2x3 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1))
#define SWITCH_2x1 ((1 << INP_SWE0) | (1 << INP_SWE1))
#define SWITCH_2x2 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1))
#define SWITCH_2x1 ((1 << INP_SWH0) | (1 << INP_SWH1))
#define SWITCH_STOCK ((1 << INP_HOLD0) | (1 << INP_HOLD1) \
| (1 << INP_FMOD0) | (1 << INP_FMOD1))

//Duplicated in tx_buttons.c
enum {
SW_A0 = 23,
SW_A2,
SW_B0,
SW_B2,
SW_C0,
SW_C2,
SW_D0,
SW_D2,
SW_E0,
SW_F0
SW_01 = 23,
SW_02,
SW_03,
SW_04,
SW_05,
SW_06,
SW_07,
SW_08,
SW_09,
SW_10
};

#define POT_2 ((1 << INP_AUX4) | (1 << INP_AUX5))
Expand Down Expand Up @@ -82,17 +115,15 @@ void CHAN_Init()
gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO4);

/* configure switches for digital I/O */
if ((~Transmitter.ignore_src & SWITCH_3x3) == SWITCH_3x3) {
gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN,
GPIO10 | GPIO11);
gpio_set(GPIOC, GPIO10 | GPIO11);
}
gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN,
GPIO10 | GPIO11);
gpio_set(GPIOC, GPIO10 | GPIO11);
}

s32 CHAN_ReadRawInput(int channel)
{
s32 value = 0;
if ((~Transmitter.ignore_src & SWITCH_3x3) != SWITCH_3x3) {
if ((~Transmitter.ignore_src & SWITCH_STOCK) == SWITCH_STOCK) {
switch(channel) {
case INP_HOLD0: value = gpio_get(GPIOC, GPIO11); break;
case INP_HOLD1: value = ! gpio_get(GPIOC, GPIO11); break;
Expand All @@ -104,38 +135,100 @@ s32 CHAN_ReadRawInput(int channel)
case INP_SWB0: value = global_extra_switches & 0x01; break;
case INP_SWB1: value = !(global_extra_switches & 0x03); break;
case INP_SWB2: value = global_extra_switches & 0x02; break;
case INP_SWE0: value = global_extra_switches & 0x04; break;
case INP_SWE1: value = !(global_extra_switches & 0x0c); break;
case INP_SWF0: value = global_extra_switches & 0x01; break;
case INP_SWF1: value = !(global_extra_switches & 0x03); break;
case INP_SWG0: value = global_extra_switches & 0x04; break;
case INP_SWG1: value = !(global_extra_switches & 0x0c); break;
case INP_SWH0: value = global_extra_switches & 0x01; break;
case INP_SWH1: value = !(global_extra_switches & 0x03); break;
}
} else {
if ((~Transmitter.ignore_src & SWITCH_3x1) == SWITCH_3x1) {
switch(channel) {
case INP_SWA0: value = (global_extra_switches & (1 << (SW_01 - 1))); break;
case INP_SWA1: value = (!(global_extra_switches & (1 << (SW_01 - 1))) && !(global_extra_switches & (1 << (SW_02 - 1)))); break;
case INP_SWA2: value = (global_extra_switches & (1 << (SW_02 - 1))); break;
}
} else if ((~Transmitter.ignore_src & SWITCH_2x8) == SWITCH_2x8) {
switch(channel) {
case INP_SWA0: value = !(global_extra_switches & (1 << (SW_03 - 1))); break;
case INP_SWA1: value = (global_extra_switches & (1 << (SW_03 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_3x2) == SWITCH_3x2) {
switch(channel) {
case INP_SWB0: value = (global_extra_switches & (1 << (SW_03 - 1))); break;
case INP_SWB1: value = (!(global_extra_switches & (1 << (SW_03 - 1))) && !(global_extra_switches & (1 << (SW_04 - 1)))); break;
case INP_SWB2: value = (global_extra_switches & (1 << (SW_04 - 1))); break;
}
} else if ((~Transmitter.ignore_src & SWITCH_2x7) == SWITCH_2x7) {
switch(channel) {
case INP_SWB0: value = !(global_extra_switches & (1 << (SW_04 - 1))); break;
case INP_SWB1: value = (global_extra_switches & (1 << (SW_04 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_3x3) == SWITCH_3x3) {
switch(channel) {
case INP_SWC0: value = (global_extra_switches & (1 << (SW_05 - 1))); break;
case INP_SWC1: value = (!(global_extra_switches & (1 << (SW_05 - 1))) && !(global_extra_switches & (1 << (SW_06 - 1)))); break;
case INP_SWC2: value = (global_extra_switches & (1 << (SW_06 - 1))); break;
}
} else if ((~Transmitter.ignore_src & SWITCH_2x6) == SWITCH_2x6) {
switch(channel) {
case INP_SWC0: value = !(global_extra_switches & (1 << (SW_05 - 1))); break;
case INP_SWC1: value = (global_extra_switches & (1 << (SW_05 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_3x4) == SWITCH_3x4) {
switch(channel) {
case INP_SWD0: value = (global_extra_switches & (1 << (SW_07 - 1))); break;
case INP_SWD1: value = (!(global_extra_switches & (1 << (SW_07 - 1))) && !(global_extra_switches & (1 << (SW_08 - 1)))); break;
case INP_SWD2: value = (global_extra_switches & (1 << (SW_08 - 1))); break;
}
} else if ((~Transmitter.ignore_src & SWITCH_2x5) == SWITCH_2x5) {
switch(channel) {
case INP_SWD0: value = !(global_extra_switches & (1 << (SW_06 - 1))); break;
case INP_SWD1: value = (global_extra_switches & (1 << (SW_06 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_2x4) == SWITCH_2x4) {
switch(channel) {
case INP_SWE0: value = !(global_extra_switches & (1 << (SW_07 - 1))); break;
case INP_SWE1: value = (global_extra_switches & (1 << (SW_07 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_2x3) == SWITCH_2x3) {
switch(channel) {
case INP_SWF0: value = !(global_extra_switches & (1 << (SW_08 - 1))); break;
case INP_SWF1: value = (global_extra_switches & (1 << (SW_08 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_2x2) == SWITCH_2x2) {
switch(channel) {
case INP_SWG0: value = !(global_extra_switches & (1 << (SW_09 - 1))); break;
case INP_SWG1: value = (global_extra_switches & (1 << (SW_09 - 1))); break;
}
}
if ((~Transmitter.ignore_src & SWITCH_2x1) == SWITCH_2x1) {
switch(channel) {
case INP_SWH0: value = !(global_extra_switches & (1 << (SW_10 - 1))); break;
case INP_SWH1: value = (global_extra_switches & (1 << (SW_10 - 1))); break;
}
}
}
if ((~Transmitter.ignore_src & POT_1) == POT_1) {
switch(channel) {
case INP_AUX4: value = adc_array_raw[4]; break;
}
}
if ((~Transmitter.ignore_src & POT_2) == POT_2) {
switch(channel) {
case INP_SWA0: value = (global_extra_switches & (1 << (SW_A0 - 1))); break;
case INP_SWA1: value = (!(global_extra_switches & (1 << (SW_A0 - 1))) && !(global_extra_switches & (1 << (SW_A2 - 1)))); break;
case INP_SWA2: value = (global_extra_switches & (1 << (SW_A2 - 1))); break;
case INP_SWB0: value = (global_extra_switches & (1 << (SW_B0 - 1))); break;
case INP_SWB1: value = (!(global_extra_switches & (1 << (SW_B0 - 1))) && !(global_extra_switches & (1 << (SW_B2 - 1)))); break;
case INP_SWB2: value = (global_extra_switches & (1 << (SW_B2 - 1))); break;
case INP_SWC0: value = (global_extra_switches & (1 << (SW_C0 - 1))); break;
case INP_SWC1: value = (!(global_extra_switches & (1 << (SW_C0 - 1))) && !(global_extra_switches & (1 << (SW_C2 - 1)))); break;
case INP_SWC2: value = (global_extra_switches & (1 << (SW_C2 - 1))); break;
case INP_SWD0: value = (global_extra_switches & (1 << (SW_D0 - 1))); break;
case INP_SWD1: value = (!(global_extra_switches & (1 << (SW_D0 - 1))) && !(global_extra_switches & (1 << (SW_D2 - 1)))); break;
case INP_SWD2: value = (global_extra_switches & (1 << (SW_D2 - 1))); break;
case INP_SWE0: value = !(global_extra_switches & (1 << (SW_E0 - 1))); break;
case INP_SWE1: value = (global_extra_switches & (1 << (SW_E0 - 1))); break;
case INP_SWF0: value = !(global_extra_switches & (1 << (SW_F0 - 1))); break;
case INP_SWF1: value = (global_extra_switches & (1 << (SW_F0 - 1))); break;
case INP_AUX5: value = adc_array_raw[5]; break;
}
}
switch(channel) {
case INP_THROTTLE: value = adc_array_raw[0]; break; // bug fix: right vertical
case INP_AILERON: value = adc_array_raw[1]; break; // bug fix: right horizon
case INP_RUDDER: value = adc_array_raw[2]; break; // bug fix: left horizon
case INP_ELEVATOR: value = adc_array_raw[3]; break; // bug fix: left vertical
case INP_AUX4: value = adc_array_raw[4]; break; // bug fix: left horizon
case INP_AUX5: value = adc_array_raw[5]; break; // bug fix: left vertical
}
return value;
}
Expand Down Expand Up @@ -181,6 +274,18 @@ void CHAN_SetSwitchCfg(const char *str)
Transmitter.ignore_src &= ~SWITCH_3x2;
} else if(strcmp(str, "3x1") == 0) {
Transmitter.ignore_src &= ~SWITCH_3x1;
} else if(strcmp(str, "2x8") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x8;
} else if(strcmp(str, "2x7") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x7;
} else if(strcmp(str, "2x6") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x6;
} else if(strcmp(str, "2x5") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x5;
} else if(strcmp(str, "2x4") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x4;
} else if(strcmp(str, "2x3") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x3;
} else if(strcmp(str, "2x2") == 0) {
Transmitter.ignore_src &= ~SWITCH_2x2;
} else if(strcmp(str, "2x1") == 0) {
Expand All @@ -189,10 +294,9 @@ void CHAN_SetSwitchCfg(const char *str)
Transmitter.ignore_src &= ~POT_2;
} else if(strcmp(str, "potx1") == 0) {
Transmitter.ignore_src &= ~POT_1;
} else if(strcmp(str, "nostock") == 0) {
Transmitter.ignore_src |= SWITCH_STOCK;
} else {
Transmitter.ignore_src = ~IGNORE_MASK & ~SWITCH_STOCK;
}
if ((~Transmitter.ignore_src & SWITCH_3x3) == SWITCH_3x3) {
Transmitter.ignore_src |= SWITCH_STOCK;
}
}
79 changes: 56 additions & 23 deletions src/target/devo7e-256/tx_buttons.c
Expand Up @@ -29,34 +29,67 @@
#define SWITCH_3x2 ((1 << INP_SWA0) | (1 << INP_SWA1) | (1 << INP_SWA2) \
| (1 << INP_SWB0) | (1 << INP_SWB1) | (1 << INP_SWB2))
#define SWITCH_3x1 ((1 << INP_SWA0) | (1 << INP_SWA1) | (1 << INP_SWA2))
#define SWITCH_2x2 ((1 << INP_SWE0) | (1 << INP_SWE1) \
#define SWITCH_2x8 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1) \
| (1 << INP_SWB0) | (1 << INP_SWB1) \
| (1 << INP_SWA0) | (1 << INP_SWA1))
#define SWITCH_2x7 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1) \
| (1 << INP_SWB0) | (1 << INP_SWB1))
#define SWITCH_2x6 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1) \
| (1 << INP_SWC0) | (1 << INP_SWC1))
#define SWITCH_2x5 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1) \
| (1 << INP_SWD0) | (1 << INP_SWD1))
#define SWITCH_2x4 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1) \
| (1 << INP_SWE0) | (1 << INP_SWE1))
#define SWITCH_2x3 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1) \
| (1 << INP_SWF0) | (1 << INP_SWF1))
#define SWITCH_2x1 ((1 << INP_SWE0) | (1 << INP_SWE1))
#define SWITCH_NONE ((1 << INP_HOLD0) | (1 << INP_HOLD1) \
| (1 << INP_FMOD0) | (1 << INP_FMOD1))
#define SWITCH_2x2 ((1 << INP_SWH0) | (1 << INP_SWH1) \
| (1 << INP_SWG0) | (1 << INP_SWG1))
#define SWITCH_2x1 ((1 << INP_SWH0) | (1 << INP_SWH1))
#define SWITCH_STOCK ((1 << INP_HOLD0) | (1 << INP_HOLD1) \
| (1 << INP_FMOD0) | (1 << INP_FMOD1))

enum {
SW_A0 = 23,
SW_A2,
SW_B0,
SW_B2,
SW_C0,
SW_C2,
SW_D0,
SW_D2,
SW_E0,
SW_F0
SW_01 = 23,
SW_02,
SW_03,
SW_04,
SW_05,
SW_06,
SW_07,
SW_08,
SW_09,
SW_10
};

u32 global_extra_switches = 0;
static const u16 columns[] = {GPIO5, GPIO6, GPIO7, GPIO8, 0xffff};
static const u16 rows[] = {GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, 0xffff};
static const u8 buttonmap[] = {
// C.6 C.7 C.8 C.9 C.10 C.11
/*B.5*/ BUT_TRIM_RH_POS, BUT_TRIM_RH_NEG, BUT_TRIM_RV_POS, BUT_TRIM_RV_NEG, SW_D0, SW_D2,
/*B.6*/ SW_F0, BUT_ENTER, BUT_RIGHT, BUT_LEFT, SW_C0, SW_C2,
/*B.7*/ BUT_TRIM_LV_POS, BUT_TRIM_LV_NEG, BUT_TRIM_LH_NEG, BUT_TRIM_LH_POS, SW_A0, SW_A2,
/*B.8*/ SW_E0, BUT_DOWN, BUT_UP, BUT_EXIT, SW_B0, SW_B2,
/*B.5*/ BUT_TRIM_RH_POS, BUT_TRIM_RH_NEG, BUT_TRIM_RV_POS, BUT_TRIM_RV_NEG, SW_07, SW_08,
/*B.6*/ SW_10, BUT_ENTER, BUT_RIGHT, BUT_LEFT, SW_05, SW_06,
/*B.7*/ BUT_TRIM_LV_POS, BUT_TRIM_LV_NEG, BUT_TRIM_LH_NEG, BUT_TRIM_LH_POS, SW_01, SW_02,
/*B.8*/ SW_09, BUT_DOWN, BUT_UP, BUT_EXIT, SW_03, SW_04,
};

// Extra switch connections
Expand Down Expand Up @@ -118,24 +151,24 @@ u32 ScanButtons()
idx++;
}
}
if (((~Transmitter.ignore_src && SWITCH_NONE) != SWITCH_NONE) && ((~Transmitter.ignore_src && SWITCH_3x3) != SWITCH_3x3)) {
if ((((~Transmitter.ignore_src & SWITCH_2x2) == SWITCH_2x2) || ((~Transmitter.ignore_src & SWITCH_3x1) == SWITCH_3x1)) && ((~Transmitter.ignore_src & SWITCH_STOCK) == SWITCH_STOCK)) {
//Write to C.6, read B
if (result == 0) {
if (!(result & 0xFFFF)) {
gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO6);
gpio_clear(GPIOC, GPIO6);
u32 port = gpio_port_read(GPIOB);
gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO6);
gpio_set(GPIOC, GPIO6);
if ((~Transmitter.ignore_src && SWITCH_3x1) == SWITCH_3x1) {
if (((~Transmitter.ignore_src & SWITCH_3x1) == SWITCH_3x1) && ((~Transmitter.ignore_src & SWITCH_3x2) != SWITCH_3x2)) {
global_extra_switches = (((~port) >> 4) & 0x04) | (((~port) >> 5) & 0x08);
} else if ((~Transmitter.ignore_src && SWITCH_2x2) == SWITCH_2x2) {
} else if ((~Transmitter.ignore_src & SWITCH_2x2) == SWITCH_2x2) {
global_extra_switches = (port>>6)&0x05;
} else {
global_extra_switches = (~(port>>5))&0xf;
}
}
}
if (!(result & 0xFFFF) && ((~Transmitter.ignore_src & SWITCH_3x3) == SWITCH_3x3))
if (!(result & 0xFFFF) && ((~Transmitter.ignore_src & SWITCH_STOCK) != SWITCH_STOCK))
global_extra_switches = result;
return result & 0xFFFF;
}
4 changes: 2 additions & 2 deletions src/target/emu_devo7e-256/Makefile.inc
Expand Up @@ -8,6 +8,6 @@ include target/common/emu/Makefile.inc
ifdef BUILD_TARGET
$(TARGET).fs_wrapper: $(LAST_MODEL)
perl -p -i -e 's/; has_pa-cyrf6936 = 1/ has_pa-cyrf6936 = 0/' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;switch_types: 3x2, 3x1, 2x2/;switch_types: 3x4, 3x3, 3x2, 3x1, 2x2, 2x1, potx2, potx1\n;May occur more than once if necessary./' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;extra-switches=/; extra-switches = 3x4\n; extra-switches = 2x2\n; extra-switches = potx2/' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;switch_types: 3x2, 3x1, 2x2/;switch_types: 3x4, 3x3, 3x2, 3x1, 2x8, 2x7, 2x6, 2x5, 2x4, 2x3, 2x2, 2x1, potx2, potx1\n;May occur more than once if necessary.\n;Add nostock if stock FMOD and HOLD switches have been removed./' filesystem/$(FILESYSTEM)/hardware.ini
perl -p -i -e 's/;extra-switches=/; extra-switches = nostock\n; extra-switches = 3x4\n; extra-switches = 2x2\n; extra-switches = potx2/' filesystem/$(FILESYSTEM)/hardware.ini
endif

0 comments on commit 7909925

Please sign in to comment.