mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-05 02:48:14 +00:00
Compare commits
No commits in common. "56fa7e788bf2a70ffa1ba080ad07802924018830" and "b5b2dc37d47227cf9fcfc280489f1b5574902636" have entirely different histories.
56fa7e788b
...
b5b2dc37d4
@ -226,4 +226,3 @@
|
|||||||
61,0,EazyRC
|
61,0,EazyRC
|
||||||
98,0,Kyosho3,ASF,0
|
98,0,Kyosho3,ASF,0
|
||||||
100,0,YuXiang,Std,0,Lock,Rate,Land,Manual,Flip,Mode,Pitch
|
100,0,YuXiang,Std,0,Lock,Rate,Land,Manual,Flip,Mode,Pitch
|
||||||
102,0,JIABAILE,Std,1,Speed,Light,Flash
|
|
||||||
|
@ -1,315 +0,0 @@
|
|||||||
/*
|
|
||||||
This project is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
Multiprotocol is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with Multiprotocol. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
#if defined(JIABAILE_NRF24L01_INO)
|
|
||||||
|
|
||||||
#include "iface_xn297.h"
|
|
||||||
|
|
||||||
//#define FORCE_JIABAILE_ORIGINAL_ID
|
|
||||||
|
|
||||||
#define JIABAILE_PAYLOAD_SIZE 8
|
|
||||||
#define JIABAILE_RX_PAYLOAD_SIZE 7
|
|
||||||
#define JIABAILE_RF_NUM_CHANNELS 3
|
|
||||||
#define JIABAILE_BIND_PACKET_PERIOD 12700
|
|
||||||
#define JIABAILE_PACKET_PERIOD 2408
|
|
||||||
#define JIABAILE_BIND_COUNT 2000
|
|
||||||
#define JIABAILE_WRITE_TIME 1000
|
|
||||||
|
|
||||||
enum {
|
|
||||||
JIABAILE_BIND=0,
|
|
||||||
JIABAILE_RX,
|
|
||||||
JIABAILE_DATA,
|
|
||||||
};
|
|
||||||
|
|
||||||
static uint8_t __attribute__((unused)) JIABAILE_channel(uint8_t num)
|
|
||||||
{
|
|
||||||
uint8_t val=convert_channel_16b_limit(num,0,100);
|
|
||||||
if(val > 50+num)
|
|
||||||
{
|
|
||||||
packet[3] |= 0x01;
|
|
||||||
return val-50;
|
|
||||||
}
|
|
||||||
if(val < 50-num)
|
|
||||||
{
|
|
||||||
packet[3] |= 0x02;
|
|
||||||
return 50-val;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __attribute__((unused)) JIABAILE_send_packet()
|
|
||||||
{
|
|
||||||
hopping_frequency_no++;
|
|
||||||
if(hopping_frequency_no > 2)
|
|
||||||
hopping_frequency_no = 0;
|
|
||||||
XN297_Hopping(hopping_frequency_no);
|
|
||||||
|
|
||||||
memcpy(packet,rx_tx_addr,3);
|
|
||||||
memset(&packet[3], 0x00, 4);
|
|
||||||
if(IS_BIND_DONE)
|
|
||||||
{//Normal
|
|
||||||
packet[4] = convert_channel_16b_limit(RUDDER,0,50)-25; //ST Trim
|
|
||||||
packet[6] = JIABAILE_channel(AILERON); //ST
|
|
||||||
packet[3] ^= 0x03; //Reverse ST channel
|
|
||||||
packet[3] <<= 2; //Move ST channel where it should be
|
|
||||||
packet[5] = JIABAILE_channel(ELEVATOR); //TH
|
|
||||||
packet[3] |= GET_FLAG(CH5_SW, 0x20) //Low speed
|
|
||||||
|GET_FLAG(CH7_SW, 0x40) //Flash light
|
|
||||||
|GET_FLAG(!CH6_SW, 0x80); //Light
|
|
||||||
if(!CH5_SW && Channel_data[CH5] > CHANNEL_MIN_COMMAND)
|
|
||||||
packet[3] |= 0x10; //Mid speed
|
|
||||||
}
|
|
||||||
packet[7] = 0x55 + hopping_frequency[hopping_frequency_no];
|
|
||||||
for(uint8_t i=0;i<JIABAILE_PAYLOAD_SIZE-1;i++)
|
|
||||||
packet[7] += packet[i];
|
|
||||||
// Send
|
|
||||||
XN297_SetPower();
|
|
||||||
XN297_SetTxRxMode(TX_EN);
|
|
||||||
XN297_WritePayload(packet, JIABAILE_PAYLOAD_SIZE);
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("H%d RF%d",hopping_frequency_no,hopping_frequency[hopping_frequency_no]);
|
|
||||||
for(uint8_t i=0; i < JIABAILE_PAYLOAD_SIZE; i++)
|
|
||||||
debug(" %02X", packet[i]);
|
|
||||||
debugln();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __attribute__((unused)) JIABAILE_initialize_txid()
|
|
||||||
{
|
|
||||||
rx_tx_addr[0] = rx_tx_addr[3];
|
|
||||||
#ifdef FORCE_JIABAILE_ORIGINAL_ID
|
|
||||||
memcpy(rx_tx_addr,(uint8_t *)"\xCB\x03\xA5",3);
|
|
||||||
//memcpy(rx_tx_addr,(uint8_t *)"\x3D\x08\xA2",3);
|
|
||||||
//Normal frequencies are calculated from the car ID...
|
|
||||||
//memcpy(&hopping_frequency[3],(uint8_t *)"\x23\x2D\x4B",3); //35,45,75
|
|
||||||
memcpy(&hopping_frequency[3],(uint8_t *)"\x24\x43\x4C",3); //36,67,76
|
|
||||||
#endif
|
|
||||||
//Bind frequencies
|
|
||||||
memcpy(hopping_frequency,(uint8_t *)"\x07\x27\x45",3); //7,39,69
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __attribute__((unused)) JIABAILE_RF_init()
|
|
||||||
{
|
|
||||||
XN297_Configure(XN297_CRCEN, XN297_SCRAMBLED, XN297_1M);
|
|
||||||
//Bind address
|
|
||||||
memcpy(rx_id,(uint8_t*)"\xA7\x07\x57\xA7\x26", 5);
|
|
||||||
XN297_SetTXAddr(rx_id, 5);
|
|
||||||
XN297_SetRXAddr(rx_id, JIABAILE_RX_PAYLOAD_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t JIABAILE_callback()
|
|
||||||
{
|
|
||||||
switch(phase)
|
|
||||||
{
|
|
||||||
case JIABAILE_BIND:
|
|
||||||
if(XN297_IsRX())
|
|
||||||
{
|
|
||||||
if(XN297_ReadPayload(packet_in, JIABAILE_RX_PAYLOAD_SIZE))
|
|
||||||
{//CRC OK
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("RX");
|
|
||||||
for(uint8_t i=0; i < JIABAILE_RX_PAYLOAD_SIZE; i++)
|
|
||||||
debug(" %02X", packet_in[i]);
|
|
||||||
debugln();
|
|
||||||
#endif
|
|
||||||
//RX: CB 03 A5 9D 05 A2 68
|
|
||||||
if(memcmp(packet_in,rx_tx_addr,3)==0)
|
|
||||||
{//TX ID match
|
|
||||||
//Check packet
|
|
||||||
uint8_t sum=0xAA + hopping_frequency[hopping_frequency_no];
|
|
||||||
for(uint8_t i=0; i < JIABAILE_RX_PAYLOAD_SIZE-1; i++)
|
|
||||||
sum+=packet_in[i];
|
|
||||||
if(sum==packet_in[6])
|
|
||||||
{
|
|
||||||
//Write the RXID in the address
|
|
||||||
memcpy(&rx_id[1],&packet_in[3],3);
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
XN297_SetTXAddr(rx_id, 5);
|
|
||||||
//Set the normal frequencies
|
|
||||||
sum=packet_in[3]&0x07;
|
|
||||||
hopping_frequency[0] = (sum>4?30:8) + sum;
|
|
||||||
if(sum==4 || sum ==7)
|
|
||||||
hopping_frequency[0]++;
|
|
||||||
hopping_frequency[1] = 40 + sum;
|
|
||||||
if((sum & 0x06) == 0x06)
|
|
||||||
hopping_frequency[1] += 21;
|
|
||||||
hopping_frequency[2] = 70 + sum;
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("RF");
|
|
||||||
for(uint8_t i=0; i < 3; i++)
|
|
||||||
debug(" %d", hopping_frequency[i]);
|
|
||||||
debugln();
|
|
||||||
#endif
|
|
||||||
//Switch to normal mode
|
|
||||||
BIND_DONE;
|
|
||||||
phase = JIABAILE_DATA;
|
|
||||||
}
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
else
|
|
||||||
debug("Wrong Sum");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
debug("Wrong TX ID");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
debug("Bad CRC");
|
|
||||||
debugln("");
|
|
||||||
#else
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
JIABAILE_send_packet();
|
|
||||||
phase++;
|
|
||||||
return JIABAILE_WRITE_TIME;
|
|
||||||
case JIABAILE_RX:
|
|
||||||
//Wait for the packet transmission to finish
|
|
||||||
while(XN297_IsPacketSent()==false);
|
|
||||||
//Switch to RX
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
XN297_SetTxRxMode(RX_EN);
|
|
||||||
phase = JIABAILE_BIND;
|
|
||||||
return JIABAILE_BIND_PACKET_PERIOD - JIABAILE_WRITE_TIME;
|
|
||||||
default: //JIABAILE_DATA
|
|
||||||
#ifdef MULTI_SYNC
|
|
||||||
telemetry_set_input_sync(JIABAILE_PACKET_PERIOD);
|
|
||||||
#endif
|
|
||||||
JIABAILE_send_packet();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return JIABAILE_PACKET_PERIOD;
|
|
||||||
}
|
|
||||||
|
|
||||||
void JIABAILE_init()
|
|
||||||
{
|
|
||||||
BIND_IN_PROGRESS; // Autobind protocol
|
|
||||||
JIABAILE_initialize_txid();
|
|
||||||
JIABAILE_RF_init();
|
|
||||||
phase = JIABAILE_BIND;
|
|
||||||
hopping_frequency_no = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
// CAR RX debug code
|
|
||||||
|
|
||||||
static void __attribute__((unused)) JIABAILE_RF_init()
|
|
||||||
{
|
|
||||||
XN297_Configure(XN297_CRCEN, XN297_SCRAMBLED, XN297_1M);
|
|
||||||
//Bind address
|
|
||||||
memcpy(rx_id,(uint8_t*)"\xA7\x07\x57\xA7\x26", 5);
|
|
||||||
XN297_SetTXAddr(rx_id, 5);
|
|
||||||
XN297_SetRXAddr(rx_id, JIABAILE_PAYLOAD_SIZE);
|
|
||||||
XN297_RFChannel(7);
|
|
||||||
rx_tx_addr[0] = 0x00;
|
|
||||||
rx_tx_addr[1] = RX_num;
|
|
||||||
rx_tx_addr[2] = 0x00;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t JIABAILE_callback()
|
|
||||||
{
|
|
||||||
switch(phase)
|
|
||||||
{
|
|
||||||
case JIABAILE_BIND:
|
|
||||||
if(XN297_IsRX())
|
|
||||||
{
|
|
||||||
if(XN297_ReadPayload(packet_in, JIABAILE_PAYLOAD_SIZE))
|
|
||||||
{//CRC OK
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("RX Bind");
|
|
||||||
for(uint8_t i=0; i < JIABAILE_PAYLOAD_SIZE; i++)
|
|
||||||
debug(" %02X", packet_in[i]);
|
|
||||||
debugln();
|
|
||||||
#endif
|
|
||||||
memcpy(packet,packet_in,3);
|
|
||||||
memcpy(&packet[3],rx_tx_addr,3);
|
|
||||||
packet[6]=0xAA + 7;
|
|
||||||
for(uint8_t i=0; i < JIABAILE_RX_PAYLOAD_SIZE-1; i++)
|
|
||||||
packet[6]+=packet[i];
|
|
||||||
XN297_SetTxRxMode(TX_EN);
|
|
||||||
memcpy(&rx_id[1],rx_tx_addr,3);
|
|
||||||
bind_counter = 10;
|
|
||||||
phase = JIABAILE_RX;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return JIABAILE_WRITE_TIME;
|
|
||||||
case JIABAILE_RX:
|
|
||||||
if(bind_counter)
|
|
||||||
{
|
|
||||||
bind_counter--;
|
|
||||||
XN297_WritePayload(packet, JIABAILE_RX_PAYLOAD_SIZE);
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("TX Bind");
|
|
||||||
for(uint8_t i=0; i < JIABAILE_RX_PAYLOAD_SIZE; i++)
|
|
||||||
debug(" %02X", packet[i]);
|
|
||||||
debugln();
|
|
||||||
#endif
|
|
||||||
return JIABAILE_PACKET_PERIOD;
|
|
||||||
}
|
|
||||||
//Wait for the packet transmission to finish
|
|
||||||
//while(XN297_IsPacketSent()==false);
|
|
||||||
//Switch to RX
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
XN297_SetRXAddr(rx_id, JIABAILE_PAYLOAD_SIZE);
|
|
||||||
hopping_frequency_no++;
|
|
||||||
if(hopping_frequency_no>84)
|
|
||||||
hopping_frequency_no = 0;
|
|
||||||
debug(".");
|
|
||||||
XN297_RFChannel(hopping_frequency_no);
|
|
||||||
XN297_SetTxRxMode(RX_EN);
|
|
||||||
phase = JIABAILE_DATA;
|
|
||||||
return JIABAILE_BIND_PACKET_PERIOD;
|
|
||||||
case JIABAILE_DATA:
|
|
||||||
if(XN297_IsRX())
|
|
||||||
{
|
|
||||||
debugln("");
|
|
||||||
if(XN297_ReadPayload(packet_in, JIABAILE_PAYLOAD_SIZE))
|
|
||||||
{//CRC OK
|
|
||||||
#ifdef DEBUG_SERIAL
|
|
||||||
debug("CH=%d=%02X P:",hopping_frequency_no,hopping_frequency_no);
|
|
||||||
for(uint8_t i=0; i < JIABAILE_PAYLOAD_SIZE; i++)
|
|
||||||
debug(" %02X", packet_in[i]);
|
|
||||||
#endif
|
|
||||||
//Check packet
|
|
||||||
uint8_t sum=0x55 + hopping_frequency_no;
|
|
||||||
for(uint8_t i=0; i < JIABAILE_PAYLOAD_SIZE-1; i++)
|
|
||||||
sum+=packet_in[i];
|
|
||||||
if(sum==packet_in[7])
|
|
||||||
{
|
|
||||||
debug("Good channel");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
debug("Wrong Sum");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
debug("Bad CRC");
|
|
||||||
debugln("");
|
|
||||||
}
|
|
||||||
phase = JIABAILE_RX;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return JIABAILE_PACKET_PERIOD;
|
|
||||||
}
|
|
||||||
|
|
||||||
void JIABAILE_init()
|
|
||||||
{
|
|
||||||
JIABAILE_RF_init();
|
|
||||||
XN297_SetTxRxMode(TXRX_OFF);
|
|
||||||
XN297_SetTxRxMode(RX_EN);
|
|
||||||
phase = JIABAILE_BIND;
|
|
||||||
hopping_frequency_no = 7;
|
|
||||||
}
|
|
||||||
*/
|
|
@ -97,4 +97,3 @@
|
|||||||
98,Kyosho3
|
98,Kyosho3
|
||||||
99,XK2
|
99,XK2
|
||||||
100,YuXiang
|
100,YuXiang
|
||||||
102,JIABAILE
|
|
||||||
|
@ -113,7 +113,6 @@ const char STR_EAZYRC[] ="EazyRC";
|
|||||||
const char STR_KYOSHO3[] ="Kyosho3";
|
const char STR_KYOSHO3[] ="Kyosho3";
|
||||||
const char STR_YUXIANG[] ="YuXiang";
|
const char STR_YUXIANG[] ="YuXiang";
|
||||||
const char STR_PINECONE[] ="PineCone";
|
const char STR_PINECONE[] ="PineCone";
|
||||||
const char STR_JIABAILE[] ="JIABAILE";
|
|
||||||
|
|
||||||
const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
|
const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
|
||||||
const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
|
const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
|
||||||
@ -376,9 +375,6 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
#if defined(J6PRO_CYRF6936_INO)
|
#if defined(J6PRO_CYRF6936_INO)
|
||||||
{PROTO_J6PRO, STR_J6PRO, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, J6PRO_init, J6PRO_callback },
|
{PROTO_J6PRO, STR_J6PRO, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, J6PRO_init, J6PRO_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(JIABAILE_NRF24L01_INO)
|
|
||||||
{PROTO_JIABAILE, STR_JIABAILE, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, JIABAILE_init, JIABAILE_callback },
|
|
||||||
#endif
|
|
||||||
#if defined(JJRC345_NRF24L01_INO)
|
#if defined(JJRC345_NRF24L01_INO)
|
||||||
{PROTO_JJRC345, STR_JJRC345, STR_SUBTYPE_JJRC345, 2, OPTION_NONE, 0, 0, SW_NRF, JJRC345_init, JJRC345_callback },
|
{PROTO_JJRC345, STR_JJRC345, STR_SUBTYPE_JJRC345, 2, OPTION_NONE, 0, 0, SW_NRF, JJRC345_init, JJRC345_callback },
|
||||||
#endif
|
#endif
|
||||||
|
@ -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 24
|
#define VERSION_PATCH_LEVEL 23
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -129,7 +129,6 @@ enum PROTOCOLS
|
|||||||
PROTO_XK2 = 99, // =>CC2500 & NRF24L01
|
PROTO_XK2 = 99, // =>CC2500 & NRF24L01
|
||||||
PROTO_YUXIANG = 100, // =>NRF24L01
|
PROTO_YUXIANG = 100, // =>NRF24L01
|
||||||
PROTO_PINECONE = 101, // =>CC2500 & NRF24L01
|
PROTO_PINECONE = 101, // =>CC2500 & NRF24L01
|
||||||
PROTO_JIABAILE = 102, // =>NRF24L01
|
|
||||||
|
|
||||||
PROTO_NANORF = 126, // =>NRF24L01
|
PROTO_NANORF = 126, // =>NRF24L01
|
||||||
PROTO_TEST = 127, // =>CC2500
|
PROTO_TEST = 127, // =>CC2500
|
||||||
|
@ -323,7 +323,6 @@
|
|||||||
#undef H8_3D_NRF24L01_INO
|
#undef H8_3D_NRF24L01_INO
|
||||||
#undef HISKY_NRF24L01_INO
|
#undef HISKY_NRF24L01_INO
|
||||||
#undef HONTAI_NRF24L01_INO
|
#undef HONTAI_NRF24L01_INO
|
||||||
#undef JIABAILE_NRF24L01_INO
|
|
||||||
#undef JJRC345_NRF24L01_INO
|
#undef JJRC345_NRF24L01_INO
|
||||||
#undef KN_NRF24L01_INO
|
#undef KN_NRF24L01_INO
|
||||||
#undef KYOSHO2_NRF24L01_INO
|
#undef KYOSHO2_NRF24L01_INO
|
||||||
@ -389,7 +388,6 @@
|
|||||||
#undef KYOSHO3_CYRF6936_INO
|
#undef KYOSHO3_CYRF6936_INO
|
||||||
#undef MOULDKG_NRF24L01_INO
|
#undef MOULDKG_NRF24L01_INO
|
||||||
#undef SHENQI_NRF24L01_INO
|
#undef SHENQI_NRF24L01_INO
|
||||||
#undef JIABAILE_NRF24L01_INO
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MULTI_SURFACE
|
#ifdef MULTI_SURFACE
|
||||||
|
@ -243,7 +243,6 @@
|
|||||||
#define HISKY_NRF24L01_INO
|
#define HISKY_NRF24L01_INO
|
||||||
#define HONTAI_NRF24L01_INO
|
#define HONTAI_NRF24L01_INO
|
||||||
#define H8_3D_NRF24L01_INO
|
#define H8_3D_NRF24L01_INO
|
||||||
#define JIABAILE_NRF24L01_INO
|
|
||||||
#define JJRC345_NRF24L01_INO
|
#define JJRC345_NRF24L01_INO
|
||||||
#define KN_NRF24L01_INO
|
#define KN_NRF24L01_INO
|
||||||
#define KYOSHO2_NRF24L01_INO
|
#define KYOSHO2_NRF24L01_INO
|
||||||
@ -733,8 +732,6 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
NONE
|
NONE
|
||||||
PROTO_J6PRO
|
PROTO_J6PRO
|
||||||
NONE
|
NONE
|
||||||
PROTO_JIABAILE
|
|
||||||
NONE
|
|
||||||
PROTO_JJRC345
|
PROTO_JJRC345
|
||||||
JJRC345
|
JJRC345
|
||||||
SKYTMBLR
|
SKYTMBLR
|
||||||
|
@ -111,7 +111,6 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[HoTT](Protocols_Details.md#HoTT---57)|57|Sync|No_Sync|||||||CC2500|
|
[HoTT](Protocols_Details.md#HoTT---57)|57|Sync|No_Sync|||||||CC2500|
|
||||||
[Hubsan](Protocols_Details.md#HUBSAN---2)|2|H107|H301|H501||||||A7105|
|
[Hubsan](Protocols_Details.md#HUBSAN---2)|2|H107|H301|H501||||||A7105|
|
||||||
[J6Pro](Protocols_Details.md#J6Pro---22)|22|||||||||CYRF6936|
|
[J6Pro](Protocols_Details.md#J6Pro---22)|22|||||||||CYRF6936|
|
||||||
[JIABAILE](Protocols_Details.md#JIABAILE---102)|102|||||||||NRF24L01|XN297
|
|
||||||
[JJRC345](Protocols_Details.md#JJRC345---71)|71|JJRC345|SkyTmblr|||||||NRF24L01|XN297
|
[JJRC345](Protocols_Details.md#JJRC345---71)|71|JJRC345|SkyTmblr|||||||NRF24L01|XN297
|
||||||
[JOYSWAY](Protocols_Details.md#JOYSWAY---84)|84|||||||||NRF24L01|XN297
|
[JOYSWAY](Protocols_Details.md#JOYSWAY---84)|84|||||||||NRF24L01|XN297
|
||||||
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|ZCZ50||||||NRF24L01|XN297
|
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|ZCZ50||||||NRF24L01|XN297
|
||||||
@ -1913,15 +1912,6 @@ ARM|
|
|||||||
|
|
||||||
### Sub_protocol FQ777_951 - *3*
|
### Sub_protocol FQ777_951 - *3*
|
||||||
|
|
||||||
## JIABAILE - *102*
|
|
||||||
Autobind protocol
|
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7
|
|
||||||
---|---|---|---|---|---|---
|
|
||||||
ST|TH|-|ST_TRIM|SPEED|LIGHT|FLASH
|
|
||||||
|
|
||||||
SPEED: -100% High, 0% Mid, +100% Low
|
|
||||||
|
|
||||||
## JJRC345 - *71*
|
## JJRC345 - *71*
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
|
||||||
|
Loading…
x
Reference in New Issue
Block a user