mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2026-10-04 11:42:10 +00:00
Compare commits
9
Commits
7fadec2d4f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee984c403d | ||
|
|
ced6bbc5c8 | ||
|
|
f10fe7bbf0 | ||
|
|
9691730be6 | ||
|
|
5353281ed7 | ||
|
|
1e65452d68 | ||
|
|
53ecce8a7c | ||
|
|
c8d0638b21 | ||
|
|
55a8412cc8 |
@@ -183,16 +183,22 @@ static void AFHDS2A_build_bind_packet()
|
|||||||
static void AFHDS2A_build_packet(uint8_t type)
|
static void AFHDS2A_build_packet(uint8_t type)
|
||||||
{
|
{
|
||||||
uint16_t val;
|
uint16_t val;
|
||||||
|
uint8_t num_ch = 14; //14 channels
|
||||||
|
if(RX_num > 31)
|
||||||
|
num_ch = 17; //16 channels
|
||||||
memcpy( &packet[1], rx_tx_addr, 4);
|
memcpy( &packet[1], rx_tx_addr, 4);
|
||||||
memcpy( &packet[5], rx_id, 4);
|
memcpy( &packet[5], rx_id, 4);
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case AFHDS2A_PACKET_STICKS:
|
case AFHDS2A_PACKET_STICKS:
|
||||||
packet[0] = 0x58;
|
packet[0] = 0x58;
|
||||||
//16 channels + RX_LQI on channel 17
|
for(uint8_t ch=0; ch<num_ch; ch++)
|
||||||
for(uint8_t ch=0; ch<17; ch++)
|
|
||||||
{
|
{
|
||||||
|
if(ch != 16)
|
||||||
val = convert_channel_ppm(sub_protocol<AFHDS2A_GYRO_OFF?CH_AETR[ch]:ch); // No remapping for BS receivers
|
val = convert_channel_ppm(sub_protocol<AFHDS2A_GYRO_OFF?CH_AETR[ch]:ch); // No remapping for BS receivers
|
||||||
|
else
|
||||||
|
val = 2000 - 10*RX_LQI; //CH17=RX_LQI
|
||||||
|
|
||||||
if(ch<14)
|
if(ch<14)
|
||||||
{
|
{
|
||||||
packet[9 + ch*2] = val;
|
packet[9 + ch*2] = val;
|
||||||
@@ -200,8 +206,6 @@ static void AFHDS2A_build_packet(uint8_t type)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(ch == 16) //CH17=RX_LQI
|
|
||||||
val = 2000 - 10*RX_LQI;
|
|
||||||
packet[10 + (ch-14)*6] |= (val)<<4;
|
packet[10 + (ch-14)*6] |= (val)<<4;
|
||||||
packet[12 + (ch-14)*6] |= (val)&0xF0;
|
packet[12 + (ch-14)*6] |= (val)&0xF0;
|
||||||
packet[14 + (ch-14)*6] |= (val>>4)&0xF0;
|
packet[14 + (ch-14)*6] |= (val>>4)&0xF0;
|
||||||
@@ -215,7 +219,9 @@ static void AFHDS2A_build_packet(uint8_t type)
|
|||||||
break;
|
break;
|
||||||
case AFHDS2A_PACKET_FAILSAFE:
|
case AFHDS2A_PACKET_FAILSAFE:
|
||||||
packet[0] = 0x56;
|
packet[0] = 0x56;
|
||||||
for(uint8_t ch=0; ch<16; ch++)
|
if(num_ch == 17)
|
||||||
|
num_ch--;
|
||||||
|
for(uint8_t ch=0; ch<num_ch; ch++)
|
||||||
{ // Failsafe values
|
{ // Failsafe values
|
||||||
#ifdef FAILSAFE_ENABLE
|
#ifdef FAILSAFE_ENABLE
|
||||||
val = Failsafe_data[protocol==PROTO_AFHDS2A?CH_AETR[ch]:ch]; // No remapping for BS receivers
|
val = Failsafe_data[protocol==PROTO_AFHDS2A?CH_AETR[ch]:ch]; // No remapping for BS receivers
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ static void __attribute__((unused)) DSM_build_bind_packet()
|
|||||||
if(sub_protocol==DSM_AUTO)
|
if(sub_protocol==DSM_AUTO)
|
||||||
packet[11] = 12;
|
packet[11] = 12;
|
||||||
else
|
else
|
||||||
packet[11] = num_ch; // DX5 DSMR sends 0x48...
|
packet[11] = min(num_ch,12); // DX5 DSMR sends 0x48...
|
||||||
//packet[11] = 3; // DX3R
|
//packet[11] = 3; // DX3R
|
||||||
|
|
||||||
if (sub_protocol==DSMR)
|
if (sub_protocol==DSMR)
|
||||||
@@ -142,7 +142,10 @@ static void __attribute__((unused)) DSM_initialize_bind_phase()
|
|||||||
static void __attribute__((unused)) DSM_update_channels()
|
static void __attribute__((unused)) DSM_update_channels()
|
||||||
{
|
{
|
||||||
prev_option=option;
|
prev_option=option;
|
||||||
num_ch=option & 0x0F; // Remove flags 0x80=max_throw, 0x40=11ms
|
num_ch=option & 0x0F; // Remove flags 0x80=max_throw, 0x40=11ms, 0x20=Cloned
|
||||||
|
|
||||||
|
if (num_ch==0) // Special case for 16ch, since channels are encoded in lower 4 bits, 0=16 channels
|
||||||
|
num_ch=16;
|
||||||
|
|
||||||
if(num_ch<3)
|
if(num_ch<3)
|
||||||
num_ch=6; // Default to 6 channels if invalid choice...
|
num_ch=6; // Default to 6 channels if invalid choice...
|
||||||
@@ -329,7 +332,7 @@ uint16_t DSM_callback()
|
|||||||
#define DSM_CH1_CH2_DELAY 4010 // Time between write of channel 1 and channel 2
|
#define DSM_CH1_CH2_DELAY 4010 // Time between write of channel 1 and channel 2
|
||||||
#ifdef STM32_BOARD
|
#ifdef STM32_BOARD
|
||||||
#define DSM_WRITE_DELAY 1600 // Time after write to verify write complete
|
#define DSM_WRITE_DELAY 1600 // Time after write to verify write complete
|
||||||
#define DSM_READ_DELAY 300 // Time before write to check read phase, and switch channels.
|
#define DSM_READ_DELAY 400 // Time before write to check read phase, and switch channels.
|
||||||
#else
|
#else
|
||||||
#define DSM_WRITE_DELAY 1950 // Time after write to verify write complete
|
#define DSM_WRITE_DELAY 1950 // Time after write to verify write complete
|
||||||
#define DSM_READ_DELAY 600 // Time before write to check read phase, and switch channels.
|
#define DSM_READ_DELAY 600 // Time before write to check read phase, and switch channels.
|
||||||
@@ -499,7 +502,7 @@ uint16_t DSM_callback()
|
|||||||
else
|
else
|
||||||
return DSM2_SFC_PERIOD - DSM_CH1_CH2_DELAY - DSM_WRITE_DELAY - DSM_READ_DELAY;
|
return DSM2_SFC_PERIOD - DSM_CH1_CH2_DELAY - DSM_WRITE_DELAY - DSM_READ_DELAY;
|
||||||
}
|
}
|
||||||
return 10900 - DSM_WRITE_DELAY - DSM_READ_DELAY; //Was 11000 but the SR6200A needs 10900 to report telemetry correctly
|
return 11000 - DSM_WRITE_DELAY - DSM_READ_DELAY; //Was 11000 but the SR6200A needs 10900 to report telemetry correctly
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return 11000 - DSM_CH1_CH2_DELAY - DSM_WRITE_DELAY - DSM_READ_DELAY;
|
return 11000 - DSM_CH1_CH2_DELAY - DSM_WRITE_DELAY - DSM_READ_DELAY;
|
||||||
|
|||||||
@@ -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 69
|
#define VERSION_PATCH_LEVEL 74
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
|
|||||||
@@ -508,6 +508,7 @@
|
|||||||
#undef OMP_HUB_TELEMETRY
|
#undef OMP_HUB_TELEMETRY
|
||||||
#undef V761_HUB_TELEMETRY
|
#undef V761_HUB_TELEMETRY
|
||||||
#undef FX_HUB_TELEMETRY
|
#undef FX_HUB_TELEMETRY
|
||||||
|
#undef XK_HUB_TELEMETRY
|
||||||
#undef XK2_HUB_TELEMETRY
|
#undef XK2_HUB_TELEMETRY
|
||||||
#undef SGF22_HUB_TELEMETRY
|
#undef SGF22_HUB_TELEMETRY
|
||||||
#undef KAMTOM_HUB_TELEMETRY
|
#undef KAMTOM_HUB_TELEMETRY
|
||||||
@@ -553,6 +554,9 @@
|
|||||||
#if not defined(FX_NRF24L01_INO)
|
#if not defined(FX_NRF24L01_INO)
|
||||||
#undef FX_HUB_TELEMETRY
|
#undef FX_HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
|
#if not defined(XK_CCNRF_INO)
|
||||||
|
#undef XK_HUB_TELEMETRY
|
||||||
|
#endif
|
||||||
#if not defined(XK2_CCNRF_INO)
|
#if not defined(XK2_CCNRF_INO)
|
||||||
#undef XK2_HUB_TELEMETRY
|
#undef XK2_HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
@@ -622,7 +626,7 @@
|
|||||||
//protocols using FRSKYD user frames
|
//protocols using FRSKYD user frames
|
||||||
#undef HUB_TELEMETRY
|
#undef HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
#if not defined(HOTT_FW_TELEMETRY) && not defined(DSM_TELEMETRY) && not defined(SPORT_TELEMETRY) && not defined(HUB_TELEMETRY) && not defined(HUBSAN_HUB_TELEMETRY) && not defined(BUGS_HUB_TELEMETRY) && not defined(NCC1701_HUB_TELEMETRY) && not defined(BAYANG_HUB_TELEMETRY) && not defined(CABELL_HUB_TELEMETRY) && not defined(RLINK_HUB_TELEMETRY) && not defined(AFHDS2A_HUB_TELEMETRY) && not defined(AFHDS2A_FW_TELEMETRY) && not defined(MULTI_TELEMETRY) && not defined(MULTI_STATUS) && not defined(HITEC_HUB_TELEMETRY) && not defined(HITEC_FW_TELEMETRY) && not defined(SCANNER_TELEMETRY) && not defined(FRSKY_RX_TELEMETRY) && not defined(AFHDS2A_RX_TELEMETRY) && not defined(BAYANG_RX_TELEMETRY) && not defined(DEVO_HUB_TELEMETRY) && not defined(PROPEL_HUB_TELEMETRY) && not defined(OMP_HUB_TELEMETRY) && not defined(V761_HUB_TELEMETRY) && not defined(SGF22_HUB_TELEMETRY) && not defined(XK2_HUB_TELEMETRY) && not defined(FX_HUB_TELEMETRY) && not defined(KAMTOM_HUB_TELEMETRY) && not defined(YUXIANG_HUB_TELEMETRY) && not defined(WFLY2_HUB_TELEMETRY) && not defined(LOLI_HUB_TELEMETRY) && not defined(MLINK_HUB_TELEMETRY) && not defined(MLINK_FW_TELEMETRY) && not defined(MT99XX_HUB_TELEMETRY) && not defined(MULTI_CONFIG_INO)
|
#if not defined(HOTT_FW_TELEMETRY) && not defined(DSM_TELEMETRY) && not defined(SPORT_TELEMETRY) && not defined(HUB_TELEMETRY) && not defined(HUBSAN_HUB_TELEMETRY) && not defined(BUGS_HUB_TELEMETRY) && not defined(NCC1701_HUB_TELEMETRY) && not defined(BAYANG_HUB_TELEMETRY) && not defined(CABELL_HUB_TELEMETRY) && not defined(RLINK_HUB_TELEMETRY) && not defined(AFHDS2A_HUB_TELEMETRY) && not defined(AFHDS2A_FW_TELEMETRY) && not defined(MULTI_TELEMETRY) && not defined(MULTI_STATUS) && not defined(HITEC_HUB_TELEMETRY) && not defined(HITEC_FW_TELEMETRY) && not defined(SCANNER_TELEMETRY) && not defined(FRSKY_RX_TELEMETRY) && not defined(AFHDS2A_RX_TELEMETRY) && not defined(BAYANG_RX_TELEMETRY) && not defined(DEVO_HUB_TELEMETRY) && not defined(PROPEL_HUB_TELEMETRY) && not defined(OMP_HUB_TELEMETRY) && not defined(V761_HUB_TELEMETRY) && not defined(SGF22_HUB_TELEMETRY) && not defined(XK_HUB_TELEMETRY) && not defined(XK2_HUB_TELEMETRY) && not defined(FX_HUB_TELEMETRY) && not defined(KAMTOM_HUB_TELEMETRY) && not defined(YUXIANG_HUB_TELEMETRY) && not defined(WFLY2_HUB_TELEMETRY) && not defined(LOLI_HUB_TELEMETRY) && not defined(MLINK_HUB_TELEMETRY) && not defined(MLINK_FW_TELEMETRY) && not defined(MT99XX_HUB_TELEMETRY) && not defined(MULTI_CONFIG_INO)
|
||||||
#undef TELEMETRY
|
#undef TELEMETRY
|
||||||
#undef INVERT_TELEMETRY
|
#undef INVERT_TELEMETRY
|
||||||
#undef MULTI_TELEMETRY
|
#undef MULTI_TELEMETRY
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ Multiprotocol is distributed in the hope that it will be useful,
|
|||||||
#define XK_PAYLOAD_SIZE 16
|
#define XK_PAYLOAD_SIZE 16
|
||||||
#define XK_BIND_COUNT 750 //3sec
|
#define XK_BIND_COUNT 750 //3sec
|
||||||
|
|
||||||
|
enum {
|
||||||
|
XK_DATA,
|
||||||
|
XK_RX,
|
||||||
|
};
|
||||||
|
|
||||||
static uint16_t __attribute__((unused)) XK_convert_channel(uint8_t num)
|
static uint16_t __attribute__((unused)) XK_convert_channel(uint8_t num)
|
||||||
{
|
{
|
||||||
uint16_t val;
|
uint16_t val;
|
||||||
@@ -123,10 +128,19 @@ static void __attribute__((unused)) XK_send_packet()
|
|||||||
if(Channel_data[CH5] > CHANNEL_MIN_COMMAND)
|
if(Channel_data[CH5] > CHANNEL_MIN_COMMAND)
|
||||||
packet[10] = 0x02; // 3D-Mode
|
packet[10] = 0x02; // 3D-Mode
|
||||||
packet[10] |= GET_FLAG(CH6_SW ,0x04); // Low/High rate
|
packet[10] |= GET_FLAG(CH6_SW ,0x04); // Low/High rate
|
||||||
packet[11] = GET_FLAG(CH7_SW ,0x10) // Back Flip - momentary switch
|
//Aerobatic flags
|
||||||
|
if(CH5_SW) // Only used in 6G mode
|
||||||
|
{
|
||||||
|
flags = GET_FLAG(CH7_SW ,0x10) // Back Flip - momentary switch
|
||||||
|GET_FLAG(CH8_SW ,0x20) // Left Roll - momentary switch
|
|GET_FLAG(CH8_SW ,0x20) // Left Roll - momentary switch
|
||||||
|GET_FLAG(CH9_SW ,0x04) // Right Roll - momentary switch
|
|GET_FLAG(CH9_SW ,0x04) // Right Roll - momentary switch
|
||||||
|GET_FLAG(CH10_SW,0x08); // Inverted Flight - latching switch
|
|GET_FLAG(CH10_SW,0x08); // Inverted Flight - latching switch
|
||||||
|
for(uint8_t i=0; i<8; i++)
|
||||||
|
if((flags & (1<<i)) == 0) arm_flags |= 1<<i;
|
||||||
|
packet[11] = flags & arm_flags;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
arm_flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
crc=packet[0];
|
crc=packet[0];
|
||||||
@@ -134,10 +148,12 @@ static void __attribute__((unused)) XK_send_packet()
|
|||||||
crc+=packet[i];
|
crc+=packet[i];
|
||||||
packet[15]=crc;
|
packet[15]=crc;
|
||||||
|
|
||||||
|
#if 0
|
||||||
debug("C: %02X, P:",hopping_frequency[rf_ch_num]);
|
debug("C: %02X, P:",hopping_frequency[rf_ch_num]);
|
||||||
for(uint8_t i=0; i<XK_PAYLOAD_SIZE; i++)
|
for(uint8_t i=0; i<XK_PAYLOAD_SIZE; i++)
|
||||||
debug(" %02X",packet[i]);
|
debug(" %02X",packet[i]);
|
||||||
debugln("");
|
debugln("");
|
||||||
|
#endif
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
XN297_SetPower(); // Set tx_power
|
XN297_SetPower(); // Set tx_power
|
||||||
@@ -225,27 +241,98 @@ static void __attribute__((unused)) XK_RF_init()
|
|||||||
|
|
||||||
uint16_t XK_callback()
|
uint16_t XK_callback()
|
||||||
{
|
{
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
bool rx = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
switch(phase)
|
||||||
|
{
|
||||||
|
case XK_DATA:
|
||||||
#ifdef MULTI_SYNC
|
#ifdef MULTI_SYNC
|
||||||
telemetry_set_input_sync(XK_PACKET_PERIOD);
|
telemetry_set_input_sync(XK_PACKET_PERIOD);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
rx = XN297_IsRX();
|
||||||
|
XN297_SetTxRxMode(TXRX_OFF);
|
||||||
|
#endif
|
||||||
if(bind_counter)
|
if(bind_counter)
|
||||||
if(--bind_counter==0)
|
if(--bind_counter==0)
|
||||||
{
|
{
|
||||||
BIND_DONE;
|
BIND_DONE;
|
||||||
XN297_SetTXAddr(rx_tx_addr, 5); // Normal packets address
|
XN297_SetTXAddr(rx_tx_addr, 5); // Normal packets address
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
XN297_SetRXAddr(rx_tx_addr, XK_PAYLOAD_SIZE); // Normal packets address
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
XK_send_packet();
|
XK_send_packet();
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
if(rx)
|
||||||
|
{
|
||||||
|
XN297_ReadPayload(packet_in, XK_PAYLOAD_SIZE);
|
||||||
|
#if 1
|
||||||
|
debug("RX");
|
||||||
|
for(uint8_t i=0; i<XK_PAYLOAD_SIZE; i++)
|
||||||
|
debug(" %02X",packet_in[i]);
|
||||||
|
debugln("");
|
||||||
|
#endif
|
||||||
|
if(memcmp(&packet[7], packet_in, 3) == 0)
|
||||||
|
{//TX_ID ok
|
||||||
|
crc=packet_in[0]+0x68;
|
||||||
|
for(uint8_t i=1; i<XK_PAYLOAD_SIZE-1;i++)
|
||||||
|
crc+=packet_in[i];
|
||||||
|
if(packet_in[15] == crc)
|
||||||
|
{//Checksum ok
|
||||||
|
telemetry_link = 1;
|
||||||
|
v_lipo1 = packet_in[10] ? 137:162; // low voltage 7.1V
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
phase++;
|
||||||
|
return 1350;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
default: //XK_RX
|
||||||
|
/*{ // Wait for packet to be sent before switching to receive mode
|
||||||
|
uint16_t start=(uint16_t)micros(), count=0;
|
||||||
|
while ((uint16_t)((uint16_t)micros()-(uint16_t)start) < 500)
|
||||||
|
{
|
||||||
|
if(XN297_IsPacketSent())
|
||||||
|
break;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
debugln("%d",count);
|
||||||
|
}*/
|
||||||
|
//Switch to RX
|
||||||
|
XN297_SetTxRxMode(TXRX_OFF);
|
||||||
|
XN297_SetTxRxMode(RX_EN);
|
||||||
|
phase = XK_DATA;
|
||||||
|
return XK_PACKET_PERIOD-1350;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
return XK_PACKET_PERIOD;
|
return XK_PACKET_PERIOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XK_init()
|
void XK_init()
|
||||||
{
|
{
|
||||||
if(sub_protocol != XK_CARS && protocol != PROTO_MOFLY)
|
if((sub_protocol != XK_CARS && protocol != PROTO_MOFLY) || IS_BIND_IN_PROGRESS)
|
||||||
|
{
|
||||||
|
bind_counter=XK_BIND_COUNT;
|
||||||
BIND_IN_PROGRESS; // Autobind protocol
|
BIND_IN_PROGRESS; // Autobind protocol
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bind_counter=1;
|
||||||
XK_initialize_txid();
|
XK_initialize_txid();
|
||||||
XK_RF_init();
|
XK_RF_init();
|
||||||
hopping_frequency_no = 0;
|
hopping_frequency_no = 0;
|
||||||
bind_counter=XK_BIND_COUNT;
|
phase = XK_DATA;
|
||||||
|
|
||||||
|
arm_flags = 0;
|
||||||
|
|
||||||
|
#ifdef XK_HUB_TELEMETRY
|
||||||
|
RX_RSSI = 100; // Dummy value
|
||||||
|
telemetry_lost = 1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -357,6 +357,7 @@
|
|||||||
#define V761_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define V761_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define KAMTOM_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define KAMTOM_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define FX_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define FX_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
|
#define XK_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define XK2_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define XK2_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define SGF22_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define SGF22_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define YUXIANG_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define YUXIANG_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
|
|||||||
+12
-6
@@ -237,26 +237,32 @@ Option is used to change the servo refresh rate. A value of 0 gives 50Hz (min),
|
|||||||
**RX_Num is used to give a number a given RX. You must use a different RX_Num per RX. A maximum of 64 AFHDS2A RXs are supported.**
|
**RX_Num is used to give a number a given RX. You must use a different RX_Num per RX. A maximum of 64 AFHDS2A RXs are supported.**
|
||||||
|
|
||||||
### Sub_protocol PWM_IBUS - *0*
|
### Sub_protocol PWM_IBUS - *0*
|
||||||
|
RX output will match the Flysky standard AETR.
|
||||||
|
|
||||||
|
If the RX number is between 0 and 31, only 14 channels are sent. Between 32 and 63, all 17 channels are sent.
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
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|CH14|CH15|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*
|
### Sub_protocol PPM_IBUS - *1*
|
||||||
|
RX output will match the Flysky standard AETR.
|
||||||
|
|
||||||
|
If the RX number is between 0 and 31, only 14 channels are sent. Between 32 and 63, all 17 channels are sent.
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
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|CH14|CH15|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*
|
### Sub_protocol PWM_SBUS - *2*
|
||||||
|
RX output will match the Flysky standard AETR.
|
||||||
|
|
||||||
|
If the RX number is between 0 and 31, only 14 channels are sent. Between 32 and 63, all 17 channels are sent.
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
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|CH14|CH15|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 Gyro_Off - *3*
|
### Sub_protocol Gyro_Off - *3*
|
||||||
RXs: FS-BS6, FS-BS4
|
RXs: FS-BS6, FS-BS4
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user