mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-10 14:08:14 +00:00
Compare commits
8 Commits
5949fca990
...
4e7c1502ff
Author | SHA1 | Date | |
---|---|---|---|
|
4e7c1502ff | ||
|
8ddee12de5 | ||
|
692bcc1fbb | ||
|
0bb345e3fc | ||
|
c193d0b9dd | ||
|
410ce5cc4c | ||
|
cefe69a692 | ||
|
daa4ded390 |
@ -207,3 +207,4 @@
|
|||||||
91,0,Xerall,Tank,0,FlTa,TakLan,Rate,HLess,Photo,Video,TrimR,TrimE,TrimA
|
91,0,Xerall,Tank,0,FlTa,TakLan,Rate,HLess,Photo,Video,TrimR,TrimE,TrimA
|
||||||
92,0,MT99xx2,PA18,0,MODE,FLIP,RTH
|
92,0,MT99xx2,PA18,0,MODE,FLIP,RTH
|
||||||
93,0,Kyosho2,KT-17,0
|
93,0,Kyosho2,KT-17,0
|
||||||
|
94,0,Scorpio
|
||||||
|
@ -100,7 +100,7 @@ static void __attribute__((unused)) FrSkyX_build_packet()
|
|||||||
FrSkyX_channels(7); // Set packet[7]=failsafe, packet[8]=0?? and packet[9..20]=channels data
|
FrSkyX_channels(7); // Set packet[7]=failsafe, packet[8]=0?? and packet[9..20]=channels data
|
||||||
|
|
||||||
//Sequence and send SPort
|
//Sequence and send SPort
|
||||||
FrSkyX_seq_sport(21,packet_length-2); //21=RX|TXseq, 22=bytes count, 23..packet_length-2=data
|
FrSkyX_seq_sport(21,packet_length-(protocol==PROTO_FRSKYX && (FrSkyFormat & 2 )) ? 4 : 2); //21=RX|TXseq, 22=bytes count, 23..packet_length-2=data
|
||||||
|
|
||||||
//CRC
|
//CRC
|
||||||
uint16_t lcrc = FrSkyX_crc(&packet[3], packet_length-4);
|
uint16_t lcrc = FrSkyX_crc(&packet[3], packet_length-4);
|
||||||
|
@ -36,7 +36,7 @@ enum PktState {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t PROGMEM j6pro_bind_sop_code[] = {0x62, 0xdf, 0xc1, 0x49, 0xdf, 0xb1, 0xc0, 0x49};
|
const uint8_t PROGMEM j6pro_bind_sop_code[] = {0x62, 0xdf, 0xc1, 0x49, 0xdf, 0xb1, 0xc0, 0x49};
|
||||||
const uint8_t j6pro_data_code[] = {0x02, 0xf9, 0x93, 0x97, 0x02, 0xfa, 0x5c, 0xe3, 0x01, 0x2b, 0xf1, 0xdb, 0x01, 0x32, 0xbe, 0x6f};
|
//const uint8_t j6pro_data_code[] = {0x02, 0xf9, 0x93, 0x97, 0x02, 0xfa, 0x5c, 0xe3, 0x01, 0x2b, 0xf1, 0xdb, 0x01, 0x32, 0xbe, 0x6f}; // unneeded since this is the default table after a reset
|
||||||
|
|
||||||
static void __attribute__((unused)) j6pro_build_bind_packet()
|
static void __attribute__((unused)) j6pro_build_bind_packet()
|
||||||
{
|
{
|
||||||
@ -84,7 +84,7 @@ static void __attribute__((unused)) j6pro_cyrf_init()
|
|||||||
CYRF_WriteRegister(CYRF_10_FRAMING_CFG, 0xee);
|
CYRF_WriteRegister(CYRF_10_FRAMING_CFG, 0xee);
|
||||||
CYRF_WriteRegister(CYRF_1F_TX_OVERRIDE, 0x00);
|
CYRF_WriteRegister(CYRF_1F_TX_OVERRIDE, 0x00);
|
||||||
CYRF_WriteRegister(CYRF_1E_RX_OVERRIDE, 0x00);
|
CYRF_WriteRegister(CYRF_1E_RX_OVERRIDE, 0x00);
|
||||||
CYRF_ConfigDataCode(j6pro_data_code, 16);
|
//CYRF_ConfigDataCode(j6pro_data_code, 16);
|
||||||
CYRF_WritePreamble(0x333302);
|
CYRF_WritePreamble(0x333302);
|
||||||
|
|
||||||
CYRF_GetMfgData(cyrfmfg_id);
|
CYRF_GetMfgData(cyrfmfg_id);
|
||||||
|
@ -90,3 +90,4 @@
|
|||||||
91,Xerall
|
91,Xerall
|
||||||
92,MT99xx,PA18
|
92,MT99xx,PA18
|
||||||
93,Kyosho2,KT-17
|
93,Kyosho2,KT-17
|
||||||
|
94,Scorpio
|
||||||
|
@ -105,6 +105,7 @@ const char STR_CONFIG[] ="Config";
|
|||||||
const char STR_LOSI[] ="Losi";
|
const char STR_LOSI[] ="Losi";
|
||||||
const char STR_MOULDKG[] ="MouldKg";
|
const char STR_MOULDKG[] ="MouldKg";
|
||||||
const char STR_XERALL[] ="Xerall";
|
const char STR_XERALL[] ="Xerall";
|
||||||
|
const char STR_SCORPIO[] ="Scorpio";
|
||||||
|
|
||||||
const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
|
const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
|
||||||
const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
|
const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
|
||||||
@ -428,6 +429,9 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
#if defined(SCANNER_CC2500_INO)
|
#if defined(SCANNER_CC2500_INO)
|
||||||
{PROTO_SCANNER, STR_SCANNER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CC2500, SCANNER_init, SCANNER_callback },
|
{PROTO_SCANNER, STR_SCANNER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CC2500, SCANNER_init, SCANNER_callback },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(SCORPIO_CYRF6936_INO)
|
||||||
|
{PROTO_SCORPIO, STR_SCORPIO, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, SCORPIO_init, SCORPIO_callback },
|
||||||
|
#endif
|
||||||
#if defined(SHENQI_NRF24L01_INO)
|
#if defined(SHENQI_NRF24L01_INO)
|
||||||
{PROTO_SHENQI, STR_SHENQI, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, SHENQI_init, SHENQI_callback },
|
{PROTO_SHENQI, STR_SHENQI, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, SHENQI_init, SHENQI_callback },
|
||||||
#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 3
|
#define VERSION_REVISION 3
|
||||||
#define VERSION_PATCH_LEVEL 25
|
#define VERSION_PATCH_LEVEL 27
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -121,7 +121,8 @@ enum PROTOCOLS
|
|||||||
PROTO_XERALL = 91, // =>NRF24L01
|
PROTO_XERALL = 91, // =>NRF24L01
|
||||||
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
||||||
PROTO_KYOSHO2 = 93, // =>NRF24L01
|
PROTO_KYOSHO2 = 93, // =>NRF24L01
|
||||||
|
PROTO_SCORPIO = 94, // =>CYRF6936
|
||||||
|
|
||||||
PROTO_NANORF = 126, // =>NRF24L01
|
PROTO_NANORF = 126, // =>NRF24L01
|
||||||
PROTO_TEST = 127, // =>CC2500
|
PROTO_TEST = 127, // =>CC2500
|
||||||
};
|
};
|
||||||
|
@ -1199,9 +1199,9 @@ static void protocol_init()
|
|||||||
modules_reset();
|
modules_reset();
|
||||||
|
|
||||||
uint8_t index=0;
|
uint8_t index=0;
|
||||||
#if defined(FRSKYX_CC2500_INO) && defined(EU_MODULE)
|
//#if defined(FRSKYX_CC2500_INO) && defined(MULTI_EU)
|
||||||
if( ! ( (protocol == PROTO_FRSKYX || protocol == PROTO_FRSKYX2) && sub_protocol < 2 ) )
|
// if( ! ( (protocol == PROTO_FRSKYX || protocol == PROTO_FRSKYX2) && sub_protocol < 2 ) )
|
||||||
#endif
|
//#endif
|
||||||
while(multi_protocols[index].protocol != 0xFF)
|
while(multi_protocols[index].protocol != 0xFF)
|
||||||
{
|
{
|
||||||
if(multi_protocols[index].protocol==protocol)
|
if(multi_protocols[index].protocol==protocol)
|
||||||
|
123
Multiprotocol/Scorpio_cyrf6936.ino
Normal file
123
Multiprotocol/Scorpio_cyrf6936.ino
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(SCORPIO_CYRF6936_INO)
|
||||||
|
|
||||||
|
#include "iface_cyrf6936.h"
|
||||||
|
|
||||||
|
//#define SCORPIO_FORCE_ID
|
||||||
|
|
||||||
|
#define SCORPIO_PACKET_PERIOD 12000
|
||||||
|
#define SCORPIO_PACKETCH_PERIOD 2580
|
||||||
|
#define SCORPIO_BINDPAYLOAD_SIZE 8
|
||||||
|
#define SCORPIO_PAYLOAD_SIZE 10
|
||||||
|
#define SCORPIO_BIND_COUNT 1000
|
||||||
|
#define SCORPIO_RF_NUM_CHANNELS 3
|
||||||
|
|
||||||
|
static uint16_t __attribute__((unused)) SCORPIO_send_packet()
|
||||||
|
{
|
||||||
|
if(IS_BIND_IN_PROGRESS)
|
||||||
|
{
|
||||||
|
packet[0] = 0x88; //FIXME: What is this?
|
||||||
|
packet[1] = 0x55; //FIXME: What is this?
|
||||||
|
packet[2] = crc; //CRC_low for normal packets
|
||||||
|
packet[3] = crc >> 8; //CRC_high for normal packets
|
||||||
|
packet[4] = hopping_frequency[0]; //RF freq 0
|
||||||
|
packet[5] = hopping_frequency[1]; //RF freq 1
|
||||||
|
packet[6] = hopping_frequency[2]; //RF freq 2
|
||||||
|
packet[7] = 0x80; //FIXME: What is this?
|
||||||
|
//SendPacket
|
||||||
|
CYRF_WriteDataPacketLen(packet, SCORPIO_BINDPAYLOAD_SIZE);
|
||||||
|
return SCORPIO_PACKET_PERIOD;
|
||||||
|
}
|
||||||
|
CYRF_ConfigRFChannel(hopping_frequency[hopping_frequency_no]);
|
||||||
|
CYRF_SetPower(0x28); //Update power
|
||||||
|
delayMicroseconds(180); //Frequency settle time
|
||||||
|
packet[0] = hopping_frequency[0];
|
||||||
|
packet[1] = hopping_frequency[1];
|
||||||
|
packet[2] = hopping_frequency[2];
|
||||||
|
packet[3] = convert_channel_8b(THROTTLE);
|
||||||
|
packet[4] = 0xFF - convert_channel_8b(RUDDER);
|
||||||
|
packet[5] = convert_channel_8b(ELEVATOR);
|
||||||
|
packet[6] = convert_channel_8b(AILERON);
|
||||||
|
packet[7] = 0x55; //FIXME: What is this?
|
||||||
|
packet[8] = 0x00; //FIXME: What is this?
|
||||||
|
packet[9] = 0x00; //FIXME: What is this?
|
||||||
|
CYRF_WriteDataPacketLen(packet, SCORPIO_PAYLOAD_SIZE);
|
||||||
|
hopping_frequency_no++;
|
||||||
|
if(hopping_frequency_no >= SCORPIO_RF_NUM_CHANNELS)
|
||||||
|
{
|
||||||
|
hopping_frequency_no = 0;
|
||||||
|
return SCORPIO_PACKET_PERIOD - 2*SCORPIO_PACKETCH_PERIOD;
|
||||||
|
}
|
||||||
|
return SCORPIO_PACKETCH_PERIOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __attribute__((unused)) SCORPIO_RF_init()
|
||||||
|
{
|
||||||
|
/* Initialise CYRF chip */
|
||||||
|
CYRF_WriteRegister(CYRF_32_AUTO_CAL_TIME, 0x3C);
|
||||||
|
CYRF_WriteRegister(CYRF_35_AUTOCAL_OFFSET, 0x14);
|
||||||
|
CYRF_WriteRegister(CYRF_1B_TX_OFFSET_LSB, 0x55);
|
||||||
|
CYRF_WriteRegister(CYRF_1C_TX_OFFSET_MSB, 0x05);
|
||||||
|
CYRF_WriteRegister(CYRF_10_FRAMING_CFG, 0xE8);
|
||||||
|
CYRF_SetPower(0x28);
|
||||||
|
CYRF_SetTxRxMode(TX_EN);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __attribute__((unused)) SCORPIO_TX_init()
|
||||||
|
{
|
||||||
|
calc_fh_channels(3); // select 3 frequencies between 2 and 77. FIXME: Could they be choosen on the spot finding empty frequencies?
|
||||||
|
crc = (rx_tx_addr[0] ^ rx_tx_addr[1] ^ RX_num) + ((rx_tx_addr[2] ^ rx_tx_addr[3] ^ RX_num) << 8);
|
||||||
|
|
||||||
|
#ifdef SCORPIO_FORCE_ID
|
||||||
|
crc = 0x689C;
|
||||||
|
hopping_frequency[0] = 0x26;
|
||||||
|
hopping_frequency[1] = 0x49;
|
||||||
|
hopping_frequency[2] = 0x2E;
|
||||||
|
#endif
|
||||||
|
//debugln("C0:%02X, C1:%02X, C2:%02X, CRC:%04X", hopping_frequency[0], hopping_frequency[1], hopping_frequency[2], crc);
|
||||||
|
CYRF_ConfigRFChannel(hopping_frequency[0]); // Use first RF channel for bind
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t SCORPIO_callback()
|
||||||
|
{
|
||||||
|
#ifdef MULTI_SYNC
|
||||||
|
telemetry_set_input_sync(SCORPIO_PACKET_PERIOD);
|
||||||
|
#endif
|
||||||
|
if(bind_counter)
|
||||||
|
if(--bind_counter==0)
|
||||||
|
{
|
||||||
|
CYRF_ConfigCRCSeed(crc);
|
||||||
|
BIND_DONE;
|
||||||
|
}
|
||||||
|
return SCORPIO_send_packet();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SCORPIO_init()
|
||||||
|
{
|
||||||
|
SCORPIO_RF_init();
|
||||||
|
SCORPIO_TX_init();
|
||||||
|
if(IS_BIND_IN_PROGRESS)
|
||||||
|
{
|
||||||
|
bind_counter = SCORPIO_BIND_COUNT;
|
||||||
|
CYRF_ConfigCRCSeed(0x0001);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bind_counter = 1;
|
||||||
|
hopping_frequency_no = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -269,6 +269,7 @@
|
|||||||
#undef LOSI_CYRF6936_INO
|
#undef LOSI_CYRF6936_INO
|
||||||
#undef MLINK_CYRF6936_INO
|
#undef MLINK_CYRF6936_INO
|
||||||
#undef TRAXXAS_CYRF6936_INO
|
#undef TRAXXAS_CYRF6936_INO
|
||||||
|
#undef SCORPIO_CYRF6936_INO
|
||||||
#undef WFLY_CYRF6936_INO
|
#undef WFLY_CYRF6936_INO
|
||||||
#undef WK2x01_CYRF6936_INO
|
#undef WK2x01_CYRF6936_INO
|
||||||
#endif
|
#endif
|
||||||
@ -358,7 +359,7 @@
|
|||||||
#if not defined(STM32_BOARD)
|
#if not defined(STM32_BOARD)
|
||||||
#undef SX1276_INSTALLED
|
#undef SX1276_INSTALLED
|
||||||
#endif
|
#endif
|
||||||
#ifndef SX1276_INSTALLED || defined MULTI_EU
|
#if not defined(SX1276_INSTALLED) || defined MULTI_EU
|
||||||
#undef FRSKYR9_SX1276_INO
|
#undef FRSKYR9_SX1276_INO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -191,8 +191,9 @@
|
|||||||
#define E01X_CYRF6936_INO
|
#define E01X_CYRF6936_INO
|
||||||
#define E129_CYRF6936_INO
|
#define E129_CYRF6936_INO
|
||||||
#define J6PRO_CYRF6936_INO
|
#define J6PRO_CYRF6936_INO
|
||||||
#define LOSI_CYRF6936_INO
|
//#define LOSI_CYRF6936_INO
|
||||||
#define MLINK_CYRF6936_INO
|
#define MLINK_CYRF6936_INO
|
||||||
|
#define SCORPIO_CYRF6936_INO
|
||||||
#define TRAXXAS_CYRF6936_INO
|
#define TRAXXAS_CYRF6936_INO
|
||||||
#define WFLY_CYRF6936_INO
|
#define WFLY_CYRF6936_INO
|
||||||
#define WK2x01_CYRF6936_INO
|
#define WK2x01_CYRF6936_INO
|
||||||
@ -667,6 +668,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_FRSKY_RX
|
PROTO_FRSKY_RX
|
||||||
FRSKY_RX
|
FRSKY_RX
|
||||||
FRSKY_CLONE
|
FRSKY_CLONE
|
||||||
|
PROTO_FUTABA
|
||||||
|
NONE
|
||||||
PROTO_FX
|
PROTO_FX
|
||||||
FX816
|
FX816
|
||||||
FX620
|
FX620
|
||||||
@ -789,7 +792,7 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
RLINK_DUMBORC
|
RLINK_DUMBORC
|
||||||
PROTO_SCANNER
|
PROTO_SCANNER
|
||||||
NONE
|
NONE
|
||||||
PROTO_FUTABA
|
PROTO_SCORPIO
|
||||||
NONE
|
NONE
|
||||||
PROTO_SHENQI
|
PROTO_SHENQI
|
||||||
NONE
|
NONE
|
||||||
|
@ -134,6 +134,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[Realacc](Protocols_Details.md#Realacc---76)|76|R11||||||||NRF24L01|
|
[Realacc](Protocols_Details.md#Realacc---76)|76|R11||||||||NRF24L01|
|
||||||
[Redpine](Protocols_Details.md#Redpine---50)|50|FAST|SLOW|||||||NRF24L01|XN297
|
[Redpine](Protocols_Details.md#Redpine---50)|50|FAST|SLOW|||||||NRF24L01|XN297
|
||||||
[Scanner](Protocols_Details.md#Scanner---54)|54|||||||||CC2500|
|
[Scanner](Protocols_Details.md#Scanner---54)|54|||||||||CC2500|
|
||||||
|
[Scorpio](Protocols_Details.md#Scorpio---94)|94|||||||||CYRF6936|
|
||||||
[Shenqi](Protocols_Details.md#Shenqi---19)|19|Shenqi||||||||NRF24L01|LT8900
|
[Shenqi](Protocols_Details.md#Shenqi---19)|19|Shenqi||||||||NRF24L01|LT8900
|
||||||
[Skyartec](Protocols_Details.md#Skyartec---68)|68|||||||||CC2500|CC2500
|
[Skyartec](Protocols_Details.md#Skyartec---68)|68|||||||||CC2500|CC2500
|
||||||
[SLT](Protocols_Details.md#SLT---11)|11|SLT_V1|SLT_V2|Q100|Q200|MR100||||NRF24L01|CC2500
|
[SLT](Protocols_Details.md#SLT---11)|11|SLT_V1|SLT_V2|Q100|Q200|MR100||||NRF24L01|CC2500
|
||||||
@ -651,6 +652,13 @@ 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
|
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14|CH15|CH16
|
||||||
|
|
||||||
|
## Scorpio - *94*
|
||||||
|
Model Scorpio Falco 300, TX:Nine Eagles 4CH-TX, RX:Nine Eagles 4CH-RX
|
||||||
|
|
||||||
|
CH1|CH2|CH3|CH4
|
||||||
|
---|---|---|---
|
||||||
|
A|E|T|R
|
||||||
|
|
||||||
## Traxxas - *43*
|
## Traxxas - *43*
|
||||||
Receiver 6519
|
Receiver 6519
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user