mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-09 23:18:14 +00:00
RadioLink Surface protocol: initial commit
This commit is contained in:
parent
69c95ca153
commit
e1d4f9a270
@ -136,6 +136,7 @@
|
|||||||
72,0,Q90C,Std,0,FMode,VTX+
|
72,0,Q90C,Std,0,FMode,VTX+
|
||||||
50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16
|
50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16
|
||||||
50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16
|
50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16
|
||||||
|
74,0,RadioLink,Surface,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8
|
||||||
21,0,SFHSS,Std,0,CH5,CH6,CH7,CH8
|
21,0,SFHSS,Std,0,CH5,CH6,CH7,CH8
|
||||||
19,0,Shenqi,Cycle,1
|
19,0,Shenqi,Cycle,1
|
||||||
68,0,Skyartec,Std,0,CH5,CH6,CH7
|
68,0,Skyartec,Std,0,CH5,CH6,CH7
|
||||||
|
@ -278,6 +278,15 @@ local function Multi_Init()
|
|||||||
ch_order = math.floor(ch_order/4)
|
ch_order = math.floor(ch_order/4)
|
||||||
channel_names[bitand(ch_order,3)+1] = stick_names[1]
|
channel_names[bitand(ch_order,3)+1] = stick_names[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--Exceptions on first 4 channels...
|
||||||
|
if ( protocol == 74 and sub_protocol == 0 ) then -- RadioLink Surface
|
||||||
|
channel_names[1] = "ST"
|
||||||
|
channel_names[2] = "THR"
|
||||||
|
channel_names[3] = "CH3"
|
||||||
|
channel_names[4] = "CH4"
|
||||||
|
end
|
||||||
|
|
||||||
--Check MultiChan.txt
|
--Check MultiChan.txt
|
||||||
local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r")
|
local f = io.open("/SCRIPTS/TOOLS/MultiChan.txt", "r")
|
||||||
if f == nil then return end
|
if f == nil then return end
|
||||||
|
@ -71,3 +71,4 @@
|
|||||||
71,JJRC345
|
71,JJRC345
|
||||||
72,Q90C
|
72,Q90C
|
||||||
73,Kyosho
|
73,Kyosho
|
||||||
|
74,RadioLink,Surface
|
@ -87,6 +87,7 @@ const char STR_FRSKYR9[] ="FrSkyR9";
|
|||||||
const char STR_PROPEL[] ="Propel";
|
const char STR_PROPEL[] ="Propel";
|
||||||
const char STR_SKYARTEC[] ="Skyartc";
|
const char STR_SKYARTEC[] ="Skyartc";
|
||||||
const char STR_KYOSHO[] ="Kyosho";
|
const char STR_KYOSHO[] ="Kyosho";
|
||||||
|
const char STR_RLINK[] ="RadLink";
|
||||||
const char STR_TEST[] ="Test";
|
const char STR_TEST[] ="Test";
|
||||||
const char STR_FAKE[] ="Fake";
|
const char STR_FAKE[] ="Fake";
|
||||||
|
|
||||||
@ -140,6 +141,7 @@ const char STR_SUBTYPE_WFLY[] = "\x06""WFR0xS";
|
|||||||
const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync";
|
const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync";
|
||||||
const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite";
|
const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite";
|
||||||
const char STR_SUBTYPE_V761[] = "\x03""3CH""4CH";
|
const char STR_SUBTYPE_V761[] = "\x03""3CH""4CH";
|
||||||
|
const char STR_SUBTYPE_RLINK[] = "\x07""Surface";
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -324,6 +326,9 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
#if defined(REDPINE_CC2500_INO)
|
#if defined(REDPINE_CC2500_INO)
|
||||||
{PROTO_REDPINE, STR_REDPINE, 2, STR_SUBTYPE_REDPINE, OPTION_RFTUNE },
|
{PROTO_REDPINE, STR_REDPINE, 2, STR_SUBTYPE_REDPINE, OPTION_RFTUNE },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RLINK_CC2500_INO)
|
||||||
|
{PROTO_RLINK, STR_RLINK, 1, STR_SUBTYPE_RLINK, OPTION_RFTUNE },
|
||||||
|
#endif
|
||||||
#if defined(SCANNER_CC2500_INO)
|
#if defined(SCANNER_CC2500_INO)
|
||||||
// {PROTO_SCANNER, STR_SCANNER, 0, NO_SUBTYPE, OPTION_NONE },
|
// {PROTO_SCANNER, STR_SCANNER, 0, NO_SUBTYPE, OPTION_NONE },
|
||||||
#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 1
|
#define VERSION_REVISION 1
|
||||||
#define VERSION_PATCH_LEVEL 42
|
#define VERSION_PATCH_LEVEL 43
|
||||||
|
|
||||||
//******************
|
//******************
|
||||||
// Protocols
|
// Protocols
|
||||||
@ -100,6 +100,7 @@ enum PROTOCOLS
|
|||||||
PROTO_JJRC345 = 71, // =>NRF24L01
|
PROTO_JJRC345 = 71, // =>NRF24L01
|
||||||
PROTO_Q90C = 72, // =>NRF24L01 or CC2500
|
PROTO_Q90C = 72, // =>NRF24L01 or CC2500
|
||||||
PROTO_KYOSHO = 73, // =>A7105
|
PROTO_KYOSHO = 73, // =>A7105
|
||||||
|
PROTO_RLINK = 74, // =>CC2500
|
||||||
|
|
||||||
PROTO_FAKE = 126, // =>CC2500+NRF24L01
|
PROTO_FAKE = 126, // =>CC2500+NRF24L01
|
||||||
PROTO_TEST = 127, // =>CC2500
|
PROTO_TEST = 127, // =>CC2500
|
||||||
@ -801,6 +802,7 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p --
|
|||||||
JJRC345 71
|
JJRC345 71
|
||||||
Q90C 72
|
Q90C 72
|
||||||
KYOSHO 73
|
KYOSHO 73
|
||||||
|
RLINK 74
|
||||||
BindBit=> 0x80 1=Bind/0=No
|
BindBit=> 0x80 1=Bind/0=No
|
||||||
AutoBindBit=> 0x40 1=Yes /0=No
|
AutoBindBit=> 0x40 1=Yes /0=No
|
||||||
RangeCheck=> 0x20 1=Yes /0=No
|
RangeCheck=> 0x20 1=Yes /0=No
|
||||||
|
@ -768,7 +768,7 @@ bool Update_All()
|
|||||||
update_led_status();
|
update_led_status();
|
||||||
#if defined(TELEMETRY)
|
#if defined(TELEMETRY)
|
||||||
#if ( !( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) )
|
#if ( !( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) )
|
||||||
if((protocol == PROTO_BAYANG_RX) || (protocol == PROTO_AFHDS2A_RX) || (protocol == PROTO_FRSKY_RX) || (protocol == PROTO_SCANNER) || (protocol==PROTO_FRSKYD) || (protocol==PROTO_BAYANG) || (protocol==PROTO_NCC1701) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2) || (protocol==PROTO_DSM) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_HOTT) || (protocol==PROTO_PROPEL) || (protocol==PROTO_DEVO) || (protocol==PROTO_DSM_RX) || (protocol==PROTO_FRSKY_R9))
|
if((protocol == PROTO_BAYANG_RX) || (protocol == PROTO_AFHDS2A_RX) || (protocol == PROTO_FRSKY_RX) || (protocol == PROTO_SCANNER) || (protocol==PROTO_FRSKYD) || (protocol==PROTO_BAYANG) || (protocol==PROTO_NCC1701) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2) || (protocol==PROTO_DSM) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_HOTT) || (protocol==PROTO_PROPEL) || (protocol==PROTO_DEVO) || (protocol==PROTO_DSM_RX) || (protocol==PROTO_FRSKY_R9) || (protocol==PROTO_RLINK))
|
||||||
#endif
|
#endif
|
||||||
if(IS_DISABLE_TELEM_off)
|
if(IS_DISABLE_TELEM_off)
|
||||||
TelemetryUpdate();
|
TelemetryUpdate();
|
||||||
@ -1254,6 +1254,14 @@ static void protocol_init()
|
|||||||
remote_callback = ESKY150V2_callback;
|
remote_callback = ESKY150V2_callback;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RLINK_CC2500_INO)
|
||||||
|
case PROTO_RLINK:
|
||||||
|
PE1_off;
|
||||||
|
PE2_on; //antenna RF2
|
||||||
|
next_callback = initRLINK();
|
||||||
|
remote_callback = RLINK_callback;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef CYRF6936_INSTALLED
|
#ifdef CYRF6936_INSTALLED
|
||||||
#if defined(DSM_CYRF6936_INO)
|
#if defined(DSM_CYRF6936_INO)
|
||||||
@ -2191,7 +2199,7 @@ void pollBoot()
|
|||||||
#if defined(TELEMETRY)
|
#if defined(TELEMETRY)
|
||||||
void PPM_Telemetry_serial_init()
|
void PPM_Telemetry_serial_init()
|
||||||
{
|
{
|
||||||
if( (protocol==PROTO_FRSKYD) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_BAYANG)|| (protocol==PROTO_NCC1701) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_PROPEL)
|
if( (protocol==PROTO_FRSKYD) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_BAYANG)|| (protocol==PROTO_NCC1701) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_PROPEL) || (protocol==PROTO_RLINK)
|
||||||
#ifdef TELEMETRY_FRSKYX_TO_FRSKYD
|
#ifdef TELEMETRY_FRSKYX_TO_FRSKYD
|
||||||
|| (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2)
|
|| (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2)
|
||||||
#endif
|
#endif
|
||||||
|
209
Multiprotocol/RadioLink_cc2500.ino
Normal file
209
Multiprotocol/RadioLink_cc2500.ino
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
/*
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
// Radiolink surface protocol. TXs: RC4GS,RC6GS. Compatible RXs:R7FG(Std),R6FG,R6F,R8EF,R8FM,R8F,R4FGM
|
||||||
|
|
||||||
|
#if defined(RLINK_CC2500_INO)
|
||||||
|
|
||||||
|
#include "iface_cc2500.h"
|
||||||
|
|
||||||
|
#define RLINK_FORCE_ID
|
||||||
|
|
||||||
|
#define RLINK_TX_PACKET_LEN 33
|
||||||
|
#define RLINK_RX_PACKET_LEN 15
|
||||||
|
#define RLINK_TX_ID_LEN 4
|
||||||
|
|
||||||
|
enum {
|
||||||
|
RLINK_DATA = 0x00,
|
||||||
|
RLINK_RX1 = 0x01,
|
||||||
|
RLINK_RX2 = 0x02,
|
||||||
|
};
|
||||||
|
|
||||||
|
const PROGMEM uint8_t RLINK_init_values[] = {
|
||||||
|
/* 00 */ 0x5B, 0x06, 0x5C, 0x07, 0xAB, 0xCD, 0x40, 0x04,
|
||||||
|
/* 08 */ 0x45, 0x00, 0x00, 0x06, 0x00, 0x5C, 0x62, 0x76,
|
||||||
|
/* 10 */ 0x7A, 0x7F, 0x13, 0x23, 0xF8, 0x44, 0x07, 0x30,
|
||||||
|
/* 18 */ 0x18, 0x16, 0x6C, 0x43, 0x40, 0x91, 0x87, 0x6B,
|
||||||
|
/* 20 */ 0xF8, 0x56, 0x10, 0xA9, 0x0A, 0x00, 0x11
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __attribute__((unused)) RLINK_init()
|
||||||
|
{
|
||||||
|
rf_ch_num=(random(0xfefefefe)&0x0F)+1; // 0x01..0x10
|
||||||
|
memcpy(hopping_frequency,"\x12\xBA\x66\x72\x1E\x42\x06\x4E\x36\xAE\x8A\xA2\x2A\x7E\x96\x5A",16);
|
||||||
|
hopping_frequency[rf_ch_num]=0xC6;
|
||||||
|
#ifdef RLINK_FORCE_ID
|
||||||
|
memcpy(rx_tx_addr,"\x3A\x99\x22\x3A",RLINK_TX_ID_LEN);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __attribute__((unused)) RLINK_rf_init()
|
||||||
|
{
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < 39; ++i)
|
||||||
|
CC2500_WriteReg(i, pgm_read_byte_near(&RLINK_init_values[i]));
|
||||||
|
|
||||||
|
prev_option = option;
|
||||||
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
CC2500_SetPower();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __attribute__((unused)) RLINK_tune_freq()
|
||||||
|
{
|
||||||
|
if ( prev_option != option )
|
||||||
|
{
|
||||||
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
prev_option = option ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __attribute__((unused)) RLINK_TIMING_RFSEND_packet()
|
||||||
|
{
|
||||||
|
uint32_t pseudo=0, bits = 0;
|
||||||
|
uint8_t bitsavailable = 0;
|
||||||
|
uint8_t idx = 6;
|
||||||
|
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
|
||||||
|
// packet length
|
||||||
|
packet[0] = RLINK_TX_PACKET_LEN;
|
||||||
|
// header
|
||||||
|
packet[1] = packet_count>3?0x03:0x01; // packet type: 0x01 normal, 0x03 request telemetry
|
||||||
|
//if(RX_num) packet[1] |= ((RX_num+2)<<4)+4; // RX number limited to 10 values, 0 is a wildcard
|
||||||
|
|
||||||
|
// ID
|
||||||
|
memcpy(&packet[2],rx_tx_addr,RLINK_TX_ID_LEN);
|
||||||
|
|
||||||
|
// pack 16 channels on 11 bits values between 170 and 1876, 1023 middle. The last 8 channels are failsafe values associated to the first 8 values.
|
||||||
|
for (uint8_t i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
uint32_t val = convert_channel_16b_nolimit(i,170,1876); // allow extended limits
|
||||||
|
if (val & 0x8000)
|
||||||
|
val = 0;
|
||||||
|
else if (val > 2047)
|
||||||
|
val=2047;
|
||||||
|
|
||||||
|
bits |= val << bitsavailable;
|
||||||
|
bitsavailable += 11;
|
||||||
|
while (bitsavailable >= 8) {
|
||||||
|
packet[idx++] = bits & 0xff;
|
||||||
|
bits >>= 8;
|
||||||
|
bitsavailable -= 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// hop
|
||||||
|
pseudo=((pseudo * 0xAA) + 3) % 0x7673; // calc next pseudo random value
|
||||||
|
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[pseudo &0x0F]);
|
||||||
|
packet[28]= pseudo;
|
||||||
|
packet[29]= pseudo >> 8;
|
||||||
|
packet[30]= 0x00; // unknown
|
||||||
|
packet[31]= 0x00; // unknown
|
||||||
|
packet[32]= rf_ch_num; // value equal to 0xC6 in the RF table
|
||||||
|
|
||||||
|
// check
|
||||||
|
uint8_t sum=0;
|
||||||
|
for(uint8_t i=0;i<33;i++)
|
||||||
|
sum+=packet[i];
|
||||||
|
packet[33]=sum;
|
||||||
|
|
||||||
|
// send packet
|
||||||
|
CC2500_WriteData(packet, RLINK_TX_PACKET_LEN+1);
|
||||||
|
|
||||||
|
// packets type
|
||||||
|
packet_count++;
|
||||||
|
if(packet_count>6) packet_count=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RLINK_TIMING_PROTO 20000
|
||||||
|
#define RLINK_TIMING_RFSEND 10223
|
||||||
|
#define RLINK_TIMING_CHECK 2000
|
||||||
|
uint16_t RLINK_callback()
|
||||||
|
{
|
||||||
|
switch(phase)
|
||||||
|
{
|
||||||
|
case RLINK_DATA:
|
||||||
|
#ifdef MULTI_SYNC
|
||||||
|
telemetry_set_input_sync(RLINK_TIMING_PROTO);
|
||||||
|
#endif
|
||||||
|
RLINK_tune_freq();
|
||||||
|
RLINK_TIMING_RFSEND_packet();
|
||||||
|
#if not defined RLINK_HUB_TELEMETRY
|
||||||
|
return RLINK_TIMING_PROTO;
|
||||||
|
#else
|
||||||
|
if(packet[1]==0x01)
|
||||||
|
return RLINK_TIMING_PROTO;
|
||||||
|
phase++; // RX1
|
||||||
|
return RLINK_TIMING_RFSEND;
|
||||||
|
case RLINK_RX1:
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
CC2500_Strobe(CC2500_SFRX);
|
||||||
|
CC2500_SetTxRxMode(RX_EN);
|
||||||
|
CC2500_Strobe(CC2500_SRX);
|
||||||
|
phase++; // RX2
|
||||||
|
return RLINK_TIMING_PROTO-RLINK_TIMING_RFSEND-RLINK_TIMING_CHECK;
|
||||||
|
case RLINK_RX2:
|
||||||
|
len = CC2500_ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F;
|
||||||
|
if (len == RLINK_RX_PACKET_LEN + 1 + 2) //Telemetry frame is 15 bytes + 1 byte for length + 2 bytes for RSSI&LQI&CRC
|
||||||
|
{
|
||||||
|
//debug("Telem:");
|
||||||
|
CC2500_ReadData(packet_in, len);
|
||||||
|
if(packet_in[0]==RLINK_RX_PACKET_LEN && (packet_in[len-1] & 0x80) && memcmp(&packet[2],rx_tx_addr,RLINK_TX_ID_LEN)==0 && packet_in[6]==0x03)
|
||||||
|
{//Correct telemetry received: length, CRC, ID and type
|
||||||
|
//Debug
|
||||||
|
//for(uint8_t i=0;i<len;i++)
|
||||||
|
// debug(" %02X",packet_in[i]);
|
||||||
|
TX_RSSI = packet_in[len-2];
|
||||||
|
if(TX_RSSI >=128)
|
||||||
|
TX_RSSI -= 128;
|
||||||
|
else
|
||||||
|
TX_RSSI += 128;
|
||||||
|
RX_RSSI=packet_in[7]; //Should be packet_in[7]-256 but since it's an uint8_t...
|
||||||
|
v_lipo1=packet_in[8];
|
||||||
|
v_lipo2=packet_in[9];
|
||||||
|
telemetry_link=1; //Send telemetry out
|
||||||
|
pps_counter++;
|
||||||
|
packet_count=0;
|
||||||
|
}
|
||||||
|
//debugln("");
|
||||||
|
}
|
||||||
|
if (millis() - pps_timer >= 2000)
|
||||||
|
{//1 packet every 20ms
|
||||||
|
pps_timer = millis();
|
||||||
|
debugln("%d pps", pps_counter);
|
||||||
|
TX_LQI = pps_counter; //Max=100%
|
||||||
|
pps_counter = 0;
|
||||||
|
}
|
||||||
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
phase=RLINK_DATA; // DATA
|
||||||
|
return RLINK_TIMING_CHECK;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t initRLINK()
|
||||||
|
{
|
||||||
|
BIND_DONE; // Not a TX bind protocol
|
||||||
|
RLINK_init();
|
||||||
|
RLINK_rf_init();
|
||||||
|
packet_count = 0;
|
||||||
|
phase = RLINK_DATA;
|
||||||
|
return 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -531,7 +531,7 @@ void frsky_link_frame()
|
|||||||
telemetry_link |= 2 ; // Send hub if available
|
telemetry_link |= 2 ; // Send hub if available
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{//PROTO_HUBSAN, PROTO_AFHDS2A, PROTO_BAYANG, PROTO_NCC1701, PROTO_CABELL, PROTO_HITEC, PROTO_BUGS, PROTO_BUGSMINI, PROTO_FRSKYX, PROTO_FRSKYX2, PROTO_PROPEL, PROTO_DEVO
|
{//PROTO_HUBSAN, PROTO_AFHDS2A, PROTO_BAYANG, PROTO_NCC1701, PROTO_CABELL, PROTO_HITEC, PROTO_BUGS, PROTO_BUGSMINI, PROTO_FRSKYX, PROTO_FRSKYX2, PROTO_PROPEL, PROTO_DEVO, PROTO_RLINK
|
||||||
frame[1] = v_lipo1;
|
frame[1] = v_lipo1;
|
||||||
frame[2] = v_lipo2;
|
frame[2] = v_lipo2;
|
||||||
frame[3] = RX_RSSI;
|
frame[3] = RX_RSSI;
|
||||||
@ -952,7 +952,7 @@ void TelemetryUpdate()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( telemetry_link & 1 )
|
if( telemetry_link & 1 )
|
||||||
{ // FrSkyD + Hubsan + AFHDS2A + Bayang + Cabell + Hitec + Bugs + BugsMini + NCC1701 + PROPEL
|
{ // FrSkyD + Hubsan + AFHDS2A + Bayang + Cabell + Hitec + Bugs + BugsMini + NCC1701 + PROPEL + RLINK
|
||||||
// FrSkyX telemetry if in PPM
|
// FrSkyX telemetry if in PPM
|
||||||
frsky_link_frame();
|
frsky_link_frame();
|
||||||
return;
|
return;
|
||||||
|
@ -243,6 +243,7 @@
|
|||||||
#undef HITEC_CC2500_INO
|
#undef HITEC_CC2500_INO
|
||||||
#undef HOTT_CC2500_INO
|
#undef HOTT_CC2500_INO
|
||||||
#undef REDPINE_CC2500_INO
|
#undef REDPINE_CC2500_INO
|
||||||
|
#undef RLINK_CC2500_INO
|
||||||
#undef SCANNER_CC2500_INO
|
#undef SCANNER_CC2500_INO
|
||||||
#undef SFHSS_CC2500_INO
|
#undef SFHSS_CC2500_INO
|
||||||
#undef SKYARTEC_CC2500_INO
|
#undef SKYARTEC_CC2500_INO
|
||||||
@ -332,6 +333,7 @@
|
|||||||
#undef BAYANG_RX_NRF24L01_INO
|
#undef BAYANG_RX_NRF24L01_INO
|
||||||
#undef DEVO_HUB_TELEMETRY
|
#undef DEVO_HUB_TELEMETRY
|
||||||
#undef PROPEL_HUB_TELEMETRY
|
#undef PROPEL_HUB_TELEMETRY
|
||||||
|
#undef RLINK_HUB_TELEMETRY
|
||||||
#undef DSM_RX_CYRF6936_INO
|
#undef DSM_RX_CYRF6936_INO
|
||||||
#else
|
#else
|
||||||
#if defined(MULTI_TELEMETRY) && defined(MULTI_STATUS)
|
#if defined(MULTI_TELEMETRY) && defined(MULTI_STATUS)
|
||||||
@ -371,6 +373,9 @@
|
|||||||
#if not defined(CABELL_NRF24L01_INO)
|
#if not defined(CABELL_NRF24L01_INO)
|
||||||
#undef CABELL_HUB_TELEMETRY
|
#undef CABELL_HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
|
#if not defined(RLINK_CC2500_INO)
|
||||||
|
#undef RLINK_HUB_TELEMETRY
|
||||||
|
#endif
|
||||||
#if not defined(HUBSAN_A7105_INO)
|
#if not defined(HUBSAN_A7105_INO)
|
||||||
#undef HUBSAN_HUB_TELEMETRY
|
#undef HUBSAN_HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
@ -398,7 +403,7 @@
|
|||||||
#if not defined(HOTT_CC2500_INO)
|
#if not defined(HOTT_CC2500_INO)
|
||||||
#undef HOTT_FW_TELEMETRY
|
#undef HOTT_FW_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(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)
|
#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)
|
||||||
#undef TELEMETRY
|
#undef TELEMETRY
|
||||||
#undef INVERT_TELEMETRY
|
#undef INVERT_TELEMETRY
|
||||||
#undef MULTI_TELEMETRY
|
#undef MULTI_TELEMETRY
|
||||||
|
@ -197,6 +197,7 @@
|
|||||||
#define SFHSS_CC2500_INO
|
#define SFHSS_CC2500_INO
|
||||||
#define SKYARTEC_CC2500_INO
|
#define SKYARTEC_CC2500_INO
|
||||||
#define REDPINE_CC2500_INO
|
#define REDPINE_CC2500_INO
|
||||||
|
#define RLINK_CC2500_INO
|
||||||
|
|
||||||
//The protocols below need a NRF24L01 to be installed
|
//The protocols below need a NRF24L01 to be installed
|
||||||
#define ASSAN_NRF24L01_INO
|
#define ASSAN_NRF24L01_INO
|
||||||
@ -313,6 +314,7 @@
|
|||||||
#define NCC1701_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define NCC1701_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define PROPEL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define PROPEL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define CABELL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define CABELL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
|
#define RLINK_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define HITEC_HUB_TELEMETRY // Use FrSkyD Hub format to send basic telemetry to the radios which can decode it like er9x, erskyTX and OpenTX
|
#define HITEC_HUB_TELEMETRY // Use FrSkyD Hub format to send basic telemetry to the radios which can decode it like er9x, erskyTX and OpenTX
|
||||||
#define HITEC_FW_TELEMETRY // Forward received telemetry packets to be decoded by erskyTX and OpenTX
|
#define HITEC_FW_TELEMETRY // Forward received telemetry packets to be decoded by erskyTX and OpenTX
|
||||||
#define SCANNER_TELEMETRY // Forward spectrum scanner data to TX
|
#define SCANNER_TELEMETRY // Forward spectrum scanner data to TX
|
||||||
@ -699,6 +701,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_REDPINE
|
PROTO_REDPINE
|
||||||
RED_FAST
|
RED_FAST
|
||||||
RED_SLOW
|
RED_SLOW
|
||||||
|
PROTO_RLINK
|
||||||
|
NONE
|
||||||
PROTO_SCANNER
|
PROTO_SCANNER
|
||||||
NONE
|
NONE
|
||||||
PROTO_SFHSS
|
PROTO_SFHSS
|
||||||
|
@ -117,6 +117,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[Q2X2](Protocols_Details.md#Q2X2---29)|29|Q222|Q242|Q282||||||NRF24L01|
|
[Q2X2](Protocols_Details.md#Q2X2---29)|29|Q222|Q242|Q282||||||NRF24L01|
|
||||||
[Q303](Protocols_Details.md#Q303---31)|31|Q303|CX35|CX10D|CX10WD|||||NRF24L01|XN297
|
[Q303](Protocols_Details.md#Q303---31)|31|Q303|CX35|CX10D|CX10WD|||||NRF24L01|XN297
|
||||||
[Q90C](Protocols_Details.md#Q90C---72)|72|Q90C*||||||||NRF24L01|XN297
|
[Q90C](Protocols_Details.md#Q90C---72)|72|Q90C*||||||||NRF24L01|XN297
|
||||||
|
[RadioLink](Protocols_Details.md#RadioLink---74)|74|Surface||||||||CC2500|
|
||||||
[Redpine](Protocols_Details.md#Redpine---50)|50|FAST|SLOW|||||||NRF24L01|
|
[Redpine](Protocols_Details.md#Redpine---50)|50|FAST|SLOW|||||||NRF24L01|
|
||||||
[Scanner](Protocols_Details.md#Scanner---54)|54|||||||||CC2500|
|
[Scanner](Protocols_Details.md#Scanner---54)|54|||||||||CC2500|
|
||||||
[SFHSS](Protocols_Details.md#SFHSS---21)|21|SFHSS||||||||CC2500|
|
[SFHSS](Protocols_Details.md#SFHSS---21)|21|SFHSS||||||||CC2500|
|
||||||
@ -545,6 +546,24 @@ You should definitively upgrade your receivers/sensors to the latest firmware ve
|
|||||||
## Scanner - *54*
|
## Scanner - *54*
|
||||||
2.4GHz scanner accessible using the OpenTX 2.3 Spectrum Analyser tool.
|
2.4GHz scanner accessible using the OpenTX 2.3 Spectrum Analyser tool.
|
||||||
|
|
||||||
|
## RadioLink - *74*
|
||||||
|
|
||||||
|
Extended limits
|
||||||
|
|
||||||
|
Option for this protocol corresponds to fine frequency tuning. This value is different for each Module and **must** be accurate otherwise the link will not be stable.
|
||||||
|
Check the [Frequency Tuning page](/docs/Frequency_Tuning.md) to determine it.
|
||||||
|
|
||||||
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
|
||||||
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---
|
||||||
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|FS_CH1|FS_CH2|FS_CH3|FS_CH4|FS_CH5|FS_CH6|FS_CH7|FS_CH8
|
||||||
|
|
||||||
|
FS=FailSafe
|
||||||
|
|
||||||
|
### Sub_protocol Surface - *0*
|
||||||
|
Surface protocol. TXs: RC4GS,RC6GS. Compatible RXs:R7FG(Std),R6FG,R6F,R8EF,R8FM,R8F,R4FGM
|
||||||
|
|
||||||
|
CH1=Steering, CH2=Throttle, CH8=Gyro gain
|
||||||
|
|
||||||
## SFHSS - *21*
|
## SFHSS - *21*
|
||||||
Models: Futaba RXs and XK models.
|
Models: Futaba RXs and XK models.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user