mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2026-08-18 15:23:20 +00:00
Compare commits
7 Commits
v1.3.4.63
...
d6a969ee28
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6a969ee28 | ||
|
|
9354abe5fd | ||
|
|
5984216fbd | ||
|
|
1fa5452c89 | ||
|
|
0f8aceb79f | ||
|
|
3bf4ffa764 | ||
|
|
d750e3b303 |
@@ -231,6 +231,8 @@
|
||||
97,0,SGF22,F22,1,Mode,Flip,LED,Pict,Video,TrRes,Bal,HiBal
|
||||
97,1,SGF22,F22S,1,Mode,Flip,LED,Pict,Video,TrRes
|
||||
97,2,SGF22,J20,1,Mode,Flip,LED,Pict,Video
|
||||
97,3,SGF22,CX10,1,Mode,Flip,LED,Pict,Video
|
||||
97,4,SGF22,T28,1,Mode,Flip,LED,-,RTH,-,-,-,RTH_SET
|
||||
61,0,EazyRC
|
||||
98,0,Kyosho3,ASF,0
|
||||
100,0,YuXiang,Std,0,Lock,Rate,Land,Manual,Flip,Mode,Pitch
|
||||
|
||||
@@ -54,7 +54,7 @@ static void __attribute__((unused)) KF606_send_packet()
|
||||
packet[len-2] = convert_channel_8b_limit_deadband(AILERON,0x00,0x80,0xFF,40); // Aileron: High rate:2B..80..DA
|
||||
uint8_t p3;
|
||||
p3 = convert_channel_8b(CH5)>>3; // Aileron trim must be on a separated channel 01..10..1F
|
||||
p3 += (packet[2]-0x80)>>3; // Drive trims for more aileron authority
|
||||
p3 += (packet[len-2]-0x80)>>3; // Drive trims for more aileron authority
|
||||
if(p3 > 0x80)
|
||||
p3 = 0x01;
|
||||
else if(p3 > 0x1F)
|
||||
|
||||
@@ -129,13 +129,18 @@ static void __attribute__((unused)) MT99XX_send_packet()
|
||||
static uint8_t seq_num=0;
|
||||
|
||||
//Set RF freq
|
||||
if(sub_protocol == LS)
|
||||
XN297_RFChannel(0x2D); // LS always transmits on the same channel
|
||||
if(IS_BIND_IN_PROGRESS && sub_protocol == PA18+8)
|
||||
XN297_RFChannel(0x02);
|
||||
else
|
||||
if(sub_protocol==FY805)
|
||||
XN297_RFChannel(0x4B); // FY805 always transmits on the same channel
|
||||
else // MT99 & H7 & YZ & A180 & DRAGON & F949G & PA18
|
||||
XN297_Hopping(hopping_frequency_no);
|
||||
{
|
||||
if(sub_protocol == LS)
|
||||
XN297_RFChannel(0x2D); // LS always transmits on the same channel
|
||||
else
|
||||
if(sub_protocol==FY805)
|
||||
XN297_RFChannel(0x4B); // FY805 always transmits on the same channel
|
||||
else // MT99 & H7 & YZ & A180 & DRAGON & F949G & PA18
|
||||
XN297_Hopping(hopping_frequency_no);
|
||||
}
|
||||
|
||||
if(IS_BIND_IN_PROGRESS)
|
||||
{
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
94,Scorpio
|
||||
95,BlueFly
|
||||
96,BumbleB
|
||||
97,SGF22,F22,F22S,J20
|
||||
97,SGF22,F22,F22S,J20,CX10,T28
|
||||
98,Kyosho3
|
||||
99,XK2,X4,P10
|
||||
100,YuXiang
|
||||
|
||||
@@ -192,7 +192,7 @@ const char STR_SUBTYPE_MOULDKG[] = "\x05""A4444""D4444""A664\0";
|
||||
const char STR_SUBTYPE_KF606[] = "\x06""KF606\0""MIG320""ZCZ50\0";
|
||||
const char STR_SUBTYPE_E129[] = "\x04""E129""C186";
|
||||
const char STR_SUBTYPE_FX[] = "\x05""FX816""FX620""9630\0""Q560\0""QF012""BM26\0""A570\0";
|
||||
const char STR_SUBTYPE_SGF22[] = "\x04""F22\0""F22S""J20\0""CX10";
|
||||
const char STR_SUBTYPE_SGF22[] = "\x04""F22\0""F22S""J20\0""CX10""T28\0";
|
||||
const char STR_SUBTYPE_JIABAILE[] = "\x04""Std\0""Gyro";
|
||||
#define NO_SUBTYPE nullptr
|
||||
|
||||
@@ -480,7 +480,7 @@ const mm_protocol_definition multi_protocols[] = {
|
||||
{PROTO_SCORPIO, STR_SCORPIO, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, SCORPIO_init, SCORPIO_callback },
|
||||
#endif
|
||||
#if defined(SGF22_NRF24L01_INO)
|
||||
{PROTO_SGF22, STR_SGF22, STR_SUBTYPE_SGF22, 4, OPTION_NONE, 0, 0, SW_NRF, SGF22_init, SGF22_callback },
|
||||
{PROTO_SGF22, STR_SGF22, STR_SUBTYPE_SGF22, 5, OPTION_NONE, 0, 0, SW_NRF, SGF22_init, SGF22_callback },
|
||||
#endif
|
||||
#if defined(SHENQI_NRF24L01_INO)
|
||||
{PROTO_SHENQI, STR_SHENQI, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, SHENQI_init, SHENQI_callback },
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 3
|
||||
#define VERSION_REVISION 4
|
||||
#define VERSION_PATCH_LEVEL 63
|
||||
#define VERSION_PATCH_LEVEL 66
|
||||
|
||||
#define MODE_SERIAL 0
|
||||
|
||||
@@ -515,6 +515,7 @@ enum SGF22
|
||||
SGF22_F22S = 1,
|
||||
SGF22_J20 = 2,
|
||||
SGF22_CX10 = 3,
|
||||
SGF22_T28 = 4,
|
||||
};
|
||||
enum JIABAILE
|
||||
{
|
||||
|
||||
@@ -639,7 +639,8 @@ void setup()
|
||||
if (protocol==PROTO_ARES)
|
||||
option = FORCE_ARES_TUNING; // Use config-defined tuning value for ARES
|
||||
else
|
||||
#endif option = (uint8_t)PPM_prot_line->option; // Use radio-defined option value
|
||||
#endif
|
||||
option = (uint8_t)PPM_prot_line->option; // Use radio-defined option value
|
||||
|
||||
if(PPM_prot_line->power) POWER_FLAG_on;
|
||||
if(PPM_prot_line->autobind)
|
||||
|
||||
@@ -25,10 +25,12 @@ Multiprotocol is distributed in the hope that it will be useful,
|
||||
#define SGF22_PAYLOAD_SIZE 12
|
||||
#define SGF22_BIND_COUNT 50
|
||||
#define SGF22_RF_NUM_CHANNELS 4
|
||||
|
||||
#define SGF22_BIND_RF_CHANNEL 78
|
||||
#define SGF22_F22S_BIND_RF_CHANNEL 10
|
||||
#define SGF22_J20_BIND_RF_CHANNEL 28
|
||||
#define SGF22_CX10_BIND_RF_CHANNEL 48
|
||||
#define SGF22_T28_BIND_RF_CHANNEL 28
|
||||
|
||||
//packet[8]
|
||||
#define SGF22_FLAG_3D 0x00
|
||||
@@ -44,6 +46,8 @@ Multiprotocol is distributed in the hope that it will be useful,
|
||||
#define SGF22_FX922_FLAG_BALANCEHIGH 0x01
|
||||
#define SGF22_FX922_FLAG_BALANCE 0x02
|
||||
|
||||
#define SGF22_T28_RTH_SET 0x20
|
||||
#define SGF22_T28_FLAG_OPTIMIZED 0x80
|
||||
|
||||
//packet[9]
|
||||
#define SGF22_FLAG_TRIMRESET 0x04
|
||||
@@ -88,11 +92,12 @@ static void __attribute__((unused)) SGF22_send_packet()
|
||||
| GET_FLAG(CH7_SW, SGF22_FLAG_LIGHT) // push up throttle trim for light in the stock TX
|
||||
| GET_FLAG(CH9_SW, SGF22_FLAG_VIDEO) // push down throttle trim for video in the stock TX
|
||||
| GET_FLAG(CH11_SW, SGF22_FX922_FLAG_BALANCE)
|
||||
| GET_FLAG(CH12_SW, SGF22_FX922_FLAG_BALANCEHIGH);
|
||||
| GET_FLAG(CH12_SW, SGF22_FX922_FLAG_BALANCEHIGH)
|
||||
| GET_FLAG(CH13_SW, SGF22_T28_RTH_SET);
|
||||
if(Channel_data[CH5] > CHANNEL_MAX_COMMAND)
|
||||
packet[8] |= SGF22_FLAG_VERTICAL; // CH5 100%, vertical mode (torque)
|
||||
packet[8] |= ( sub_protocol == SGF22_T28 ? SGF22_T28_FLAG_OPTIMIZED : SGF22_FLAG_VERTICAL); // CH5 100%, vertical mode (torque)
|
||||
else if(Channel_data[CH5] > CHANNEL_MIN_COMMAND )
|
||||
packet[8] |= ( sub_protocol == SGF22_J20 ? SGF22_J20_FLAG_HORIZONTAL : SGF22_FLAG_6G ); // CH5 0%, F22 & F22S - 6G mode, J20 - Horizontal mode
|
||||
packet[8] |= ( sub_protocol == SGF22_J20 ? SGF22_J20_FLAG_HORIZONTAL : SGF22_FLAG_6G ); // CH5 0%, F22 & F22S - 6G mode, J20 - Horizontal mode
|
||||
}
|
||||
else //SGF22_CX10 114548
|
||||
{
|
||||
@@ -111,7 +116,7 @@ static void __attribute__((unused)) SGF22_send_packet()
|
||||
packet[10] = 0x42; // no fine tune
|
||||
packet[11] = 0x10; // no fine tune
|
||||
}
|
||||
if(sub_protocol == SGF22_F22S)
|
||||
if(sub_protocol == SGF22_F22S || sub_protocol == SGF22_T28)
|
||||
packet[0] += 6;
|
||||
else if (sub_protocol == SGF22_J20)
|
||||
packet[0] += 3;
|
||||
@@ -200,7 +205,7 @@ static void __attribute__((unused)) SGF22_RF_init()
|
||||
XN297_SetRXAddr((uint8_t*)"\xC7\x95\x3C\xBB\xA5", SGF22_PAYLOAD_SIZE);
|
||||
#endif
|
||||
|
||||
const uint8_t bind_chan[] = {SGF22_BIND_RF_CHANNEL, SGF22_F22S_BIND_RF_CHANNEL, SGF22_J20_BIND_RF_CHANNEL, SGF22_CX10_BIND_RF_CHANNEL};
|
||||
const uint8_t bind_chan[] = {SGF22_BIND_RF_CHANNEL, SGF22_F22S_BIND_RF_CHANNEL, SGF22_J20_BIND_RF_CHANNEL, SGF22_CX10_BIND_RF_CHANNEL, SGF22_T28_BIND_RF_CHANNEL};
|
||||
XN297_RFChannel(bind_chan[sub_protocol]); // Set bind channel
|
||||
}
|
||||
|
||||
|
||||
@@ -387,12 +387,9 @@
|
||||
|
||||
#ifdef MULTI_AIR
|
||||
#undef JOYSWAY_A7105_INO
|
||||
//#undef KYOSHO_A7105_INO
|
||||
//#undef PELIKAN_A7105_INO
|
||||
#undef LOSI_CYRF6936_INO //Need DSM to be enabled
|
||||
#undef TRAXXAS_CYRF6936_INO
|
||||
#undef EAZYRC_NRF24L01_INO
|
||||
//#undef KYOSHO2_NRF24L01_INO
|
||||
#undef KYOSHO3_CYRF6936_INO
|
||||
#undef MOULDKG_NRF24L01_INO
|
||||
#undef SHENQI_NRF24L01_INO
|
||||
|
||||
@@ -845,10 +845,11 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
||||
PROTO_SCORPIO
|
||||
NONE
|
||||
PROTO_SGF22
|
||||
SGF22
|
||||
F22S
|
||||
J20
|
||||
CX10
|
||||
SGF22_F22
|
||||
SGF22_F22S
|
||||
SGF22_J20
|
||||
SGF22_CX10
|
||||
SGF22_T28
|
||||
PROTO_SHENQI
|
||||
NONE
|
||||
PROTO_SHENQI2
|
||||
|
||||
@@ -143,7 +143,7 @@ CFlie|AIR|38|CFlie||||||||NRF24L01|
|
||||
[Redpine](Protocols_Details.md#Redpine---50)||50|FAST|SLOW|||||||NRF24L01|XN297
|
||||
[Scanner](Protocols_Details.md#Scanner---54)||54|||||||||CC2500|
|
||||
[Scorpio](Protocols_Details.md#Scorpio---94)||94|||||||||CYRF6936|
|
||||
[SGF22](Protocols_Details.md#SGF22---97)||97|F22|F22S|J20|CX10|||||NRF24L01|XN297
|
||||
[SGF22](Protocols_Details.md#SGF22---97)||97|F22|F22S|J20|CX10|T28||||NRF24L01|XN297
|
||||
[Shenqi](Protocols_Details.md#Shenqi---19)||19|Shenqi||||||||NRF24L01|LT8900
|
||||
[Shenqi2](Protocols_Details.md#Shenqi2---105)||105|Shenqi2||||||||NRF24L01|XN297
|
||||
[Skyartec](Protocols_Details.md#Skyartec---68)||68|||||||||CC2500|CC2500
|
||||
@@ -238,21 +238,21 @@ Option is used to change the servo refresh rate. A value of 0 gives 50Hz (min),
|
||||
### Sub_protocol PWM_IBUS - *0*
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14CH15|CH16|LQI
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|LQI
|
||||
|
||||
RX output will match the Flysky standard AETR.
|
||||
|
||||
### Sub_protocol PPM_IBUS - *1*
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14CH15|CH16|LQI
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|LQI
|
||||
|
||||
RX output will match the Flysky standard AETR.
|
||||
|
||||
### Sub_protocol PWM_SBUS - *2*
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14CH15|CH16|LQI
|
||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|LQI
|
||||
|
||||
RX output will match the Flysky standard AETR.
|
||||
|
||||
@@ -1930,7 +1930,7 @@ FX9630 and FX9603 Gyro: -100%=6G small throw, 0%=6G large throw, +100%=3D
|
||||
QIDI-550 Gyro: -100%=3D, 0%=6G, +100%=Torque
|
||||
|
||||
### Sub_protocol Q560 - *3*
|
||||
Model: QIDI-560, QIDI-580 (Cirrus SR22)
|
||||
Model: QIDI-560, QIDI-580, QIDI-590
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7
|
||||
---|---|---|---|---|---|---
|
||||
@@ -2365,9 +2365,9 @@ ST TRIM: -100% Left, +100% Right, variable/shouldn't be needed? CH1 trim on stee
|
||||
## SGF22 - *97*
|
||||
Autobind protocol
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|MODE|FLIP|LIGHT|PHOTO|VIDEO|TRIMRESET|BAL|BALHIG
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|MODE|FLIP|LIGHT|PHOTO|VIDEO|TRIMRESET|BAL|BALHIG|RTH_SET
|
||||
|
||||
Telemetry is supported. The plane sends a battery status of good->empty which is visible in A1 (good=13.2V->empty=0V) and RSSI gets a dummy value of 100.
|
||||
|
||||
@@ -2397,6 +2397,15 @@ Model: Cheerson CX-10 with red PCB
|
||||
|
||||
Mode -100% = Low, 0% = Medium, 100% = High
|
||||
|
||||
### Sub_protocol T28
|
||||
Model: FMS T28
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13
|
||||
---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||
A|E|T|R|MODE|FLIP|LIGHT|-|RTH|-|-|-|RTH_SET
|
||||
|
||||
Mode -100% = Gyro off, 0% = Stabilized, 100% = Optimized
|
||||
|
||||
## Shenqi - *19*
|
||||
Autobind protocol
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ If you like this project and want to support further development please consider
|
||||
|
||||
Multiprotocol downloads: <img src=https://img.shields.io/github/downloads/pascallanger/DIY-Multiprotocol-TX-Module/total.svg>
|
||||
|
||||
Current Multiprotocol code check status: [<img src=https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/workflows/CI/badge.svg>](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/actions). Download the latest **test** build [here](https://downloads.multi-module.org/latest-test/).
|
||||
Current Multiprotocol code check status: [](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/actions). Download the latest **test** build [here](https://downloads.multi-module.org/latest-test/).
|
||||
|
||||
Current Multiprotocol boards check status: [](https://travis-ci.com/pascallanger/DIY-Multiprotocol-TX-Module-Boards)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user