From 647425fc1a07c194fd06a61391096c17b055362c Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Sat, 27 Jun 2020 17:56:19 +0200 Subject: [PATCH] Revert "V761 additonal channels" This reverts commit 7286049d0709d883a30ace3403ae18eda7928576. --- .travis.yml | 3 +- Multiprotocol/Multi.txt | 2 +- Multiprotocol/Multi_Names.ino | 2 +- Multiprotocol/Multiprotocol.h | 8 ++--- Multiprotocol/V761_nrf24l01.ino | 55 +++++++++++---------------------- Multiprotocol/_Config.h | 4 +-- Protocols_Details.md | 30 +++++++++--------- 7 files changed, 41 insertions(+), 63 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0d66371..8e4b7a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,8 +48,7 @@ before_install: buildMulti; exitcode=$((exitcode+$?)); mv build/Multiprotocol.ino.bin ./binaries/multi-orangerx-aetr-blue-inv-v$MULTI_VERSION.bin; - cp Multiprotocol/Multi.txt ./binaries/Multi.txt; - cp Lua_scripts/ ./binaries/; + cp Multiprotocol/Multi.txt ./binaries/Multi.txt; return $exitcode; }; elif [[ "$BOARD" == "multi4in1:avr:multiatmega328p:bootloader=none" ]]; then buildReleaseFiles(){ diff --git a/Multiprotocol/Multi.txt b/Multiprotocol/Multi.txt index 20b41cb..230c17b 100644 --- a/Multiprotocol/Multi.txt +++ b/Multiprotocol/Multi.txt @@ -45,7 +45,7 @@ 45,E01X,E012,E015,E016H 46,V911S,V911S,E119 47,GD00x,GD_V1,GD_V2 -48,V761,3CH,4CH +48,V761 49,KF606 50,Redpine,Fast,Slow 51,Potensic,A20 diff --git a/Multiprotocol/Multi_Names.ino b/Multiprotocol/Multi_Names.ino index f767605..19cc5cd 100644 --- a/Multiprotocol/Multi_Names.ino +++ b/Multiprotocol/Multi_Names.ino @@ -138,7 +138,7 @@ const char STR_SUBTYPE_FRSKYL[] = "\x08""LR12\0 ""LR12 6ch"; const char STR_SUBTYPE_WFLY[] = "\x06""WFR0xS"; const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync"; const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite"; -const char STR_SUBTYPE_V761[] = "\x03""3CH""4CH"; +const char STR_SUBTYPE_V761[] = "\x07""Std\0 ""Eachine"; enum { diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index c4b82c5..c651916 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -377,8 +377,8 @@ enum PELIKAN enum V761 { - V761_3CH = 0, - V761_4CH = 1, + V761_STD = 0, + V761_EACHINE= 1, }; #define NONE 0 @@ -974,8 +974,8 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p -- PELIKAN_PRO 0 PELIKAN_LITE 1 sub_protocol==V761 - V761_3CH 0 - V761_4CH 1 + V761_STD 0 + V761_EACHINE 1 Power value => 0x80 0=High/1=Low Stream[3] = option_protocol; diff --git a/Multiprotocol/V761_nrf24l01.ino b/Multiprotocol/V761_nrf24l01.ino index f29b581..6142341 100644 --- a/Multiprotocol/V761_nrf24l01.ino +++ b/Multiprotocol/V761_nrf24l01.ino @@ -53,8 +53,6 @@ static void __attribute__((unused)) V761_set_checksum() static void __attribute__((unused)) V761_send_packet() { - static bool calib=false, prev_ch6=false; - if(phase != V761_DATA) { packet[0] = rx_tx_addr[0]; @@ -71,7 +69,7 @@ static void __attribute__((unused)) V761_send_packet() packet[0] = convert_channel_8b(THROTTLE); // Throttle packet[2] = convert_channel_8b(ELEVATOR)>>1; // Elevator - if(sub_protocol==V761_3CH) + if(sub_protocol==V761_STD) { packet[1] = convert_channel_8b(RUDDER)>>1; // Rudder packet[3] = convert_channel_8b(AILERON)>>1; // Aileron @@ -83,8 +81,9 @@ static void __attribute__((unused)) V761_send_packet() } packet[5] = (packet_count++ / 3)<<6; - packet[4] = (packet[5] == 0x40) ? 0x1a : 0x20; // ? + packet[4] = (packet[5] == 0x40) ? 0x1a : 0x20; + // Channel 5 - Gyro mode is packet 5 if(CH5_SW) // Mode Expert Gyro off flags = 0x0c; else @@ -92,20 +91,14 @@ static void __attribute__((unused)) V761_send_packet() flags = 0x08; // Beginer mode (Gyro on, yaw and pitch rate limited) else flags = 0x0a; // Mid Mode ( Gyro on no rate limits) - - if(!prev_ch6 && CH6_SW) // -100% -> 100% launch gyro calib - calib=!calib; - prev_ch6 = CH6_SW; - if(calib) - flags |= 0x01; // Gyro calibration - packet[5] |= flags; - - packet[6] = GET_FLAG(CH7_SW, 0x20) // Flip - |GET_FLAG(CH8_SW, 0x08) // RTH activation - |GET_FLAG(CH9_SW, 0x10); // RTH on/off - if(sub_protocol==V761_3CH) - packet[6] |= 0x80; // unknown, set on original V761-1 dump but not on eachine dumps, keeping for compatibility + if(sub_protocol==V761_STD) + packet[6] = 0x80; // unknown + else + { + packet[6] = GET_FLAG(CH5_SW, 0x20); // Flip + // RTH??? + } //packet counter if(packet_count >= 12) @@ -143,30 +136,22 @@ static void __attribute__((unused)) V761_init() static void __attribute__((unused)) V761_initialize_txid() { - switch(RX_num%5) + // TODO: try arbitrary rx_tx_addr & frequencies (except hopping_frequency[0]) + switch(RX_num%3) { case 1: //Dump from air on Protonus TX memcpy(rx_tx_addr,(uint8_t *)"\xE8\xE4\x45\x09",4); - memcpy(hopping_frequency,(uint8_t *)"\x0D\x21",2); + memcpy(hopping_frequency,(uint8_t *)"\x0D\x21\x44",3); break; case 2: //Dump from air on mshagg2 TX memcpy(rx_tx_addr,(uint8_t *)"\xAE\xD1\x45\x09",4); - memcpy(hopping_frequency,(uint8_t *)"\x13\x1D",2); - break; - case 3: //Dump from air on MikeHRC Eachine TX - memcpy(rx_tx_addr,(uint8_t *)"\x08\x03\x00\xA0",4); // To be checked - memcpy(hopping_frequency,(uint8_t *)"\x0D\x21",2); // To be checked - break; - case 4: //Dump from air on Crashanium Eachine TX - memcpy(rx_tx_addr,(uint8_t *)"\x58\x08\x00\xA0",4); // To be checked - memcpy(hopping_frequency,(uint8_t *)"\x0D\x31",3); // To be checked + memcpy(hopping_frequency,(uint8_t *)"\x13\x1D\x4A",3); break; default: //Dump from SPI memcpy(rx_tx_addr,(uint8_t *)"\x6f\x2c\xb1\x93",4); - memcpy(hopping_frequency,(uint8_t *)"\x14\x1e",3); + memcpy(hopping_frequency,(uint8_t *)"\x14\x1e\x4b",3); break; } - hopping_frequency[2]=hopping_frequency[0]+0x37; } uint16_t V761_callback() @@ -216,14 +201,10 @@ uint16_t V761_callback() uint16_t initV761(void) { + BIND_IN_PROGRESS; + bind_counter = V761_BIND_COUNT; V761_initialize_txid(); - if(IS_BIND_IN_PROGRESS) - { - bind_counter = V761_BIND_COUNT; - phase = V761_BIND1; - } - else - phase = V761_DATA; + phase = V761_BIND1; V761_init(); hopping_frequency_no = 0; packet_count = 0; diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 69740c6..2209b62 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -715,8 +715,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= { JXD506 V2X2_MR101 PROTO_V761 - V761_3CH - V761_4CH + V761_STD + V761_EACHINE PROTO_V911S V911S_STD V911S_E119 diff --git a/Protocols_Details.md b/Protocols_Details.md index c9943dd..902d6c5 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -1464,27 +1464,25 @@ A|E|T|R|FLIP|LIGHT ## V761 - *48* -Warning: **Only 5 IDs**, you can cycle through them using RX_Num. +Warning: **Only 3 IDs**, you can cycle through them using RX_Num. + +### Sub_protocol Std - *0* +Model: Volantex V761 and may be other + +CH1|CH2|CH3|CH4|CH5 +---|---|---|---|--- +-|E|T|R|GYRO Gyro: -100%=Beginer mode (Gyro on, yaw and pitch rate limited), 0%=Mid Mode ( Gyro on no rate limits), +100%=Mode Expert Gyro off -Calib: momentary switch, calib will happen one the channel goes from -100% to +100% -Flip: momentary switch: hold flip(+100%), indicate flip direction with Ele or Ail, release flip(-100%) -RTN_ACT and RTN: -100% disable, +100% enable -### Sub_protocol 3CH - *0* -Model: Volantex V761-1, V761-3 and may be others +### Sub_protocol Eachine - *1* +Model: Eachine P51-D, F4U, F22 and may be other -CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9 ----|---|---|---|---|---|---|---|--- --|E|T|R|GYRO|CALIB|FLIP|RTN_ACT|RTN - -### Sub_protocol 4CH - *1* -Model: Volantex V761-4+ and Eachine P51-D, F4U, F22 and may be others - -CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9 ----|---|---|---|---|---|---|---|--- -A|E|T|R|GYRO|CALIB|FLIP|RTN_ACT|RTN +CH1|CH2|CH3|CH4|CH5|CH6 +---|---|---|---|---|--- +A|E|T|R|GYRO|FLIP +Gyro: -100%=Beginer mode (Gyro on, yaw and pitch rate limited), 0%=Mid Mode ( Gyro on no rate limits), +100%=Mode Expert Gyro off ## V911S - *46* This protocol is known to be problematic because it's using the xn297L emulation with a transmission speed of 250kbps therefore it doesn't work very well with every modules, this is an hardware issue with the accuracy of the components.