diff --git a/Multiprotocol/Bayang_nrf24l01.ino b/Multiprotocol/Bayang_nrf24l01.ino index 08a3d0f..0661625 100644 --- a/Multiprotocol/Bayang_nrf24l01.ino +++ b/Multiprotocol/Bayang_nrf24l01.ino @@ -75,7 +75,9 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind) else { uint16_t val; - switch (sub_protocol) { + uint8_t dyntrim = 1; + switch (sub_protocol) + { case X16_AH: case IRDRONE: packet[0] = 0xA6; @@ -97,22 +99,27 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind) if(Servo_AUX4) packet[2] |= BAYANG_FLAG_VIDEO; if(Servo_AUX5) + { packet[2] |= BAYANG_FLAG_HEADLESS; + dyntrim = 0; + } //Flags packet[3] packet[3] = 0x00; if(Servo_AUX6) packet[3] = BAYANG_FLAG_INVERTED; if(Servo_AUX7) - packet[3] |= BAYANG_FLAG_TAKE_OFF; + dyntrim = 0; if(Servo_AUX8) + packet[3] |= BAYANG_FLAG_TAKE_OFF; + if(Servo_AUX9) packet[3] |= BAYANG_FLAG_EMG_STOP; //Aileron val = convert_channel_10b(AILERON); - packet[4] = (val>>8) + ((val>>2) & 0xFC); + packet[4] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C); packet[5] = val & 0xFF; //Elevator val = convert_channel_10b(ELEVATOR); - packet[6] = (val>>8) + ((val>>2) & 0xFC); + packet[6] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C); packet[7] = val & 0xFF; //Throttle val = convert_channel_10b(THROTTLE); @@ -120,7 +127,7 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind) packet[9] = val & 0xFF; //Rudder val = convert_channel_10b(RUDDER); - packet[10] = (val>>8) + (val>>2 & 0xFC); + packet[10] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C); packet[11] = val & 0xFF; } switch (sub_protocol) diff --git a/Multiprotocol/MJXQ_nrf24l01.ino b/Multiprotocol/MJXQ_nrf24l01.ino index 71a23cf..bb21678 100644 --- a/Multiprotocol/MJXQ_nrf24l01.ino +++ b/Multiprotocol/MJXQ_nrf24l01.ino @@ -105,9 +105,9 @@ static void __attribute__((unused)) MJXQ_send_packet(uint8_t bind) packet[1] = convert_channel_s8b(RUDDER); packet[4] = 0x40; // rudder does not work well with dyntrim packet[2] = 0x80 ^ convert_channel_s8b(ELEVATOR); - packet[5] = GET_FLAG(Servo_AUX5, 1) ? 0x40 : MJXQ_CHAN2TRIM(packet[2]); // trim elevator + packet[5] = (Servo_AUX5 || Servo_AUX10) ? 0x40 : MJXQ_CHAN2TRIM(packet[2]); // trim elevator packet[3] = convert_channel_s8b(AILERON); - packet[6] = GET_FLAG(Servo_AUX5, 1) ? 0x40 : MJXQ_CHAN2TRIM(packet[3]); // trim aileron + packet[6] = (Servo_AUX5 || Servo_AUX10) ? 0x40 : MJXQ_CHAN2TRIM(packet[3]); // trim aileron packet[7] = rx_tx_addr[0]; packet[8] = rx_tx_addr[1]; packet[9] = rx_tx_addr[2]; @@ -128,6 +128,7 @@ static void __attribute__((unused)) MJXQ_send_packet(uint8_t bind) // Servo_AUX7 AUTOFLIP // X800, X600 // Servo_AUX8 PAN // Servo_AUX9 TILT +// Servo_AUX10 XTRM // Dyntrim, don't use if high. switch(sub_protocol) { case H26WH: diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index a16757c..78d3636 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 1 #define VERSION_REVISION 6 -#define VERSION_PATCH_LEVEL 36 +#define VERSION_PATCH_LEVEL 37 //****************** // Protocols //****************** @@ -378,6 +378,8 @@ enum FailSafeMode { #define Servo_AUX6 (Servo_AUX & _BV(5)) #define Servo_AUX7 (Servo_AUX & _BV(6)) #define Servo_AUX8 (Servo_AUX & _BV(7)) +#define Servo_AUX9 (Servo_data[AUX9 ]>PPM_SWITCH) +#define Servo_AUX10 (Servo_data[AUX10]>PPM_SWITCH) //************************ //*** Power settings *** diff --git a/Protocols_Details.md b/Protocols_Details.md index 4638474..f1070b1 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -379,9 +379,11 @@ Models: EAchine H8(C) mini, BayangToys X6/X7/X9, JJRC JJ850, Floureon H101 ... Autobind protocol -CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10 ----|---|---|---|---|---|---|---|---|---- -A|E|T|R|FLIP|RTH|PICTURE|VIDEO|HEADLESS|INVERTED +CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11 +---|---|---|---|---|---|---|---|---|----|---- +A|E|T|R|FLIP|RTH|PICTURE|VIDEO|HEADLESS|INVERTED|RATE + +RATE: -100%(default)=>higher rates by enabling dynamic trims (except for Headless), 100%=>disable dynamic trims ### Sub_protocol BAYANG - *0* Option=0 -> normal Bayang protocol @@ -396,14 +398,14 @@ Same channels assignement as above. ### Sub_protocol X16_AH - *2* Model: X16 AH -CH11 +CH12 ---- TAKE_OFF ### Sub_protocol IRDRONE - *3* Model: IRDRONE -CH11|CH12 +CH12|CH13 ----|---- TAKE_OFF|EMG_STOP @@ -610,9 +612,11 @@ ARM| ## MJXQ - *18* Autobind protocol -CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13 ----|---|---|---|---|---|---|---|---|---|---|---|--- -A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|AUTOFLIP|PAN|TILT +CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14 +---|---|---|---|---|---|---|---|---|----|----|----|----|---- +A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|AUTOFLIP|PAN|TILT|RATE + +RATE: -100%(default)=>higher rates by enabling dynamic trims (except for Headless), 100%=>disable dynamic trims ### Sub_protocol WLH08 - *0* ### Sub_protocol X600 - *1*