mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-07-01 01:57:52 +00:00
Added AFHDS2A BS4/BS6 support
This commit is contained in:
parent
d091c57e10
commit
db5f1f8899
@ -54,10 +54,9 @@
|
|||||||
28,1,Flysky_AFHDS2A,PPM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
28,1,Flysky_AFHDS2A,PPM_IBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
28,2,Flysky_AFHDS2A,PWM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
28,2,Flysky_AFHDS2A,PWM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
28,3,Flysky_AFHDS2A,PPM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
28,3,Flysky_AFHDS2A,PPM_SBUS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
28,4,Flysky_AFHDS2A,PWM_IB16,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16
|
28,4,Flysky_AFHDS2A,Gyro_Off,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,ST_Ga,TH_Ga,Prio,Calib
|
||||||
28,5,Flysky_AFHDS2A,PPM_IB16,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16
|
28,5,Flysky_AFHDS2A,Gyro_On,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,ST_Ga,TH_Ga,Prio,Calib
|
||||||
28,6,Flysky_AFHDS2A,PWM_SB16,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16
|
28,6,Flysky_AFHDS2A,G_On_Rev,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,ST_Ga,TH_Ga,Prio,Calib
|
||||||
28,7,Flysky_AFHDS2A,PPM_SB16,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14,CH15,CH16
|
|
||||||
56,0,Flysky2A_RX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
56,0,Flysky2A_RX,RX,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
56,1,Flysky2A_RX,CPPM,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
56,1,Flysky2A_RX,CPPM,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
53,0,Height,5ch,0,Gear
|
53,0,Height,5ch,0,Gear
|
||||||
|
@ -183,8 +183,18 @@ uint16_t AFHDS2A_RX_callback()
|
|||||||
case AFHDS2A_RX_DATA:
|
case AFHDS2A_RX_DATA:
|
||||||
if (AFHDS2A_RX_data_ready()) {
|
if (AFHDS2A_RX_data_ready()) {
|
||||||
A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE);
|
A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE);
|
||||||
if (memcmp(&packet[1], rx_id, 4) == 0 && memcmp(&packet[5], rx_tx_addr, 4) == 0) {
|
if (memcmp(&packet[1], rx_id, 4) == 0 && memcmp(&packet[5], rx_tx_addr, 4) == 0)
|
||||||
if (packet[0] == 0x58 && packet[37] == 0x00 && (telemetry_link&0x7F) == 0) { // standard packet, send channels to TX
|
{
|
||||||
|
#if 0
|
||||||
|
//if(packet[0] == 0xAA)
|
||||||
|
{
|
||||||
|
for(uint8_t i=0;i<AFHDS2A_RX_TXPACKET_SIZE;i++)
|
||||||
|
debug(" %02X",packet[i]);
|
||||||
|
debugln("");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (packet[0] == 0x58 && packet[37] == 0x00 && (telemetry_link&0x7F) == 0)
|
||||||
|
{ // standard packet, send channels to TX
|
||||||
int rssi = min(A7105_ReadReg(A7105_1D_RSSI_THOLD),160);
|
int rssi = min(A7105_ReadReg(A7105_1D_RSSI_THOLD),160);
|
||||||
RX_RSSI = map16b(rssi, 160, 8, 0, 128);
|
RX_RSSI = map16b(rssi, 160, 8, 0, 128);
|
||||||
AFHDS2A_RX_build_telemetry_packet();
|
AFHDS2A_RX_build_telemetry_packet();
|
||||||
|
@ -93,15 +93,17 @@ static void AFHDS2A_update_telemetry()
|
|||||||
if (option & 0x80)
|
if (option & 0x80)
|
||||||
{// forward 0xAA and 0xAC telemetry to TX, skip rx and tx id to save space
|
{// forward 0xAA and 0xAC telemetry to TX, skip rx and tx id to save space
|
||||||
packet_in[0]= TX_RSSI;
|
packet_in[0]= TX_RSSI;
|
||||||
debug("T(%02X)=",packet[0]);
|
#if 0
|
||||||
for(uint8_t i=9;i < AFHDS2A_RXPACKET_SIZE; i++)
|
debug("T(%02X)=",packet[0]);
|
||||||
{
|
for(uint8_t i=9;i < AFHDS2A_RXPACKET_SIZE; i++)
|
||||||
packet_in[i-8]=packet[i];
|
{
|
||||||
debug(" %02X",packet[i]);
|
packet_in[i-8]=packet[i];
|
||||||
}
|
debug(" %02X",packet[i]);
|
||||||
|
}
|
||||||
|
debugln("");
|
||||||
|
#endif
|
||||||
packet_in[29]=packet[0]; // 0xAA Normal telemetry, 0xAC Extended telemetry
|
packet_in[29]=packet[0]; // 0xAA Normal telemetry, 0xAC Extended telemetry
|
||||||
telemetry_link=2;
|
telemetry_link=2;
|
||||||
debugln("");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -186,16 +188,40 @@ static void AFHDS2A_build_packet(uint8_t type)
|
|||||||
case AFHDS2A_PACKET_STICKS:
|
case AFHDS2A_PACKET_STICKS:
|
||||||
packet[0] = 0x58;
|
packet[0] = 0x58;
|
||||||
//16 channels + RX_LQI on channel 17
|
//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 // CH17=RX_LQI
|
val = convert_channel_ppm(sub_protocol<AFHDS2A_GYRO_OFF?CH_AETR[ch]:ch); // No remapping for BS receivers
|
||||||
#ifdef AFHDS2A_LQI_CH
|
if(ch<14)
|
||||||
|| ch == (AFHDS2A_LQI_CH-1) // override channel with LQI
|
{
|
||||||
#endif
|
packet[9 + ch*2] = val;
|
||||||
)
|
packet[10 + ch*2] = (val>>8)&0x0F;
|
||||||
val = 2000 - 10*RX_LQI;
|
}
|
||||||
else
|
else
|
||||||
val = convert_channel_ppm(CH_AETR[ch]);
|
{
|
||||||
|
if(ch == 16) //CH17=RX_LQI
|
||||||
|
val = 2000 - 10*RX_LQI;
|
||||||
|
packet[10 + (ch-14)*6] |= (val)<<4;
|
||||||
|
packet[12 + (ch-14)*6] |= (val)&0xF0;
|
||||||
|
packet[14 + (ch-14)*6] |= (val>>4)&0xF0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
uint8_t next_hop = (hopping_frequency_no+1)&0x0F;
|
||||||
|
packet[34] |= next_hop<<4;
|
||||||
|
packet[36] |= next_hop?0x80:0x90;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AFHDS2A_PACKET_FAILSAFE:
|
||||||
|
packet[0] = 0x56;
|
||||||
|
for(uint8_t ch=0; ch<16; ch++)
|
||||||
|
{ // Failsafe values
|
||||||
|
#ifdef FAILSAFE_ENABLE
|
||||||
|
val = Failsafe_data[protocol==PROTO_AFHDS2A?CH_AETR[ch]:ch]; // No remapping for BS receivers
|
||||||
|
if(val!=FAILSAFE_CHANNEL_HOLD && val!=FAILSAFE_CHANNEL_NOPULSES)
|
||||||
|
val = (((val<<2)+val)>>3)+860;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
val = 0x0FFF;
|
||||||
if(ch<14)
|
if(ch<14)
|
||||||
{
|
{
|
||||||
packet[9 + ch*2] = val;
|
packet[9 + ch*2] = val;
|
||||||
@ -209,42 +235,6 @@ static void AFHDS2A_build_packet(uint8_t type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AFHDS2A_PACKET_FAILSAFE:
|
|
||||||
packet[0] = 0x56;
|
|
||||||
for(uint8_t ch=0; ch<num_ch; ch++)
|
|
||||||
{
|
|
||||||
#ifdef FAILSAFE_ENABLE
|
|
||||||
if(ch<16)
|
|
||||||
val = Failsafe_data[CH_AETR[ch]];
|
|
||||||
else
|
|
||||||
val = FAILSAFE_CHANNEL_NOPULSES;
|
|
||||||
if(val!=FAILSAFE_CHANNEL_HOLD && val!=FAILSAFE_CHANNEL_NOPULSES)
|
|
||||||
{ // Failsafe values
|
|
||||||
val = (((val<<2)+val)>>3)+860;
|
|
||||||
if(ch<14)
|
|
||||||
{
|
|
||||||
packet[9 + ch*2] = val;
|
|
||||||
packet[10 + ch*2] = (val>>8)&0x0F;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
packet[10 + (ch-14)*6] &= 0x0F;
|
|
||||||
packet[10 + (ch-14)*6] |= (val)<<4;
|
|
||||||
packet[12 + (ch-14)*6] &= 0x0F;
|
|
||||||
packet[12 + (ch-14)*6] |= (val)&0xF0;
|
|
||||||
packet[14 + (ch-14)*6] &= 0x0F;
|
|
||||||
packet[14 + (ch-14)*6] |= (val>>4)&0xF0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if(ch<14)
|
|
||||||
{ // no values
|
|
||||||
packet[9 + ch*2] = 0xff;
|
|
||||||
packet[10+ ch*2] = 0xff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case AFHDS2A_PACKET_SETTINGS:
|
case AFHDS2A_PACKET_SETTINGS:
|
||||||
packet[0] = 0xaa;
|
packet[0] = 0xaa;
|
||||||
packet[9] = 0xfd;
|
packet[9] = 0xfd;
|
||||||
@ -253,17 +243,43 @@ static void AFHDS2A_build_packet(uint8_t type)
|
|||||||
if(val<50 || val>400) val=50; // default is 50Hz
|
if(val<50 || val>400) val=50; // default is 50Hz
|
||||||
packet[11]= val;
|
packet[11]= val;
|
||||||
packet[12]= val >> 8;
|
packet[12]= val >> 8;
|
||||||
packet[13] = sub_protocol & 0x01; // 1 -> PPM output enabled
|
memset(&packet[15],0xFF,22);
|
||||||
packet[14]= 0x00;
|
#ifndef MULTI_AIR
|
||||||
for(uint8_t i=15; i<37; i++)
|
if(sub_protocol < AFHDS2A_GYRO_OFF)
|
||||||
packet[i] = 0xff;
|
{
|
||||||
packet[18] = 0x05; // ?
|
#endif
|
||||||
packet[19] = 0xdc; // ?
|
packet[13] = sub_protocol & 0x01; // 1 -> PPM output enabled
|
||||||
packet[20] = 0x05; // ?
|
packet[14] = 0x00; // ?
|
||||||
if(sub_protocol&2)
|
packet[18] = 0x05; // ?
|
||||||
packet[21] = 0xdd; // SBUS output enabled
|
packet[19] = 0xdc; // ?
|
||||||
|
packet[20] = 0x05; // ?
|
||||||
|
if(sub_protocol&2)
|
||||||
|
packet[21] = 0xdd; // SBUS output enabled
|
||||||
|
else
|
||||||
|
packet[21] = 0xde; // IBUS
|
||||||
|
#ifndef MULTI_AIR
|
||||||
|
}
|
||||||
else
|
else
|
||||||
packet[21] = 0xde; // IBUS
|
{//BS receivers
|
||||||
|
if(sub_protocol == AFHDS2A_GYRO_OFF)
|
||||||
|
{
|
||||||
|
memset(&packet[15],0x00,4);
|
||||||
|
packet[22] = 0xFC; // ?
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//AFHDS2A_GYRO_ON & AFHDS2A_GYRO_ON_REV
|
||||||
|
packet[15] = convert_channel_16b_limit(CH13,0,100); // ST Gain
|
||||||
|
packet[16] = convert_channel_16b_limit(CH14,0,100); // TH Gain
|
||||||
|
packet[17] = convert_channel_16b_limit(CH15,0,100); // Priority
|
||||||
|
if(sub_protocol == AFHDS2A_GYRO_ON_REV)
|
||||||
|
packet[17] |= 0x80; // Reverse
|
||||||
|
packet[18] = CH16_SW?(0x32|0x80):0x32; // Calib|50?
|
||||||
|
packet[19] = 0x64; // 100?
|
||||||
|
packet[20] = 0x64; // 100?
|
||||||
|
packet[22] = 0xFE; // ?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
packet[37] = 0x00;
|
packet[37] = 0x00;
|
||||||
@ -283,6 +299,9 @@ uint16_t AFHDS2A_callback()
|
|||||||
static uint16_t packet_counter;
|
static uint16_t packet_counter;
|
||||||
uint8_t data_rx=0;
|
uint8_t data_rx=0;
|
||||||
uint16_t start;
|
uint16_t start;
|
||||||
|
#ifndef MULTI_AIR
|
||||||
|
static uint16_t Prev_Channel[4] = { 0,0,0,0 };
|
||||||
|
#endif
|
||||||
#ifndef FORCE_AFHDS2A_TUNING
|
#ifndef FORCE_AFHDS2A_TUNING
|
||||||
A7105_AdjustLOBaseFreq(1);
|
A7105_AdjustLOBaseFreq(1);
|
||||||
#endif
|
#endif
|
||||||
@ -367,10 +386,39 @@ uint16_t AFHDS2A_callback()
|
|||||||
AFHDS2A_build_packet(packet_type);
|
AFHDS2A_build_packet(packet_type);
|
||||||
data_rx=A7105_ReadReg(A7105_00_MODE); // Check if something has been received...
|
data_rx=A7105_ReadReg(A7105_00_MODE); // Check if something has been received...
|
||||||
A7105_WriteData(AFHDS2A_TXPACKET_SIZE, hopping_frequency[hopping_frequency_no++]);
|
A7105_WriteData(AFHDS2A_TXPACKET_SIZE, hopping_frequency[hopping_frequency_no++]);
|
||||||
if(hopping_frequency_no >= AFHDS2A_NUMFREQ)
|
hopping_frequency_no &= 0x0F; // AFHDS2A_NUMFREQ
|
||||||
hopping_frequency_no = 0;
|
#if 0
|
||||||
|
for(uint8_t i=0; i<AFHDS2A_TXPACKET_SIZE; i++)
|
||||||
|
debug(" %02X",packet[i]);
|
||||||
|
debugln("");
|
||||||
|
#endif
|
||||||
|
#ifndef MULTI_AIR
|
||||||
|
if(sub_protocol > AFHDS2A_GYRO_OFF)
|
||||||
|
{//Gyro is on
|
||||||
|
//Check if gyro settings have changed
|
||||||
|
uint16_t val;
|
||||||
|
for(uint8_t i=0;i<4;i++)
|
||||||
|
{
|
||||||
|
val = Channel_data[CH13+i] - Prev_Channel[i];
|
||||||
|
if(val&0x8000) val ^= 0xFFFF;
|
||||||
|
if(val > 10)
|
||||||
|
{//This setting has significantly changed
|
||||||
|
Prev_Channel[i] = Channel_data[CH13+i];
|
||||||
|
packet_sent = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(packet_sent && (packet_counter%5)==0)
|
||||||
|
{//Inform the RX of the change
|
||||||
|
packet_type = AFHDS2A_PACKET_SETTINGS;
|
||||||
|
packet_sent--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if(!(packet_counter % 1313))
|
if(!(packet_counter % 1313))
|
||||||
|
{//Send settings every 5s
|
||||||
packet_type = AFHDS2A_PACKET_SETTINGS;
|
packet_type = AFHDS2A_PACKET_SETTINGS;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef FAILSAFE_ENABLE
|
#ifdef FAILSAFE_ENABLE
|
||||||
@ -448,9 +496,6 @@ void AFHDS2A_init()
|
|||||||
rx_id[i]=eeprom_read_byte((EE_ADDR)(addr+i));
|
rx_id[i]=eeprom_read_byte((EE_ADDR)(addr+i));
|
||||||
}
|
}
|
||||||
hopping_frequency_no = 0;
|
hopping_frequency_no = 0;
|
||||||
if(sub_protocol&0x04)
|
packet_sent = 0;
|
||||||
num_ch=17;
|
|
||||||
else
|
|
||||||
num_ch=14;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
25,FrskyV
|
25,FrskyV
|
||||||
26,HONTAI,HONTAI,JJRCX1,X5C1,FQ777_951,XKK170
|
26,HONTAI,HONTAI,JJRCX1,X5C1,FQ777_951,XKK170
|
||||||
27,OpnLrs
|
27,OpnLrs
|
||||||
28,AFHDS2A,PWM_IBUS,PPM_IBUS,PWM_SBUS,PPM_SBUS,PWM_IB16,PPM_IB16,PWM_SB16,PPM_SB16
|
28,AFHDS2A,PWM_IBUS,PPM_IBUS,PWM_SBUS,PPM_SBUS,Gyro_Off,Gyro_On,G_On_Rev
|
||||||
29,Q2X2,Q222,Q242,Q282
|
29,Q2X2,Q222,Q242,Q282
|
||||||
30,WK2x01,WK2801,WK2401,W6_5_1,W6_6_1,W6_HEL,W6_HEL_I
|
30,WK2x01,WK2801,WK2401,W6_5_1,W6_6_1,W6_HEL,W6_HEL_I
|
||||||
31,Q303,Q303,CX35,CX10D,CX10WD
|
31,Q303,Q303,CX35,CX10D,CX10WD
|
||||||
|
@ -147,7 +147,7 @@ const char STR_SUBTYPE_MT992[] = "\x04""PA18""SU35";
|
|||||||
const char STR_SUBTYPE_MJXQ[] = "\x07""WLH08\0 ""X600\0 ""X800\0 ""H26D\0 ""E010\0 ""H26WH\0 ""Phoenix";
|
const char STR_SUBTYPE_MJXQ[] = "\x07""WLH08\0 ""X600\0 ""X800\0 ""H26D\0 ""E010\0 ""H26WH\0 ""Phoenix";
|
||||||
const char STR_SUBTYPE_FY326[] = "\x05""Std\0 ""FY319";
|
const char STR_SUBTYPE_FY326[] = "\x05""Std\0 ""FY319";
|
||||||
const char STR_SUBTYPE_HONTAI[] = "\x06""Std\0 ""JJRCX1""X5C1\0 ""FQ_951""XKK170";
|
const char STR_SUBTYPE_HONTAI[] = "\x06""Std\0 ""JJRCX1""X5C1\0 ""FQ_951""XKK170";
|
||||||
const char STR_SUBTYPE_AFHDS2A[] = "\x08""PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS""PWM,IB16""PPM,IB16""PWM,SB16""PPM,SB16";
|
const char STR_SUBTYPE_AFHDS2A[] = "\x08""PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS""Gyro_Off""Gyro_On\0""G_On_Rev";
|
||||||
const char STR_SUBTYPE_Q2X2[] = "\x04""Q222""Q242""Q282";
|
const char STR_SUBTYPE_Q2X2[] = "\x04""Q222""Q242""Q282";
|
||||||
const char STR_SUBTYPE_WK2x01[] = "\x06""WK2801""WK2401""W6_5_1""W6_6_1""W6_HeL""W6_HeI";
|
const char STR_SUBTYPE_WK2x01[] = "\x06""WK2801""WK2401""W6_5_1""W6_6_1""W6_HeL""W6_HeI";
|
||||||
const char STR_SUBTYPE_Q303[] = "\x06""Std\0 ""CX35\0 ""CX10D\0""CX10WD";
|
const char STR_SUBTYPE_Q303[] = "\x06""Std\0 ""CX35\0 ""CX10D\0""CX10WD";
|
||||||
@ -307,7 +307,7 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
{PROTO_FLYSKY, STR_FLYSKY, STR_SUBTYPE_FLYSKY, 5, OPTION_NONE, 0, 1, SW_A7105, FLYSKY_init, FLYSKY_callback },
|
{PROTO_FLYSKY, STR_FLYSKY, STR_SUBTYPE_FLYSKY, 5, OPTION_NONE, 0, 1, SW_A7105, FLYSKY_init, FLYSKY_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(AFHDS2A_A7105_INO)
|
#if defined(AFHDS2A_A7105_INO)
|
||||||
{PROTO_AFHDS2A, STR_AFHDS2A, STR_SUBTYPE_AFHDS2A, 8, OPTION_SRVFREQ, 1, 1, SW_A7105, AFHDS2A_init, AFHDS2A_callback },
|
{PROTO_AFHDS2A, STR_AFHDS2A, STR_SUBTYPE_AFHDS2A, 7, OPTION_SRVFREQ, 1, 1, SW_A7105, AFHDS2A_init, AFHDS2A_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(AFHDS2A_RX_A7105_INO)
|
#if defined(AFHDS2A_RX_A7105_INO)
|
||||||
{PROTO_AFHDS2A_RX, STR_AFHDS2A_RX,STR_CPPM, NBR_CPPM, OPTION_NONE, 0, 0, SW_A7105, AFHDS2A_RX_init, AFHDS2A_RX_callback },
|
{PROTO_AFHDS2A_RX, STR_AFHDS2A_RX,STR_CPPM, NBR_CPPM, OPTION_NONE, 0, 0, SW_A7105, AFHDS2A_RX_init, AFHDS2A_RX_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 46
|
#define VERSION_PATCH_LEVEL 47
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -159,14 +159,13 @@ enum Hubsan
|
|||||||
};
|
};
|
||||||
enum AFHDS2A
|
enum AFHDS2A
|
||||||
{
|
{
|
||||||
PWM_IBUS = 0,
|
PWM_IBUS = 0,
|
||||||
PPM_IBUS = 1,
|
PPM_IBUS = 1,
|
||||||
PWM_SBUS = 2,
|
PWM_SBUS = 2,
|
||||||
PPM_SBUS = 3,
|
PPM_SBUS = 3,
|
||||||
PWM_IB16 = 4,
|
AFHDS2A_GYRO_OFF = 4,
|
||||||
PPM_IB16 = 5,
|
AFHDS2A_GYRO_ON = 5,
|
||||||
PWM_SB16 = 6,
|
AFHDS2A_GYRO_ON_REV = 6,
|
||||||
PPM_SB16 = 7,
|
|
||||||
};
|
};
|
||||||
enum Hisky
|
enum Hisky
|
||||||
{
|
{
|
||||||
|
@ -211,7 +211,7 @@
|
|||||||
#define FRSKYL_CC2500_INO
|
#define FRSKYL_CC2500_INO
|
||||||
#define FRSKYD_CC2500_INO
|
#define FRSKYD_CC2500_INO
|
||||||
#define FRSKYV_CC2500_INO
|
#define FRSKYV_CC2500_INO
|
||||||
#define FRSKYX_CC2500_INO
|
#define FRSKYX_CC2500_INO //Include FRSKYX2 protocol
|
||||||
#define FRSKY_RX_CC2500_INO
|
#define FRSKY_RX_CC2500_INO
|
||||||
#define HITEC_CC2500_INO
|
#define HITEC_CC2500_INO
|
||||||
#define HOTT_CC2500_INO
|
#define HOTT_CC2500_INO
|
||||||
@ -302,11 +302,6 @@
|
|||||||
//Enable DSM Forward Programming
|
//Enable DSM Forward Programming
|
||||||
#define DSM_FWD_PGM
|
#define DSM_FWD_PGM
|
||||||
|
|
||||||
//AFHDS2A specific settings
|
|
||||||
//-------------------------
|
|
||||||
//When enabled (remove the "//"), the below setting makes LQI (Link Quality Indicator) available on one of the RX ouput channel (5-14).
|
|
||||||
//#define AFHDS2A_LQI_CH 14
|
|
||||||
|
|
||||||
/**************************/
|
/**************************/
|
||||||
/*** FAILSAFE SETTINGS ***/
|
/*** FAILSAFE SETTINGS ***/
|
||||||
/**************************/
|
/**************************/
|
||||||
@ -568,10 +563,9 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PPM_IBUS
|
PPM_IBUS
|
||||||
PWM_SBUS
|
PWM_SBUS
|
||||||
PPM_SBUS
|
PPM_SBUS
|
||||||
PWM_IB16
|
AFHDS2A_GYRO_OFF
|
||||||
PPM_IB16
|
AFHDS2A_GYRO_ON
|
||||||
PWM_SB16
|
AFHDS2A_GYRO_ON_REV
|
||||||
PPM_SB16
|
|
||||||
PROTO_AFHDS2A_RX
|
PROTO_AFHDS2A_RX
|
||||||
NONE
|
NONE
|
||||||
PROTO_ASSAN
|
PROTO_ASSAN
|
||||||
|
@ -88,7 +88,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[ESky150](Protocols_Details.md#ESKY150---35)|35|||||||||NRF24L01|
|
[ESky150](Protocols_Details.md#ESKY150---35)|35|||||||||NRF24L01|
|
||||||
[ESky150V2](Protocols_Details.md#ESKY150V2---69)|69|||||||||CC2500|NRF51822
|
[ESky150V2](Protocols_Details.md#ESKY150V2---69)|69|||||||||CC2500|NRF51822
|
||||||
[Flysky](Protocols_Details.md#FLYSKY---1)|1|Flysky|V9x9|V6x6|V912|CX20||||A7105|
|
[Flysky](Protocols_Details.md#FLYSKY---1)|1|Flysky|V9x9|V6x6|V912|CX20||||A7105|
|
||||||
[Flysky AFHDS2A](Protocols_Details.md#FLYSKY-AFHDS2A---28)|28|PWM_IBUS|PPM_IBUS|PWM_SBUS|PPM_SBUS|PWM_IBUS16|PPM_IBUS16|PWM_SBUS16|PPM_SBUS16|A7105|
|
[Flysky AFHDS2A](Protocols_Details.md#FLYSKY-AFHDS2A---28)|28|PWM_IBUS|PPM_IBUS|PWM_SBUS|PPM_SBUS|Gyro_Off|Gyro_On|Gyro_On_Rev||A7105|
|
||||||
[Flysky AFHDS2A RX](Protocols_Details.md#FLYSKY-AFHDS2A-RX---56)|56|Multi|CPPM|||||||A7105|
|
[Flysky AFHDS2A RX](Protocols_Details.md#FLYSKY-AFHDS2A-RX---56)|56|Multi|CPPM|||||||A7105|
|
||||||
[FQ777](Protocols_Details.md#FQ777---23)|23|||||||||NRF24L01|SSV7241
|
[FQ777](Protocols_Details.md#FQ777---23)|23|||||||||NRF24L01|SSV7241
|
||||||
[FrskyD](Protocols_Details.md#FRSKYD---3)|3|D8|Cloned|||||||CC2500|
|
[FrskyD](Protocols_Details.md#FRSKYD---3)|3|D8|Cloned|||||||CC2500|
|
||||||
@ -227,36 +227,59 @@ Telemetry enabled protocol:
|
|||||||
- if using erskyTX and OpenTX: full telemetry information available
|
- if using erskyTX and OpenTX: full telemetry information available
|
||||||
- if telemetry is incomplete (missing RX RSSI for example), it means that you have to upgrade your RX firmware to version 1.6 or later. You can do it from an original Flysky TX or using a STLink like explained in [this tutorial](https://www.rcgroups.com/forums/showthread.php?2677694-How-to-upgrade-Flysky-Turnigy-iA6B-RX-to-firmware-1-6-with-a-ST-Link).
|
- if telemetry is incomplete (missing RX RSSI for example), it means that you have to upgrade your RX firmware to version 1.6 or later. You can do it from an original Flysky TX or using a STLink like explained in [this tutorial](https://www.rcgroups.com/forums/showthread.php?2677694-How-to-upgrade-Flysky-Turnigy-iA6B-RX-to-firmware-1-6-with-a-ST-Link).
|
||||||
|
|
||||||
|
LQI: Link Quality Indicator which is sent back to the RX on CH17
|
||||||
|
|
||||||
Option is used to change the servo refresh rate. A value of 0 gives 50Hz (min), 70 gives 400Hz (max). Specific refresh rate value can be calculated like this option=(refresh_rate-50)/5.
|
Option is used to change the servo refresh rate. A value of 0 gives 50Hz (min), 70 gives 400Hz (max). Specific refresh rate value can be calculated like this option=(refresh_rate-50)/5.
|
||||||
|
|
||||||
**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.**
|
||||||
|
|
||||||
AFHDS2A_LQI_CH is a feature which is disabled by defaut in the _config.h file. When enabled, it makes LQI (Link Quality Indicator) available on one of the RX ouput channel (5-14).
|
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14
|
|
||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
|
||||||
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14
|
|
||||||
|
|
||||||
RX output will match the Flysky standard AETR independently of the input configuration AETR, RETA... unless on OpenTX 2.3.3+ you use the "Disable channel mapping" feature on the GUI.
|
|
||||||
|
|
||||||
### Sub_protocol PWM_IBUS - *0*
|
### 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
|
||||||
|
|
||||||
|
RX output will match the Flysky standard AETR.
|
||||||
|
|
||||||
### Sub_protocol PPM_IBUS - *1*
|
### 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
|
||||||
|
|
||||||
|
RX output will match the Flysky standard AETR.
|
||||||
|
|
||||||
### Sub_protocol PWM_SBUS - *2*
|
### Sub_protocol PWM_SBUS - *2*
|
||||||
### Sub_protocol PPM_SBUS - *3*
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16|CH17
|
||||||
As stated above.
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||||
|
A|E|T|R|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14CH15|CH16|LQI
|
||||||
|
|
||||||
### Sub_protocol PWM_IBUS16 - *4*
|
RX output will match the Flysky standard AETR.
|
||||||
### Sub_protocol PPM_IBUS16 - *5*
|
|
||||||
### Sub_protocol PWM_SBUS16 - *6*
|
|
||||||
### Sub_protocol PPM_SBUS16 - *7*
|
|
||||||
|
|
||||||
3 additional channels. Need recent or updated RXs.
|
### Sub_protocol Gyro_Off - *3*
|
||||||
|
RXs: FS-BS6, FS-BS4
|
||||||
|
|
||||||
CH15|CH16|CH17
|
Gyro is off
|
||||||
---|---|---
|
|
||||||
CH15|CH16|LQI
|
|
||||||
|
|
||||||
LQI: Link Quality Indicator
|
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|-|-|-|-|LQI
|
||||||
|
|
||||||
|
### Sub_protocol Gyro_On - *4*
|
||||||
|
RXs: FS-BS6, FS-BS4
|
||||||
|
|
||||||
|
Gyro is on
|
||||||
|
|
||||||
|
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|ST_Gain|TH_Gain|Priority|Calib|LQI
|
||||||
|
|
||||||
|
### Sub_protocol Gyro_On_Rev - *5*
|
||||||
|
RXs: FS-BS6, FS-BS4
|
||||||
|
|
||||||
|
Gyro is on and reversed
|
||||||
|
|
||||||
|
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|ST_Gain|TH_Gain|Priority|Calib|LQI
|
||||||
|
|
||||||
## FLYSKY AFHDS2A RX - *56*
|
## FLYSKY AFHDS2A RX - *56*
|
||||||
The Flysky AFHDS2A receiver protocol enables master/slave trainning, separate access from 2 different radios to the same model,...
|
The Flysky AFHDS2A receiver protocol enables master/slave trainning, separate access from 2 different radios to the same model,...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user