FrSkyR9: 16 channels

This commit is contained in:
pascallanger 2020-01-24 14:59:26 +01:00
parent 0d5fcb0849
commit e4fd1f4399
6 changed files with 50 additions and 24 deletions

View File

@ -82,10 +82,10 @@ uint16_t initFrSkyR9()
{
set_rx_tx_addr(MProtocol_id_master);
if(sub_protocol == R9_915) // 915MHz
FrSkyR9_freq_map = FrSkyR9_freq_map_915;
else if(sub_protocol == R9_868) // 868MHz
if(sub_protocol & 0x01)
FrSkyR9_freq_map = FrSkyR9_freq_map_868;
else
FrSkyR9_freq_map = FrSkyR9_freq_map_915;
FrSkyR9_step = 1 + (random(0xfefefefe) % 24);
FrSkyR9_freq_map[27] = FrSkyR9_freq_map[FrSkyR9_step];
@ -164,10 +164,9 @@ uint16_t FrSkyR9_callback()
// each channel is 11 bit + 1 bit (msb) that states whether
// it's part of the upper channels (9-16) or lower (1-8) (0 - lower 1 - upper)
const uint8_t packet_offset = 8;
const bool is_upper = false;
uint8_t chan_index = 0;
#define CH_POS 8
static uint8_t chan_start=0;
uint8_t chan_index = chan_start;
for(int i = 0; i < 8; i += 3)
{
@ -175,13 +174,16 @@ uint16_t FrSkyR9_callback()
uint16_t ch1 = FrSkyX_scaleForPXX(chan_index);
uint16_t ch2 = FrSkyX_scaleForPXX(chan_index + 1);
packet[packet_offset + i] = ch1;
packet[packet_offset + i + 1] = (ch1 >> 8) | (ch2 << 4);
packet[packet_offset + i + 2] = (ch2 >> 4);
packet[CH_POS + i] = ch1;
packet[CH_POS + i + 1] = (ch1 >> 8) | (ch2 << 4);
packet[CH_POS + i + 2] = (ch2 >> 4);
chan_index += 2;
}
if((sub_protocol & 0x02) == 0)
chan_start ^= 0x08; // Alternate between lower and upper when 16 channels is used
packet[20] = 0x08; // ????
packet[21] = 0x00; // ????
packet[22] = 0x00; // ????

View File

@ -62,4 +62,4 @@
62,XK,X450,X420
63,XN_DUMP,250K,1M,2M,AUTO
64,FrskyX2,CH_16,CH_8,EU_16,EU_8
65,FrSkyR9,915MHz,868MHz
65,FrSkyR9,915MHz,868MHz,915_8ch,868_8ch

View File

@ -119,7 +119,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_V911S[] = "\x04""Std\0""E119";
const char STR_SUBTYPE_XK[] = "\x04""X450""X420";
const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz";
const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch";
enum
{
@ -328,7 +328,7 @@ const mm_protocol_definition multi_protocols[] = {
{PROTO_XN297DUMP, STR_XN297DUMP, 4, STR_SUBTYPE_XN297DUMP, OPTION_RFCHAN },
#endif
#if defined(FRSKYR9_SX1276_INO)
{PROTO_FRSKY_R9, STR_FRSKYR9, 2, STR_SUBTYPE_FRSKYR9, OPTION_NONE },
{PROTO_FRSKY_R9, STR_FRSKYR9, 4, STR_SUBTYPE_FRSKYR9, OPTION_NONE },
#endif
{0x00, nullptr, 0, nullptr, 0 }
};

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 0
#define VERSION_PATCH_LEVEL 66
#define VERSION_PATCH_LEVEL 67
//******************
// Protocols
@ -329,8 +329,10 @@ enum XN297DUMP
};
enum FRSKY_R9
{
R9_915 = 0,
R9_868 = 1,
R9_915 = 0,
R9_868 = 1,
R9_915_8CH = 2,
R9_868_8CH = 3,
};
#define NONE 0
@ -881,8 +883,10 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p --
V911S_STD 0
V911S_E119 1
sub_protocol==FRSKY_R9
R9_915 0
R9_868 1
R9_915 0
R9_868 1
R9_915_8CH 2
R9_868_8CH 3
Power value => 0x80 0=High/1=Low
Stream[3] = option_protocol;

View File

@ -566,6 +566,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
PROTO_FRSKYR9
R9_915
R9_868
R9_915_8CH
R9_868_8CH
PROTO_FRSKYV
NONE
PROTO_FRSKYX

View File

@ -1344,15 +1344,33 @@ CH1|CH2|CH3|CH4|CH5
## FRSKYR9 - *65*
Extended limits supported
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
---|---|---|---|---|---|---|---
A|E|T|R|CH5|CH6|CH7|CH8
### Sub_protocol R9_915 - *0*
915MHz
915MHz, 16 channels
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
---|---|---|---|---|---|---|---|---|----|----|----|----|----|----|----
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
### Sub_protocol R9_868 - *1*
868MHz
868MHz, 16 channels
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
---|---|---|---|---|---|---|---|---|----|----|----|----|----|----|----
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
### Sub_protocol R9_915_8CH - *2*
915MHz, 8 channels
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
---|---|---|---|---|---|---|---
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
### Sub_protocol R9_868_8CH - *3*
868MHz, 8 channels
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
---|---|---|---|---|---|---|---
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
# OpenLRS module