AFHS2A: 14/17 channels

Switch based on RX number
This commit is contained in:
pascallanger
2026-09-22 11:48:21 -04:00
parent 9691730be6
commit f10fe7bbf0
3 changed files with 25 additions and 13 deletions
+11 -5
View File
@@ -183,16 +183,22 @@ static void AFHDS2A_build_bind_packet()
static void AFHDS2A_build_packet(uint8_t type)
{
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[5], rx_id, 4);
switch(type)
{
case AFHDS2A_PACKET_STICKS:
packet[0] = 0x58;
//16 channels + RX_LQI on channel 17
for(uint8_t ch=0; ch<17; ch++)
for(uint8_t ch=0; ch<num_ch; ch++)
{
if(ch != 16)
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)
{
packet[9 + ch*2] = val;
@@ -200,8 +206,6 @@ static void AFHDS2A_build_packet(uint8_t type)
}
else
{
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;
@@ -215,7 +219,9 @@ static void AFHDS2A_build_packet(uint8_t type)
break;
case AFHDS2A_PACKET_FAILSAFE:
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
#ifdef FAILSAFE_ENABLE
val = Failsafe_data[protocol==PROTO_AFHDS2A?CH_AETR[ch]:ch]; // No remapping for BS receivers
+1 -1
View File
@@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 4
#define VERSION_PATCH_LEVEL 73
#define VERSION_PATCH_LEVEL 74
#define MODE_SERIAL 0
+12 -6
View File
@@ -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.**
### 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. If the RX number is 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
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
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*
RX output will match the Flysky standard AETR.
If the RX number is between 0 and 31, only 14 channels are sent. If the RX number is 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
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
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*
RX output will match the Flysky standard AETR.
If the RX number is between 0 and 31, only 14 channels are sent. If the RX number is 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
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
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*
RXs: FS-BS6, FS-BS4