diff -r 7ae49cbd53df src/pages/common/_model_page.c --- a/src/pages/common/_model_page.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/pages/common/_model_page.c Fri Nov 29 16:08:13 2013 +0100 @@ -139,7 +139,9 @@ if (changed && Model.type != 0) { //Standard GUI is not supported Model.mixer_mode = MIXER_ADVANCED; + #if !defined(NO_STANDARD_GUI) guiObject_t *obj = _get_obj(ITEM_GUI, 0); + #endif if(obj) GUI_Redraw(obj); } diff -r 7ae49cbd53df src/pages/common/_pages.c --- a/src/pages/common/_pages.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/pages/common/_pages.c Fri Nov 29 16:08:13 2013 +0100 @@ -79,6 +79,7 @@ #ifdef PAGEID_MODELMENU case PAGEID_MODELMENU: #endif +#ifndef NO_STANDARD_GUI case PAGEID_REVERSE: case PAGEID_DREXP: case PAGEID_SUBTRIM: @@ -90,6 +91,7 @@ case PAGEID_SWASH: case PAGEID_FAILSAFE: case PAGEID_SWITCHASSIGN: +#endif return 0; } } else { diff -r 7ae49cbd53df src/protocol/dsm2.c --- a/src/protocol/dsm2.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/dsm2.c Fri Nov 29 16:08:13 2013 +0100 @@ -33,6 +33,8 @@ #endif #ifdef PROTO_HAS_CYRF6936 +#ifdef PROTO_DSM + #ifdef MODULAR //Reduce size #define RANDOM_CHANNELS 0 @@ -749,3 +751,4 @@ } #endif +#endif \ No newline at end of file diff -r 7ae49cbd53df src/protocol/flysky_a7105.c --- a/src/protocol/flysky_a7105.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/flysky_a7105.c Fri Nov 29 16:08:13 2013 +0100 @@ -32,6 +32,7 @@ #endif #ifdef PROTO_HAS_A7105 +#ifdef PROTO_Flysky //Fewer bind packets in the emulator so we can get right to the important bits #ifdef EMULATOR @@ -262,3 +263,4 @@ return 0; } #endif +#endif diff -r 7ae49cbd53df src/protocol/frsky1way_cc2500.c --- a/src/protocol/frsky1way_cc2500.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/frsky1way_cc2500.c Fri Nov 29 16:08:13 2013 +0100 @@ -32,6 +32,7 @@ #endif #ifdef PROTO_HAS_CC2500 +#ifdef PROTO_Frsky #include "iface_cc2500.h" @@ -272,3 +273,4 @@ return 0; } #endif +#endif diff -r 7ae49cbd53df src/protocol/frsky2way_cc2500.c --- a/src/protocol/frsky2way_cc2500.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/frsky2way_cc2500.c Fri Nov 29 16:08:13 2013 +0100 @@ -32,6 +32,7 @@ #endif #ifdef PROTO_HAS_CC2500 +#ifdef PROTO_Frsky #include "iface_cc2500.h" @@ -266,4 +267,4 @@ return 0; } #endif - +#endif diff -r 7ae49cbd53df src/protocol/hubsan_a7105.c --- a/src/protocol/hubsan_a7105.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/hubsan_a7105.c Fri Nov 29 16:08:13 2013 +0100 @@ -33,8 +33,10 @@ extern unsigned _data_loadaddr; const unsigned long protocol_type = (unsigned long)&_data_loadaddr; #endif + #ifdef PROTO_HAS_A7105 - +#ifdef PROTO_Hubsan4 + enum{ FLAG_FLIP = 0x08, FLAG_LED = 0x04 @@ -331,3 +333,4 @@ return 0; } #endif +#endif diff -r 7ae49cbd53df src/protocol/protocol.h --- a/src/protocol/protocol.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/protocol.h Fri Nov 29 16:08:13 2013 +0100 @@ -2,30 +2,68 @@ #else #ifdef PROTO_HAS_CYRF6936 + PROTODEF(PROTOCOL_DEVO, CYRF6936, EATRG, DEVO_Cmds, "DEVO") + +#ifdef PROTO_WK2x01 PROTODEF(PROTOCOL_WK2801, CYRF6936, EATRG, WK2x01_Cmds, "WK2801") +#endif //PROTO_WK2x01 #ifndef DEFINE_FUNCS +#ifdef PROTO_WK2x01 PROTODEF(PROTOCOL_WK2601, CYRF6936, EATRG, WK2x01_Cmds, "WK2601") PROTODEF(PROTOCOL_WK2401, CYRF6936, EATRG, WK2x01_Cmds, "WK2401") +#endif //PROTO_WK2x01 + +#ifdef PROTO_DSM PROTODEF(PROTOCOL_DSM2, CYRF6936, TAERG, DSM2_Cmds, "DSM2") +#endif //PROTO_DSM + #endif + +#ifdef PROTO_DSM PROTODEF(PROTOCOL_DSMX, CYRF6936, TAERG, DSM2_Cmds, "DSMX") +#endif //PROTO_DSM + +#ifdef PROTO_J6Pro PROTODEF(PROTOCOL_J6PRO, CYRF6936, AETRG, J6PRO_Cmds, "J6Pro") +#endif //PROTO_J6Pro + #endif //PROTO_HAS_CYRF6936 + #ifdef PROTO_HAS_A7105 +#ifdef PROTO_Flysky PROTODEF(PROTOCOL_FLYSKY, A7105, AETRG, FLYSKY_Cmds, "Flysky") +#endif //PROTO_Flysky + +#ifdef PROTO_Hubsan4 PROTODEF(PROTOCOL_HUBSAN, A7105, AETRG, HUBSAN_Cmds, "Hubsan4") +#endif //PROTO_NO_Hubsan4 + #endif //PROTO_HAS_A7105 -#ifdef PROTO_HAS_CC2500 + +#ifdef PROTO_CC2500 + +//#ifdef PROTO_Frsky //PROTODEF(PROTOCOL_FRSKY1WAY, CC2500, AETRG, FRSKY1WAY_Cmds, "Frsky-1") //PROTODEF(PROTOCOL_FRSKY2WAY, CC2500, AETRG, FRSKY2WAY_Cmds, "Frsky-2") +//#endif //PROTO_Frsky + +#ifdef PROTO_Skyartec PROTODEF(PROTOCOL_SKYARTEC, CC2500, AETRG, SKYARTEC_Cmds, "Skyartec") +#endif //PROTO_Skyartec + #endif //PROTO_HAS_CC2500 + #ifdef PROTO_HAS_NRF24L01 + +#ifdef PROTO_V202 PROTODEF(PROTOCOL_V202, NRF24L01, AETRG, V202_Cmds, "V202") +#endif //PROTO_V202 + #endif //PROTO_HAS_NRF24L01 PROTODEF(PROTOCOL_PPM, TX_MODULE_LAST, NULL, PPMOUT_Cmds, "PPM") PROTODEF(PROTOCOL_USBHID, TX_MODULE_LAST, NULL, USBHID_Cmds, "USB HID") + #endif //PROTODEF diff -r 7ae49cbd53df src/protocol/v202_nrf24l01.c --- a/src/protocol/v202_nrf24l01.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/v202_nrf24l01.c Fri Nov 29 16:08:13 2013 +0100 @@ -18,6 +18,7 @@ #define V202_Cmds PROTO_Cmds #pragma long_calls #endif + #include "common.h" #include "interface.h" #include "mixer.h" @@ -34,6 +35,7 @@ #endif #ifdef PROTO_HAS_NRF24L01 +#ifdef PROTO_V202 #include "iface_nrf24l01.h" @@ -498,3 +500,4 @@ return 0; } #endif +#endif \ No newline at end of file diff -r 7ae49cbd53df src/protocol/wk2x01.c --- a/src/protocol/wk2x01.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/protocol/wk2x01.c Fri Nov 29 16:08:13 2013 +0100 @@ -19,6 +19,7 @@ #pragma long_calls #endif + #include "common.h" #include "interface.h" #include "mixer.h" @@ -34,6 +35,7 @@ #include #ifdef PROTO_HAS_CYRF6936 +#ifdef PROTO_WK2x01 #define PKTS_PER_CHANNEL 4 @@ -577,3 +579,4 @@ return 0; } #endif +#endif \ No newline at end of file diff -r 7ae49cbd53df src/target.h --- a/src/target.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target.h Fri Nov 29 16:08:13 2013 +0100 @@ -170,10 +170,7 @@ }; u8 *BOOTLOADER_Read(int idx); -#define PROTO_HAS_CYRF6936 -#define PROTO_HAS_A7105 -#define PROTO_HAS_CC2500 -#define PROTO_HAS_NRF24L01 + //Ensure functions are loaded for protocol modules void SPI_ProtoInit(); struct mcu_pin; diff -r 7ae49cbd53df src/target/devo10/target_defs.h --- a/src/target/devo10/target_defs.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo10/target_defs.h Fri Nov 29 16:08:13 2013 +0100 @@ -32,4 +32,27 @@ #define VOLTAGE_OFFSET 421 #define ENABLE_LAYOUT_EDIT 1 + + +//Modules + +#define PROTO_HAS_CYRF6936 1 +#define PROTO_HAS_A7105 1 +#define PROTO_HAS_CC2500 1 +#define PROTO_HAS_NRF24L01 1 + +//Protocols + +#define PROTO_WK2x01 1 +#define PROTO_DSM 1 +#define PROTO_J6Pro 1 +#define PROTO_Flysky 1 +#define PROTO_Hubsan4 1 +#define PROTO_Frsky 1 +#define PROTO_Skyartec 1 +#define PROTO_V202 1 +#define PROTO_PPM 1 +#define PROTO_USBHID 1 + + #endif //_DEVO10_TARGET_H_ diff -r 7ae49cbd53df src/target/devo12/target_defs.h --- a/src/target/devo12/target_defs.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo12/target_defs.h Fri Nov 29 16:08:13 2013 +0100 @@ -45,4 +45,25 @@ int PARFlash_ReadBytesStopCR(u32 readAddress, u32 length, u8 * buffer); void PARFlash_ReadBytes(u32 readAddress, u32 length, u8 * buffer); + +//Modules + +#define PROTO_HAS_CYRF6936 1 +#define PROTO_HAS_A7105 1 +#define PROTO_HAS_CC2500 1 +#define PROTO_HAS_NRF24L01 1 + +//Protocols + +#define PROTO_WK2x01 1 +#define PROTO_DSM 1 +#define PROTO_J6Pro 1 +#define PROTO_Flysky 1 +#define PROTO_Hubsan4 1 +#define PROTO_Frsky 1 +#define PROTO_Skyartec 1 +#define PROTO_V202 1 +#define PROTO_PPM 1 +#define PROTO_USBHID 1 + #endif //_DEVO12_TARGET_H_ diff -r 7ae49cbd53df src/target/devo6/target_defs.h --- a/src/target/devo6/target_defs.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo6/target_defs.h Fri Nov 29 16:08:13 2013 +0100 @@ -32,4 +32,24 @@ #define VOLTAGE_NUMERATOR 210 #define VOLTAGE_OFFSET 303 +//Modules + +#define PROTO_HAS_CYRF6936 1 +#define PROTO_HAS_A7105 1 +#define PROTO_HAS_CC2500 1 +#define PROTO_HAS_NRF24L01 1 + +//Protocols + +#define PROTO_WK2x01 1 +#define PROTO_DSM 1 +#define PROTO_J6Pro 1 +#define PROTO_Flysky 1 +#define PROTO_Hubsan4 1 +#define PROTO_Frsky 1 +#define PROTO_Skyartec 1 +#define PROTO_V202 1 +#define PROTO_PPM 1 +#define PROTO_USBHID 1 + #endif //_DEVO6_TARGET_H_ diff -r 7ae49cbd53df src/target/devo7e/Makefile.inc --- a/src/target/devo7e/Makefile.inc Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo7e/Makefile.inc Fri Nov 29 16:08:13 2013 +0100 @@ -3,8 +3,8 @@ CRC_OFFSET := 8192 OPTIMIZE_DFU := 1 -#NO_STANDARD_GUI := 1 -MODULAR := 0x20004000 +NO_STANDARD_GUI := 1 +//MODULAR := 0x20004000 DFU_ARGS := -c 7 -b 0x08003000 include target/common_devo/Makefile.inc diff -r 7ae49cbd53df src/target/devo7e/capabilities.h --- a/src/target/devo7e/capabilities.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo7e/capabilities.h Fri Nov 29 16:08:13 2013 +0100 @@ -7,15 +7,19 @@ CHANDEF(HOLD1) CHANDEF(FMOD0) CHANDEF(FMOD1) + CHANDEF(AIL_DR0) + CHANDEF(AIL_DR1) + CHANDEF(ELE_DR0) + CHANDEF(ELE_DR1) #endif #ifdef UNDEF_INP #define INP_RUD_DR0 INP_HOLD0 #define INP_RUD_DR1 INP_HOLD1 -#define INP_ELE_DR0 INP_HOLD0 -#define INP_ELE_DR1 INP_HOLD1 -#define INP_AIL_DR0 INP_HOLD0 -#define INP_AIL_DR1 INP_HOLD1 +//#define INP_ELE_DR0 INP_HOLD0 +//#define INP_ELE_DR1 INP_HOLD1 +//#define INP_AIL_DR0 INP_HOLD0 +//#define INP_AIL_DR1 INP_HOLD1 #define INP_FMOD2 INP_FMOD1 #define INP_MIX0 INP_FMOD0 #define INP_MIX1 INP_FMOD1 diff -r 7ae49cbd53df src/target/devo7e/channels.c --- a/src/target/devo7e/channels.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo7e/channels.c Fri Nov 29 16:08:13 2013 +0100 @@ -40,6 +40,7 @@ gpio_set(GPIOC, GPIO10 | GPIO11); } +extern u32 glbl_buttons; s32 CHAN_ReadRawInput(int channel) { s32 value = 0; @@ -52,6 +53,12 @@ case INP_HOLD1: value = ! gpio_get(GPIOC, GPIO11); break; case INP_FMOD0: value = gpio_get(GPIOC, GPIO10); break; case INP_FMOD1: value = ! gpio_get(GPIOC, GPIO10); break; + + case INP_AIL_DR0: value = !(glbl_buttons & (1 << 31)); break; + case INP_AIL_DR1: value = !!(glbl_buttons & (1 << 31)); break; + + case INP_ELE_DR0: value = !(glbl_buttons & (1 << 30)); break; + case INP_ELE_DR1: value = !!(glbl_buttons & (1 << 30)); break; } return value; } diff -r 7ae49cbd53df src/target/devo7e/target_defs.h --- a/src/target/devo7e/target_defs.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo7e/target_defs.h Fri Nov 29 16:08:13 2013 +0100 @@ -8,7 +8,7 @@ //#ifdef BUILDTYPE_DEV //No room for debug and standard gui -//#define NO_STANDARD_GUI 1 +#define NO_STANDARD_GUI 1 //#endif #define NO_LANGUAGE_SUPPORT 1 @@ -37,4 +37,28 @@ #define VOLTAGE_NUMERATOR 216 #define VOLTAGE_OFFSET 249 +#define ENABLE_LAYOUT_EDIT 1 +//#define DATALOG_ENABLED 1 + + +//Modules + +#define PROTO_HAS_CYRF6936 1 +#define PROTO_HAS_A7105 1 +#define PROTO_HAS_CC2500 1 +//#define PROTO_HAS_NRF24L01 1 + +//Protocols + +//#define PROTO_WK2x01 1 +//#define PROTO_DSM 1 +//#define PROTO_J6Pro 1 +#define PROTO_Flysky 1 +//#define PROTO_Hubsan4 1 +//#define PROTO_Frsky 1 +#define PROTO_Skyartec 1 +//#define PROTO_V202 1 +#define PROTO_PPM 1 +#define PROTO_USBHID 1 + #endif //_DEVO7E_TARGET_H_ diff -r 7ae49cbd53df src/target/devo7e/tx_buttons.c --- a/src/target/devo7e/tx_buttons.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo7e/tx_buttons.c Fri Nov 29 16:08:13 2013 +0100 @@ -20,9 +20,9 @@ static const u16 rows[] = {GPIO6, GPIO7, GPIO8, GPIO9, 0xffff}; static const u8 buttonmap[] = { BUT_TRIM_RH_POS, BUT_TRIM_RH_NEG, BUT_TRIM_RV_POS, BUT_TRIM_RV_NEG, - BUT_LAST, BUT_ENTER, BUT_RIGHT, BUT_LEFT, + 32, BUT_ENTER, BUT_RIGHT, BUT_LEFT, BUT_TRIM_LV_POS, BUT_TRIM_LV_NEG, BUT_TRIM_LH_NEG, BUT_TRIM_LH_POS, - BUT_LAST, BUT_DOWN, BUT_UP, BUT_EXIT, + 31, BUT_DOWN, BUT_UP, BUT_EXIT, }; #define COL_PORT GPIOB @@ -46,30 +46,33 @@ gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO5 | GPIO6 | GPIO7 | GPIO8); - gpio_set(GPIOB, GPIO5 | GPIO6| GPIO7 | GPIO8); + gpio_clear(GPIOB, GPIO5 | GPIO6| GPIO7 | GPIO8); /* PortC 6-9 are pull-up inputs */ gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO6 | GPIO7 | GPIO8 | GPIO9); - gpio_set(GPIOC, GPIO6 | GPIO7 | GPIO8 | GPIO9); + gpio_clear(GPIOC, GPIO6 | GPIO7 | GPIO8 | GPIO9); } +u32 glbl_buttons = 0; u32 ScanButtons() { u8 idx = 0; u32 result = 0; const u16 *c, *r; - gpio_set(COL_PORT, COL_PORT_MASK); + gpio_clear(COL_PORT, COL_PORT_MASK); for(c = columns; *c != 0xffff; c++) { + gpio_set(COL_PORT, *c); + u16 but = gpio_port_read(ROW_PORT); gpio_clear(COL_PORT, *c); - u16 but = gpio_port_read(ROW_PORT); - gpio_set(COL_PORT, *c); for(r = rows; *r != 0xffff; r++) { - if(! (but & *r)) { + if((but & *r)) { result |= 1 << (buttonmap[idx] - 1); } idx++; } } - return result; + if (! (result & 0x3FFFFFFF)) + glbl_buttons = result; + return result & 0x3FFFFFFF; } diff -r 7ae49cbd53df src/target/devo8/target_defs.h --- a/src/target/devo8/target_defs.h Wed Nov 27 08:13:27 2013 +0100 +++ b/src/target/devo8/target_defs.h Fri Nov 29 16:08:13 2013 +0100 @@ -33,4 +33,24 @@ #define VOLTAGE_NUMERATOR 210 #define VOLTAGE_OFFSET 303 +//Modules + +#define PROTO_HAS_CYRF6936 1 +#define PROTO_HAS_A7105 1 +#define PROTO_HAS_CC2500 1 +#define PROTO_HAS_NRF24L01 1 + +//Protocols + +#define PROTO_WK2x01 1 +#define PROTO_DSM 1 +#define PROTO_J6Pro 1 +#define PROTO_Flysky 1 +#define PROTO_Hubsan4 1 +#define PROTO_Frsky 1 +#define PROTO_Skyartec 1 +#define PROTO_V202 1 +#define PROTO_PPM 1 +#define PROTO_USBHID 1 + #endif //_DEVO8_TARGET_H_ diff -r 7ae49cbd53df src/telemetry.c --- a/src/telemetry.c Wed Nov 27 08:13:27 2013 +0100 +++ b/src/telemetry.c Fri Nov 29 16:08:13 2013 +0100 @@ -12,6 +12,7 @@ You should have received a copy of the GNU General Public License along with Deviation. If not, see . */ + #include "common.h" #include "music.h" #include "config/model.h" @@ -20,8 +21,12 @@ static void _get_volt_str(char *str, u32 value); static void _get_temp_str(char *str, int value); + #include "telemetry/telem_devo.c" + +#ifdef PROTO_DSM #include "telemetry/telem_dsm.c" +#endif #define CAP_DSM 1 @@ -83,7 +88,11 @@ case TELEM_GPS_TIME: return t->gps.time; } +#ifdef PROTO_DSM return TELEMETRY_Type() == TELEM_DEVO ? _devo_value(t, idx) : _dsm_value(t, idx); +#else + return _devo_value(t, idx); +#endif } const char * TELEMETRY_GetValueStrByValue(char *str, u8 telem, s32 value) @@ -133,9 +142,13 @@ break; } default: +#ifdef PROTO_DSM return TELEMETRY_Type() == TELEM_DEVO ? _devo_str_by_value(str, telem, value) : _dsm_str_by_value(str, telem, value); +#else + return _devo_str_by_value(str, telem, value); +#endif } return str; } @@ -148,9 +161,13 @@ const char * TELEMETRY_Name(char *str, u8 telem) { +#ifdef PROTO_DSM return (TELEMETRY_Type() == TELEM_DEVO) ? _devo_name(str, telem) : _dsm_name(str, telem); +#else + return _devo_name(str, telem); +#endif } const char * TELEMETRY_ShortName(char *str, u8 telem) @@ -162,17 +179,25 @@ case TELEM_GPS_SPEED: strcpy(str, _tr("Speed")); break; case TELEM_GPS_TIME: strcpy(str, _tr("Time")); break; default: +#ifdef PROTO_DSM return TELEMETRY_Type() == TELEM_DEVO ? _devo_short_name(str, telem) : _dsm_short_name(str, telem); +#else + return _devo_short_name(str, telem); +#endif } return str; } s32 TELEMETRY_GetMaxValue(u8 telem) { +#ifdef PROTO_DSM return TELEMETRY_Type() == TELEM_DEVO ? _devo_get_max_value(telem) : _dsm_get_max_value(telem); +#else + return _devo_get_max_value(telem); +#endif } void TELEMETRY_SetUpdated(int telem) @@ -182,23 +207,31 @@ int TELEMETRY_Type() { +#ifdef PROTO_DSM return (Telemetry.capabilities & CAP_DSM) ? TELEM_DSM : TELEM_DEVO; +#else + return TELEM_DEVO; +#endif } void TELEMETRY_SetTypeByProtocol(enum Protocols protocol) { +#ifdef PROTO_DSM if (protocol == PROTOCOL_DSM2 || protocol == PROTOCOL_DSMX) TELEMETRY_SetType(TELEM_DSM); else +#endif TELEMETRY_SetType(TELEM_DEVO); } void TELEMETRY_SetType(int type) { + #ifdef PROTO_DSM if (type == TELEM_DSM) Telemetry.capabilities |= CAP_DSM; else Telemetry.capabilities &= ~CAP_DSM; + #endif } # Written by Antonio Galea - 2010/11/18 # Distributed under Gnu LGPL 3.0