mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2026-08-23 02:33:15 +00:00
MoFly protocol
This commit is contained in:
@@ -201,7 +201,7 @@
|
|||||||
62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video
|
62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video
|
||||||
62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
|
62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
|
||||||
62,2,XK,Cars,0,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
|
62,2,XK,Cars,0,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
|
||||||
62,3,XK,MoFly,0,FMode,Rate,BFlip,LRoll,RRoll,Invert
|
109,0,MoFly,Std,0,FMode,Rate,BFlip,LRoll,RRoll,Invert
|
||||||
99,0,XK2,X4,0,Rate,Mode,Hover,Light,Stunt
|
99,0,XK2,X4,0,Rate,Mode,Hover,Light,Stunt
|
||||||
99,1,XK2,P10,0,Rate,Mode,Hover,Light,Stunt
|
99,1,XK2,P10,0,Rate,Mode,Hover,Light,Stunt
|
||||||
8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess
|
8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
59,Bayang_RX,Multi,CPPM
|
59,Bayang_RX,Multi,CPPM
|
||||||
60,Pelikan,Pro,Lite,SCX24
|
60,Pelikan,Pro,Lite,SCX24
|
||||||
61,EazyRC
|
61,EazyRC
|
||||||
62,XK,X450,X420,Cars,MoFly
|
62,XK,X450,X420,Cars
|
||||||
63,XN_DUMP,250K,1M,2M,AUTO
|
63,XN_DUMP,250K,1M,2M,AUTO
|
||||||
64,FrskyX2,CH_16,CH_8,EU_16,EU_8,Cloned
|
64,FrskyX2,CH_16,CH_8,EU_16,EU_8,Cloned
|
||||||
65,FrSkyR9,915MHz,868MHz,915_8ch,868_8ch,FCC,--,FCC_8ch,--_8ch
|
65,FrSkyR9,915MHz,868MHz,915_8ch,868_8ch,FCC,--,FCC_8ch,--_8ch
|
||||||
@@ -103,4 +103,5 @@
|
|||||||
105,Shenqi2
|
105,Shenqi2
|
||||||
106,WL91x
|
106,WL91x
|
||||||
107,WPL
|
107,WPL
|
||||||
108,0,Ares
|
108,Ares
|
||||||
|
109,MoFly
|
||||||
@@ -84,6 +84,7 @@ const char STR_FX[] ="FX";
|
|||||||
const char STR_BAYANG_RX[] ="BayanRX";
|
const char STR_BAYANG_RX[] ="BayanRX";
|
||||||
const char STR_PELIKAN[] ="Pelikan";
|
const char STR_PELIKAN[] ="Pelikan";
|
||||||
const char STR_XK[] ="XK";
|
const char STR_XK[] ="XK";
|
||||||
|
const char STR_MOFLY[] ="MoFly";
|
||||||
const char STR_XK2[] ="XK2";
|
const char STR_XK2[] ="XK2";
|
||||||
const char STR_XN297DUMP[] ="XN297DP";
|
const char STR_XN297DUMP[] ="XN297DP";
|
||||||
const char STR_FRSKYR9[] ="FrSkyR9";
|
const char STR_FRSKYR9[] ="FrSkyR9";
|
||||||
@@ -170,7 +171,7 @@ const char STR_SUBTYPE_XN297DUMP[] = "\x07""250Kbps""1Mbps\0 ""2Mbps\0 ""Auto\0
|
|||||||
const char STR_SUBTYPE_ESKY150[] = "\x03""4ch""7ch";
|
const char STR_SUBTYPE_ESKY150[] = "\x03""4ch""7ch";
|
||||||
const char STR_SUBTYPE_ESKY150V2[] = "\x05""150V2";
|
const char STR_SUBTYPE_ESKY150V2[] = "\x05""150V2";
|
||||||
const char STR_SUBTYPE_V911S[] = "\x05""V911S""E119\0";
|
const char STR_SUBTYPE_V911S[] = "\x05""V911S""E119\0";
|
||||||
const char STR_SUBTYPE_XK[] = "\x05""X450\0""X420\0""Cars\0""MoFly";
|
const char STR_SUBTYPE_XK[] = "\x05""X450\0""X420\0""Cars\0";
|
||||||
const char STR_SUBTYPE_XK2[] = "\x03""X4\0""P10";
|
const char STR_SUBTYPE_XK2[] = "\x03""X4\0""P10";
|
||||||
const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch""FCC\0 ""--\0 ""FCC 8ch""-- 8ch\0";
|
const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch""FCC\0 ""--\0 ""FCC 8ch""-- 8ch\0";
|
||||||
const char STR_SUBTYPE_ESKY[] = "\x03""Std""ET4";
|
const char STR_SUBTYPE_ESKY[] = "\x03""Std""ET4";
|
||||||
@@ -431,6 +432,9 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
#if defined(MLINK_CYRF6936_INO)
|
#if defined(MLINK_CYRF6936_INO)
|
||||||
{PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
|
{PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(XK_CCNRF_INO)
|
||||||
|
{PROTO_MOFLY, STR_MOFLY, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, XK_init, XK_callback },
|
||||||
|
#endif
|
||||||
#if defined(MOULDKG_NRF24L01_INO)
|
#if defined(MOULDKG_NRF24L01_INO)
|
||||||
{PROTO_MOULDKG, STR_MOULDKG, STR_SUBTYPE_MOULDKG, 3, OPTION_OPTION, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
|
{PROTO_MOULDKG, STR_MOULDKG, STR_SUBTYPE_MOULDKG, 3, OPTION_OPTION, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
|
||||||
#endif
|
#endif
|
||||||
@@ -532,7 +536,7 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
{PROTO_XERALL, STR_XERALL, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, XERALL_init, XERALL_callback },
|
{PROTO_XERALL, STR_XERALL, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, XERALL_init, XERALL_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(XK_CCNRF_INO)
|
#if defined(XK_CCNRF_INO)
|
||||||
{PROTO_XK, STR_XK, STR_SUBTYPE_XK, 4, OPTION_RFTUNE, 0, 0, SW_NRF, XK_init, XK_callback },
|
{PROTO_XK, STR_XK, STR_SUBTYPE_XK, 3, OPTION_RFTUNE, 0, 0, SW_NRF, XK_init, XK_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(XK2_CCNRF_INO)
|
#if defined(XK2_CCNRF_INO)
|
||||||
{PROTO_XK2, STR_XK2, STR_SUBTYPE_XK2, 2, OPTION_RFTUNE, 0, 0, SW_NRF, XK2_init, XK2_callback },
|
{PROTO_XK2, STR_XK2, STR_SUBTYPE_XK2, 2, OPTION_RFTUNE, 0, 0, SW_NRF, XK2_init, XK2_callback },
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 4
|
#define VERSION_REVISION 4
|
||||||
#define VERSION_PATCH_LEVEL 68
|
#define VERSION_PATCH_LEVEL 69
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@@ -136,6 +136,7 @@ enum PROTOCOLS
|
|||||||
PROTO_WL91X = 106, // =>CC2500 & NRF24L01
|
PROTO_WL91X = 106, // =>CC2500 & NRF24L01
|
||||||
PROTO_WPL = 107, // =>NRF24L01
|
PROTO_WPL = 107, // =>NRF24L01
|
||||||
PROTO_ARES = 108, // =>CC2500
|
PROTO_ARES = 108, // =>CC2500
|
||||||
|
PROTO_MOFLY = 109, // =>CC2500 & NRF24L01
|
||||||
|
|
||||||
PROTO_NANORF = 126, // =>NRF24L01
|
PROTO_NANORF = 126, // =>NRF24L01
|
||||||
PROTO_TEST = 127, // =>CC2500
|
PROTO_TEST = 127, // =>CC2500
|
||||||
@@ -393,7 +394,6 @@ enum XK
|
|||||||
X450 = 0,
|
X450 = 0,
|
||||||
X420 = 1,
|
X420 = 1,
|
||||||
XK_CARS = 2,
|
XK_CARS = 2,
|
||||||
MOFLY = 3,
|
|
||||||
};
|
};
|
||||||
enum XN297DUMP
|
enum XN297DUMP
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ static void __attribute__((unused)) XK_send_packet()
|
|||||||
memset(packet,0x00,7);
|
memset(packet,0x00,7);
|
||||||
memset(&packet[10],0x00,5);
|
memset(&packet[10],0x00,5);
|
||||||
|
|
||||||
if(sub_protocol != MOFLY)
|
if(protocol != PROTO_MOFLY)
|
||||||
{
|
{
|
||||||
packet[12]=0x40;
|
packet[12]=0x40;
|
||||||
packet[13]=0x40;
|
packet[13]=0x40;
|
||||||
@@ -218,7 +218,7 @@ static void __attribute__((unused)) XK_initialize_txid()
|
|||||||
|
|
||||||
static void __attribute__((unused)) XK_RF_init()
|
static void __attribute__((unused)) XK_RF_init()
|
||||||
{
|
{
|
||||||
XN297_Configure(XN297_CRCEN, XN297_SCRAMBLED, (sub_protocol==X450||sub_protocol==MOFLY) ? XN297_250K : XN297_1M );
|
XN297_Configure(XN297_CRCEN, XN297_SCRAMBLED, sub_protocol==X450 ? XN297_250K : XN297_1M ); //MoFly equals to X450 here
|
||||||
XN297_SetTXAddr((uint8_t*)"\x68\x94\xA6\xD5\xC3", 5); // Bind address
|
XN297_SetTXAddr((uint8_t*)"\x68\x94\xA6\xD5\xC3", 5); // Bind address
|
||||||
XN297_HoppingCalib(XK_RF_BIND_NUM_CHANNELS+XK_RF_NUM_CHANNELS); // Calibrate all channels
|
XN297_HoppingCalib(XK_RF_BIND_NUM_CHANNELS+XK_RF_NUM_CHANNELS); // Calibrate all channels
|
||||||
}
|
}
|
||||||
@@ -240,7 +240,7 @@ uint16_t XK_callback()
|
|||||||
|
|
||||||
void XK_init()
|
void XK_init()
|
||||||
{
|
{
|
||||||
if(sub_protocol != XK_CARS)
|
if(sub_protocol != XK_CARS && protocol != PROTO_MOFLY)
|
||||||
BIND_IN_PROGRESS; // Autobind protocol
|
BIND_IN_PROGRESS; // Autobind protocol
|
||||||
XK_initialize_txid();
|
XK_initialize_txid();
|
||||||
XK_RF_init();
|
XK_RF_init();
|
||||||
|
|||||||
@@ -281,7 +281,7 @@
|
|||||||
#define UDIRC_CCNRF_INO
|
#define UDIRC_CCNRF_INO
|
||||||
#define V911S_CCNRF_INO
|
#define V911S_CCNRF_INO
|
||||||
#define WL91X_CCNRF_INO
|
#define WL91X_CCNRF_INO
|
||||||
#define XK_CCNRF_INO
|
#define XK_CCNRF_INO //Include MoFly protocol
|
||||||
#define XK2_CCNRF_INO
|
#define XK2_CCNRF_INO
|
||||||
|
|
||||||
//The protocols below need a SX1276 to be installed
|
//The protocols below need a SX1276 to be installed
|
||||||
@@ -789,6 +789,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PHOENIX
|
PHOENIX
|
||||||
PROTO_MLINK
|
PROTO_MLINK
|
||||||
NONE
|
NONE
|
||||||
|
PROTO_MOFLY
|
||||||
|
NONE
|
||||||
PROTO_MOULDKG
|
PROTO_MOULDKG
|
||||||
MOULDKG_ANALOG4
|
MOULDKG_ANALOG4
|
||||||
MOULDKG_DIGIT4
|
MOULDKG_DIGIT4
|
||||||
@@ -901,7 +903,6 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
X450
|
X450
|
||||||
X420
|
X420
|
||||||
XK_CARS
|
XK_CARS
|
||||||
MOFLY
|
|
||||||
PROTO_XK2
|
PROTO_XK2
|
||||||
XK2_X4
|
XK2_X4
|
||||||
XK2_P10
|
XK2_P10
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ CFlie|AIR|38|CFlie||||||||NRF24L01|
|
|||||||
[Losi](Protocols_Details.md#Losi---89)||89|||||||||CYRF6936|
|
[Losi](Protocols_Details.md#Losi---89)||89|||||||||CYRF6936|
|
||||||
[MJXq](Protocols_Details.md#MJXQ---18)||18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
|
[MJXq](Protocols_Details.md#MJXQ---18)||18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
|
||||||
[MLINK](Protocols_Details.md#MLINK---78)||78|||||||||CYRF6936|
|
[MLINK](Protocols_Details.md#MLINK---78)||78|||||||||CYRF6936|
|
||||||
|
[MoFly](Protocols_Details.md#MoFly---109)||109|||||||||NRF24L01&CC2500|XN297
|
||||||
[MouldKg](Protocols_Details.md#mouldkg---90)||90|A4444|D4444|A664||||||NRF24L01|XN297
|
[MouldKg](Protocols_Details.md#mouldkg---90)||90|A4444|D4444|A664||||||NRF24L01|XN297
|
||||||
[MT99xx](Protocols_Details.md#MT99XX---17)||17|MT|H7|YZ|LS|FY805|A180|DRAGON|F949G|NRF24L01|XN297
|
[MT99xx](Protocols_Details.md#MT99XX---17)||17|MT|H7|YZ|LS|FY805|A180|DRAGON|F949G|NRF24L01|XN297
|
||||||
[MT99xx2](Protocols_Details.md#MT99XX2---92)||92|PA18|SU35|||||||NRF24L01|XN297
|
[MT99xx2](Protocols_Details.md#MT99XX2---92)||92|PA18|SU35|||||||NRF24L01|XN297
|
||||||
@@ -1257,6 +1258,19 @@ If a CC2500 is installed it will be used for this sub protocol. Option in this c
|
|||||||
|
|
||||||
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
||||||
|
|
||||||
|
## MoFly - *109*
|
||||||
|
Models: MoFly planes MF-X7, P-51D, MF-A84 and Ki-84
|
||||||
|
|
||||||
|
If a CC2500 is installed it will be used for this sub protocol. Option in this case is used for fine frequency tuning like any CC2500 protocols so check the [Frequency Tuning page](/docs/Frequency_Tuning.md).
|
||||||
|
|
||||||
|
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
||||||
|
|
||||||
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10
|
||||||
|
---|---|---|---|---|---|---|---|---|----
|
||||||
|
A|E|T|R|Flight_modes|Rate_L/H|Back_Flip|Left_Roll|Right_Roll|Inverted
|
||||||
|
|
||||||
|
Flight_modes: -100%=MM-Mode, 0%=3D-Mode, +100%=6G-Mode. CH7-CH9 are momentary switches. CH10 is a toggle switch.
|
||||||
|
|
||||||
## MT99XX - *17*
|
## MT99XX - *17*
|
||||||
Autobind protocol
|
Autobind protocol
|
||||||
|
|
||||||
@@ -1627,19 +1641,6 @@ A|E|T|R|FLIP|LIGHT
|
|||||||
### Sub_protocol Cars - *2*
|
### Sub_protocol Cars - *2*
|
||||||
Models: WLtoys cars 284131/284161/284010/124016/124017/144010 and Eachine EAT14
|
Models: WLtoys cars 284131/284161/284010/124016/124017/144010 and Eachine EAT14
|
||||||
|
|
||||||
### Sub_protocol MoFly - *3*
|
|
||||||
Models: MoFly planes
|
|
||||||
|
|
||||||
If a CC2500 is installed it will be used for this sub protocol. Option in this case is used for fine frequency tuning like any CC2500 protocols so check the [Frequency Tuning page](/docs/Frequency_Tuning.md).
|
|
||||||
|
|
||||||
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10
|
|
||||||
---|---|---|---|---|---|---|---|---|----
|
|
||||||
A|E|T|R|Flight_modes|Rate_L/H|Back_Flip|Left_Roll|Right_Roll|Inverted
|
|
||||||
|
|
||||||
Flight_modes: -100%=MM-Mode, 0%=3D-Mode, +100%=6G-Mode. CH7-CH9 are momentary switches. CH10 is a toggle switch.
|
|
||||||
|
|
||||||
## XK2 - *99*
|
## XK2 - *99*
|
||||||
|
|
||||||
You must assign a different RX number for each receiver/plane. Otherwise the new receiver/plane ID will overwrite the previous one.
|
You must assign a different RX number for each receiver/plane. Otherwise the new receiver/plane ID will overwrite the previous one.
|
||||||
|
|||||||
Reference in New Issue
Block a user