mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-07-05 13:07:52 +00:00
Merge branch 'pascallanger:master' into master
This commit is contained in:
commit
59ead358bc
30
.github/workflows/main.yml
vendored
30
.github/workflows/main.yml
vendored
@ -39,16 +39,26 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
board: [
|
||||
"multi4in1:avr:multiatmega328p:bootloader=none",
|
||||
"multi4in1:avr:multiatmega328p:bootloader=optiboot",
|
||||
"multi4in1:avr:multixmega32d4",
|
||||
"multi4in1:STM32F1:multi5in1t18int",
|
||||
"multi4in1:STM32F1:multistm32f103cb:debug_option=none",
|
||||
"multi4in1:STM32F1:multistm32f103cb:debug_option=native",
|
||||
"multi4in1:STM32F1:multistm32f103cb:debug_option=ftdi",
|
||||
"multi4in1:STM32F1:multistm32f103c8:debug_option=none"
|
||||
]
|
||||
include:
|
||||
- board: "multi4in1:avr:multiatmega328p:bootloader=none"
|
||||
name: "ATmega328p"
|
||||
- board: "multi4in1:avr:multiatmega328p:bootloader=optiboot"
|
||||
name: "ATmega328p (Optiboot)"
|
||||
- board: "multi4in1:avr:multixmega32d4"
|
||||
name: "OrangeRX"
|
||||
- board: "multi4in1:STM32F1:multistm32f103c8:debug_option=none"
|
||||
name: "STM32F103 (64KB)"
|
||||
- board: "multi4in1:STM32F1:multistm32f103cb:debug_option=none"
|
||||
name: "STM32F103 (128KB)"
|
||||
- board: "multi4in1:STM32F1:multistm32f103cb:debug_option=native"
|
||||
name: "STM32F103 (128KB, USB Debugging)"
|
||||
- board: "multi4in1:STM32F1:multistm32f103cb:debug_option=ftdi"
|
||||
name: "STM32F103 (128KB, Serial Debugging)"
|
||||
- board: "multi4in1:STM32F1:multi5in1t18int"
|
||||
name: "T18 5-in-1 (128KB)"
|
||||
|
||||
# Set the build name using the friendly board name
|
||||
name: ${{ matrix.name }}
|
||||
|
||||
# Set the environment variables
|
||||
env:
|
||||
|
@ -198,7 +198,7 @@
|
||||
81,0,E010r5,E010r5,1,Flip,LED,CALIB,HLess,RTH,GLIDE
|
||||
82,0,LOLI,Std,0,CH5,CH6,CH7,CH8,1SwSePpPw,2SwSePw,3SwSe,4SwSe,5SwSeSb,6SwSe,7SwSePw,8SwSe
|
||||
83,0,E129,E129,1,TakLan,EmStop,TrimA,TrimE,TrimR
|
||||
83,1,E129,C186,1,TakLan,EmStop,TrimA,TrimE,TrimR,Loop
|
||||
83,1,E129,C186,1,TakLan,EmStop,TrimA,TrimE,TrimR,Loop,Flip
|
||||
84,0,JOYSWAY,Std,0
|
||||
85,0,E016H,Std,1,Stop,Flip,n-a,HLess,RTH
|
||||
87,0,IKEA
|
||||
|
@ -58,15 +58,11 @@ This is the Graupner HoTT adapted version of the Model Locator script using RSSI
|
||||
|
||||
The OpenTX sensor "RSSI" is populated by the individual OpenTX telemetry protocol implementations and returns a value from 0..100 (percent) originating from the early FrSky implementation. It turns out that FrSky did not really provide a genuine signal strength indicator in units of dbm but a link quality indicator in 0..100%. With Graupner HoTT the link quality indicator is not a good basis for the model locator as it is very non-linear and doesn't change much with distance. Using the Graupner HoTT telemetry sensor "Rssi" which is a true signal strength indicator serves the purpose of locating a model much better as it varies much more with distance.
|
||||
|
||||
## DSM Forward Programming
|
||||
## DSM Tools for EdgeTX and OpenTx
|
||||
|
||||
This is a work in progress. It's available for color(+touch) and B&W screens.
|
||||
Collection of EdgeTx/OpenTX Tools to use with Spektrum Receivers including forward programming. Located on the radio SD card under \SCRIPTS\TOOLS, make sure to copy the DSMLIB folder!
|
||||
|
||||
Work on OpenTX and EdgeTX. Located on the radio SD card under \SCRIPTS\TOOLS, make sure to copy the DSMLIB folder along with DSM FwdPrg_05_Color.lua or DSM FwdPrg_05_BW.lua.
|
||||
|
||||
[](https://www.youtube.com/watch?v=sjIaDw5j9nE)
|
||||
|
||||
If some text appears as Unknown_xxx, please report xxx and what the exact text display should be.
|
||||
Frank is maintaining these awesome tools, check out his [repository](https://github.com/frankiearzu/DSMTools). Feel free to ask questions or open issues there.
|
||||
|
||||
## DSM PID Flight log gain parameters for Blade micros
|
||||
|
||||
|
118
Multiprotocol/Bluefly_ccnrf.ino
Normal file
118
Multiprotocol/Bluefly_ccnrf.ino
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
// compatible with BLUEFLY HP100
|
||||
|
||||
#if defined(BLUEFLY_CCNRF_INO)
|
||||
|
||||
#include "iface_nrf250k.h"
|
||||
|
||||
#define BLUEFLY_PACKET_PERIOD 6000
|
||||
#define BLUEFLY_PACKET_SIZE 12
|
||||
#define BLUEFLY_RF_BIND_CHANNEL 81
|
||||
#define BLUEFLY_NUM_RF_CHANNELS 15
|
||||
#define BLUEFLY_BIND_COUNT 800
|
||||
#define BLUEFLY_TXID_SIZE 5
|
||||
|
||||
static void __attribute__((unused)) BLUEFLY_send_packet()
|
||||
{
|
||||
if(IS_BIND_IN_PROGRESS)
|
||||
{
|
||||
memset(packet, 0x55, BLUEFLY_PACKET_SIZE);
|
||||
memcpy(packet, rx_tx_addr, BLUEFLY_TXID_SIZE);
|
||||
packet[5] = hopping_frequency[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
NRF250K_Hopping(hopping_frequency_no);
|
||||
hopping_frequency_no++;
|
||||
if(hopping_frequency_no >= BLUEFLY_NUM_RF_CHANNELS);
|
||||
hopping_frequency_no = 0;
|
||||
|
||||
packet[8] = packet[9] = 0;
|
||||
for(uint8_t i=0; i<8 ; i++)
|
||||
{
|
||||
uint16_t ch = convert_channel_16b_limit(CH_AETR[i], 0, 1000);
|
||||
packet[ i] = ch;
|
||||
ch &= 0x300;
|
||||
ch >>= 2;
|
||||
packet[8 + (i>3?0:1)] = (packet[8 + (i>3?0:1)] >> 2) | ch;
|
||||
}
|
||||
// Checksum
|
||||
uint8_t l, h, t;
|
||||
l = h = 0xff;
|
||||
for (uint8_t i=0; i<10; ++i)
|
||||
{
|
||||
h ^= packet[i];
|
||||
h ^= h >> 4;
|
||||
t = h;
|
||||
h = l;
|
||||
l = t;
|
||||
t = (l<<4) | (l>>4);
|
||||
h ^= ((t<<2) | (t>>6)) & 0x1f;
|
||||
h ^= t & 0xf0;
|
||||
l ^= ((t<<1) | (t>>7)) & 0xe0;
|
||||
}
|
||||
packet[10] = h;
|
||||
packet[11] = l;
|
||||
}
|
||||
|
||||
NRF250K_WritePayload(packet, BLUEFLY_PACKET_SIZE);
|
||||
NRF250K_SetPower(); // Set tx_power
|
||||
NRF250K_SetFreqOffset(); // Set frequency offset
|
||||
}
|
||||
|
||||
static void __attribute__((unused)) BLUEFLY_RF_init()
|
||||
{
|
||||
NRF250K_Init();
|
||||
NRF250K_SetTXAddr((uint8_t *)"\x32\xAA\x45\x45\x78", BLUEFLY_TXID_SIZE); // BLUEFLY Bind address
|
||||
NRF250K_HoppingCalib(BLUEFLY_NUM_RF_CHANNELS); // Calibrate all channels
|
||||
NRF250K_RFChannel(BLUEFLY_RF_BIND_CHANNEL); // Set bind channel
|
||||
}
|
||||
|
||||
static void __attribute__((unused)) BLUEFLY_initialize_txid()
|
||||
{
|
||||
uint8_t start = (rx_tx_addr[3] % 47) + 2;
|
||||
for(uint8_t i=0;i<BLUEFLY_NUM_RF_CHANNELS;i++)
|
||||
hopping_frequency[i] = start + i*2;
|
||||
hopping_frequency_no=0;
|
||||
}
|
||||
|
||||
uint16_t BLUEFLY_callback()
|
||||
{
|
||||
#ifdef MULTI_SYNC
|
||||
telemetry_set_input_sync(BLUEFLY_PACKET_PERIOD);
|
||||
#endif
|
||||
if(bind_counter)
|
||||
{
|
||||
bind_counter--;
|
||||
if (bind_counter == 0)
|
||||
{
|
||||
BIND_DONE;
|
||||
NRF250K_SetTXAddr(rx_tx_addr, BLUEFLY_TXID_SIZE);
|
||||
}
|
||||
}
|
||||
BLUEFLY_send_packet();
|
||||
return BLUEFLY_PACKET_PERIOD;
|
||||
}
|
||||
|
||||
void BLUEFLY_init(void)
|
||||
{
|
||||
BLUEFLY_initialize_txid();
|
||||
BLUEFLY_RF_init();
|
||||
|
||||
bind_counter = IS_BIND_IN_PROGRESS ? BLUEFLY_BIND_COUNT : 1;
|
||||
}
|
||||
|
||||
#endif
|
@ -53,8 +53,9 @@ static void __attribute__((unused)) E129_build_data_packet()
|
||||
packet[15] = bit_reverse(rx_tx_addr[0]);
|
||||
packet[16] = bit_reverse(rx_tx_addr[1]);
|
||||
}
|
||||
//packet[ 3] = 0x00; // E129 Mode: short press=0x20->0x00->0x20->..., long press=0x10->0x30->0x10->... => C186 throttle trim is doing the same:up=short press and down=long press
|
||||
packet[ 3] = GET_FLAG(CH10_SW, 0x40); // C159 loop flight 0x40, flag 0x04 is also set on this heli
|
||||
packet[ 3] = GET_FLAG(CH10_SW, 0x40) // C159 loop flight 0x40, flag 0x04 is also set on this heli
|
||||
| GET_FLAG(CH11_SW, 0x08); // C129V2 flip
|
||||
// Other flags in packet[3] => E129 Mode: short press=0x20->0x00->0x20->..., long press=0x10->0x30->0x10->... => C186 throttle trim is doing the same:up=short press and down=long press
|
||||
packet[ 4] = GET_FLAG(CH5_SW, 0x20) // Take off/Land 0x20
|
||||
| GET_FLAG(CH6_SW, 0x04); // Emergency stop 0x04
|
||||
//Channels and trims
|
||||
|
@ -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 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
|
||||
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()
|
||||
{
|
||||
@ -84,7 +84,9 @@ static void __attribute__((unused)) j6pro_cyrf_init()
|
||||
CYRF_WriteRegister(CYRF_10_FRAMING_CFG, 0xee);
|
||||
CYRF_WriteRegister(CYRF_1F_TX_OVERRIDE, 0x00);
|
||||
CYRF_WriteRegister(CYRF_1E_RX_OVERRIDE, 0x00);
|
||||
//CYRF_ConfigDataCode(j6pro_data_code, 16);
|
||||
|
||||
//Same as default reset but issues if not configured...
|
||||
CYRF_ConfigDataCode(j6pro_data_code, 16);
|
||||
CYRF_WritePreamble(0x333302);
|
||||
|
||||
CYRF_GetMfgData(cyrfmfg_id);
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#define LOSI_FORCE_ID
|
||||
|
||||
const uint8_t PROGMEM LOSI_bind_sop_code[] = {0x62, 0xdf, 0xc1, 0x49, 0xdf, 0xb1, 0xc0, 0x49};
|
||||
//const uint8_t PROGMEM LOSI_bind_sop_code[] = {0x62, 0xdf, 0xc1, 0x49, 0xdf, 0xb1, 0xc0, 0x49};
|
||||
const uint8_t LOSI_data_code[][16] = {
|
||||
{ 0xD7, 0xA1, 0x54, 0xB1, 0x5E, 0x89, 0xAE, 0x86, 0xC9, 0x2C, 0x06, 0x93, 0x86, 0xB9, 0x9E, 0xD7 }, //bind
|
||||
/* { 0xE1, 0xD6, 0x31, 0x26, 0x5F, 0xBD, 0x40, 0x93, 0xDC, 0x68, 0x08, 0x99, 0x97, 0xAE, 0xAF, 0x8C },
|
||||
@ -97,14 +97,14 @@ static void __attribute__((unused)) LOSI_cyrf_init()
|
||||
CYRF_WriteRegister(CYRF_1F_TX_OVERRIDE, 0x04); // No CRC
|
||||
//CYRF_WriteRegister(CYRF_1E_RX_OVERRIDE, 0x14);
|
||||
//CYRF_WriteRegister(CYRF_14_EOP_CTRL, 0x02);
|
||||
CYRF_ConfigDataCode(LOSI_data_code[0], 16); // Load bind data code
|
||||
}
|
||||
|
||||
uint16_t LOSI_callback()
|
||||
{
|
||||
#ifdef MULTI_SYNC
|
||||
telemetry_set_input_sync(19738);
|
||||
telemetry_set_input_sync(packet_period);
|
||||
#endif
|
||||
LOSI_send_packet();
|
||||
if(bind_counter)
|
||||
{
|
||||
bind_counter--;
|
||||
@ -112,17 +112,16 @@ uint16_t LOSI_callback()
|
||||
{
|
||||
BIND_DONE;
|
||||
CYRF_ConfigDataCode(LOSI_data_code[1], 16); // Load normal data code
|
||||
packet_period = 19738;
|
||||
}
|
||||
return 8763;
|
||||
}
|
||||
return 19738;
|
||||
LOSI_send_packet();
|
||||
return packet_period;
|
||||
}
|
||||
|
||||
void LOSI_init()
|
||||
{
|
||||
LOSI_cyrf_init();
|
||||
//CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
|
||||
//CYRF_ConfigRFChannel(hopping_frequency[0] | 1); // Only odd channels
|
||||
|
||||
#ifdef LOSI_FORCE_ID
|
||||
rx_tx_addr[0] = 0x47;
|
||||
@ -132,16 +131,11 @@ void LOSI_init()
|
||||
CYRF_ConfigRFChannel(0x27);
|
||||
#endif
|
||||
|
||||
if(IS_BIND_IN_PROGRESS)
|
||||
{
|
||||
bind_counter = 300;
|
||||
CYRF_ConfigDataCode(LOSI_data_code[0], 16); // Load bind data code
|
||||
}
|
||||
else
|
||||
{
|
||||
CYRF_ConfigDataCode(LOSI_data_code[1], 16); // Load normal data code
|
||||
bind_counter = 0;
|
||||
}
|
||||
CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
|
||||
CYRF_ConfigRFChannel(hopping_frequency[0]); // Only odd channels integrated in CYRF code...
|
||||
|
||||
bind_counter = IS_BIND_IN_PROGRESS?300:1;
|
||||
packet_period = 8763;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -91,3 +91,4 @@
|
||||
92,MT99xx,PA18
|
||||
93,Kyosho2,KT-17
|
||||
94,Scorpio
|
||||
95,BlueFly
|
||||
|
@ -106,6 +106,7 @@ const char STR_LOSI[] ="Losi";
|
||||
const char STR_MOULDKG[] ="MouldKg";
|
||||
const char STR_XERALL[] ="Xerall";
|
||||
const char STR_SCORPIO[] ="Scorpio";
|
||||
const char STR_BLUEFLY[] ="BlueFly";
|
||||
|
||||
const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
|
||||
const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
|
||||
@ -222,6 +223,9 @@ const mm_protocol_definition multi_protocols[] = {
|
||||
#if defined(BAYANG_RX_NRF24L01_INO)
|
||||
{PROTO_BAYANG_RX, STR_BAYANG_RX, STR_CPPM, NBR_CPPM, OPTION_NONE, 0, 0, SW_NRF, BAYANG_RX_init, BAYANG_RX_callback },
|
||||
#endif
|
||||
#if defined(BLUEFLY_CCNRF_INO)
|
||||
{PROTO_BLUEFLY, STR_BLUEFLY, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, BLUEFLY_init, BLUEFLY_callback },
|
||||
#endif
|
||||
#if defined(BUGS_A7105_INO)
|
||||
{PROTO_BUGS, STR_BUGS, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_A7105, BUGS_init, BUGS_callback },
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 3
|
||||
#define VERSION_REVISION 3
|
||||
#define VERSION_PATCH_LEVEL 34
|
||||
#define VERSION_PATCH_LEVEL 38
|
||||
|
||||
#define MODE_SERIAL 0
|
||||
|
||||
@ -122,6 +122,8 @@ enum PROTOCOLS
|
||||
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
||||
PROTO_KYOSHO2 = 93, // =>NRF24L01
|
||||
PROTO_SCORPIO = 94, // =>CYRF6936
|
||||
PROTO_BLUEFLY = 95, // =>CC2500 & NRF24L01
|
||||
|
||||
|
||||
PROTO_NANORF = 126, // =>NRF24L01
|
||||
PROTO_TEST = 127, // =>CC2500
|
||||
|
@ -340,6 +340,7 @@
|
||||
#undef ZSX_NRF24L01_INO
|
||||
#endif
|
||||
#if ( not defined(CC2500_INSTALLED) && not defined(NRF24L01_INSTALLED) ) || defined MULTI_EU
|
||||
#undef BLUEFLY_CCNRF_INO
|
||||
#undef GD00X_CCNRF_INO
|
||||
#undef KF606_CCNRF_INO
|
||||
#undef MJXQ_CCNRF_INO
|
||||
|
@ -255,6 +255,7 @@
|
||||
#define ZSX_NRF24L01_INO
|
||||
|
||||
//The protocols below need either a CC2500 or NRF24L01 to be installed
|
||||
#define BLUEFLY_CCNRF_INO
|
||||
#define GD00X_CCNRF_INO
|
||||
#define KF606_CCNRF_INO
|
||||
#define MJXQ_CCNRF_INO
|
||||
@ -567,6 +568,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
||||
QX100
|
||||
PROTO_BAYANG_RX
|
||||
NONE
|
||||
PROTO_BLUEFLY
|
||||
NONE
|
||||
PROTO_BUGS
|
||||
NONE
|
||||
PROTO_BUGSMINI
|
||||
|
@ -65,6 +65,7 @@ Protocol Name|Protocol Number|Sub_Proto 0|Sub_Proto 1|Sub_Proto 2|Sub_Proto 3|Su
|
||||
[Assan](Protocols_Details.md#ASSAN---24)|24|||||||||NRF24L01|
|
||||
[Bayang](Protocols_Details.md#BAYANG---14)|14|Bayang|H8S3D|X16_AH|IRDRONE|DHD_D4|QX100|||NRF24L01|XN297
|
||||
[Bayang RX](Protocols_Details.md#BAYANG-RX---59)|59|Multi|CPPM|||||||NRF24L01|XN297
|
||||
[BlueFly](Protocols_Details.md#BLUEFLY---95)|95|||||||||NRF24L01|
|
||||
[Bugs](Protocols_Details.md#BUGS---41)|41|||||||||A7105|
|
||||
[BugsMini](Protocols_Details.md#BUGSMINI---42)|42|BUGSMINI|BUGS3H|||||||NRF24L01|XN297
|
||||
[Cabell](Protocols_Details.md#Cabell---34)|34|Cabell_V3|C_TELEM|-|-|-|-|F_SAFE|UNBIND|NRF24L01|
|
||||
@ -325,7 +326,9 @@ CH1|CH2|CH3|CH4
|
||||
## Kyosho - *73*
|
||||
|
||||
### Sub_protocol FHSS - *0*
|
||||
Surface protocol called FHSS introduced in 2017. Transmitters: KT-531P, KT-431PT...
|
||||
Surface protocol called FHSS introduced in 2017. Transmitter: KT-531P. Models: Mini-Z
|
||||
|
||||
Extended limits supported
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14
|
||||
---|---|---|---|---|---|---|---|---|----|----|----|----|----
|
||||
@ -616,16 +619,18 @@ Calib is the same as the original radio with both sticks down and to the left in
|
||||
Models: Eachine E129/E130 and Twister Ninja 250
|
||||
|
||||
### Sub_protocol C186 - *1*
|
||||
Models: C186/E120, C127/E110, K127, C159, C189
|
||||
Models: C186/E120, C127/E110, K127, C159, C189, C129v2
|
||||
|
||||
The FC of the heli seems to store the trims Trim A/E/R=CH7..9. If you use these trims, make sure to center them after powering off the heli or they will be added to the previous trims and over correct.
|
||||
|
||||
CH10|
|
||||
---|
|
||||
Loop|
|
||||
CH10|CH11
|
||||
---|---
|
||||
Loop|Flip
|
||||
|
||||
Loop: circular flight on the C159 (others?)
|
||||
|
||||
Flip: flip/aerobatic on the C129v2 (others?)
|
||||
|
||||
## J6Pro - *22*
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12
|
||||
@ -1030,6 +1035,17 @@ If a CC2500 is installed it will be used for all the below protocols. Option in
|
||||
|
||||
If only a NRF24L01 is installed then these protocols might be problematic because they are using the XN297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
||||
|
||||
## BLUEFLY - *95*
|
||||
Model: HP100
|
||||
|
||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
|
||||
---|---|---|---|---|---|---|---
|
||||
A|E|T|R|CH5|CH6|CH7|CH8
|
||||
|
||||
TRIM: either use this channel for trim only or add a mixer with aileron to increase the roll rate.
|
||||
|
||||
RATE: -100% high rate, +100% low rate
|
||||
|
||||
## GD00X - *47*
|
||||
Model: GD005 C-17 Transport, GD006 DA62 and ZC-Z50
|
||||
|
||||
@ -1398,7 +1414,7 @@ If a CC2500 is installed it will be used for this sub protocol. Option in this c
|
||||
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
|
||||
|
||||
### Sub_protocol X420 - *1*
|
||||
Models: XK X420/X520 (TX=X4)
|
||||
Models: XK X420/X520 (TX=X4), WLtoys 284131/284161/284010
|
||||
|
||||
***
|
||||
# NRF24L01 RF Module
|
||||
@ -1948,7 +1964,7 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
|
||||
A|E|T|R|FLIP|LIGHT|PICTURE|VIDEO|HEADLESS|MAG_CAL_X|MAG_CAL_Y
|
||||
|
||||
### Sub_protocol V2x2 - *0*
|
||||
Models: WLToys V202/252/272, JXD 385/388, JJRC H6C, Yizhan Tarantula X6 ...
|
||||
Models: WLToys V202/252/272/A959/K969/K979/K989/K999, JXD 385/388, JJRC H6C, Yizhan Tarantula X6 ...
|
||||
|
||||
PICTURE: also automatic Missile Launcher and Hoist in one direction
|
||||
|
||||
|
@ -86,6 +86,7 @@ buildEachRFModule() {
|
||||
buildReleaseFiles(){
|
||||
if [[ "$BOARD" =~ ":avr:multixmega32d4" ]]; then
|
||||
build_release_orx;
|
||||
build_release_extras;
|
||||
elif [[ "$BOARD" =~ ":avr:multiatmega328p:bootloader=none" ]]; then
|
||||
build_release_avr_noboot;
|
||||
elif [[ "$BOARD" =~ ":avr:multiatmega328p:bootloader=optiboot" ]]; then
|
||||
|
15
buildroot/bin/build_release_extras
Normal file
15
buildroot/bin/build_release_extras
Normal file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source ./buildroot/bin/buildFunctions;
|
||||
exitcode=0;
|
||||
|
||||
printf "\e[33;1mPackaging ancilliary files for v$MULTI_VERSION\e[0m\n";
|
||||
cp Multiprotocol/Multi.txt ./binaries/Multi.txt;
|
||||
|
||||
mkdir -p SCRIPTS/TOOLS;
|
||||
cp -r Lua_scripts/* SCRIPTS/TOOLS/;
|
||||
find SCRIPTS/TOOLS -type f -name "*.md" -delete
|
||||
|
||||
zip -q -r ./binaries/MultiLuaScripts.zip SCRIPTS/TOOLS/*;
|
||||
|
||||
exit $exitcode;
|
@ -16,11 +16,4 @@ buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-orangerx-aetr-blue-inv-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mPackaging ancilliary files for v$MULTI_VERSION\e[0m\n";
|
||||
cp Multiprotocol/Multi.txt ./binaries/Multi.txt;
|
||||
mkdir -p SCRIPTS/TOOLS;
|
||||
cp Lua_scripts/*.lua SCRIPTS/TOOLS/;
|
||||
cp Lua_scripts/*.txt SCRIPTS/TOOLS/;
|
||||
zip -q ./binaries/MultiLuaScripts.zip SCRIPTS/TOOLS/*;
|
||||
|
||||
exit $exitcode;
|
||||
|
@ -3,7 +3,7 @@
|
||||
source ./buildroot/bin/buildFunctions;
|
||||
exitcode=0;
|
||||
|
||||
# CC2500-only 64Kb builds
|
||||
# CC2500-only 64Kb FCC builds
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-64-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_enable $ALL_PROTOCOLS;
|
||||
opt_disable IKEAANSLUTA_CC2500_INO;
|
||||
@ -28,4 +28,24 @@ buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-64-reta-v$MULTI_VERSION.bin;
|
||||
|
||||
# CC2500-only 64Kb LBT/EU builds
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-64-aetr-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace RETA AETR;
|
||||
opt_add MULTI_EU;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-64-aetr-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-64-taer-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace AETR TAER;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-64-taer-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-64-reta-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace TAER RETA;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-64-reta-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
exit $exitcode;
|
||||
|
@ -3,11 +3,7 @@
|
||||
source ./buildroot/bin/buildFunctions;
|
||||
exitcode=0;
|
||||
|
||||
# Builds for the DIY 5-in-1 module exceed the 120KB working capacity of the STM32F103CB
|
||||
# To work around this we have to disable some protocols in the builds for this module
|
||||
#DIY_5IN1_DISABLED="MOULDKG_NRF24L01_INO";
|
||||
|
||||
# Generic 4-in-1 builds
|
||||
# Generic 4-in-1 FCC builds
|
||||
printf "\e[33;1mBuilding mm-stm-serial-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_disable ENABLE_PPM;
|
||||
buildMulti;
|
||||
@ -26,10 +22,30 @@ buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-serial-reta-v$MULTI_VERSION.bin;
|
||||
|
||||
# Generic 4-in-1 LBT/EU builds
|
||||
printf "\e[33;1mBuilding mm-stm-serial-aetr-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace RETA AETR;
|
||||
opt_add MULTI_EU;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-serial-aetr-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-serial-taer-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace AETR TAER;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-serial-taer-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-serial-reta-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace TAER RETA;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-serial-reta-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
# DIY 5-in-1 builds
|
||||
printf "\e[33;1mBuilding mm-stm-5in1-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_remove MULTI_EU;
|
||||
opt_replace RETA AETR;
|
||||
#opt_disable $DIY_5IN1_DISABLED;
|
||||
opt_enable SX1276_INSTALLED;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
@ -52,7 +68,6 @@ printf "\e[33;1mBuilding mm-tlite5in1-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace RETA AETR;
|
||||
opt_disable INVERT_TELEMETRY;
|
||||
opt_disable SX1276_INSTALLED;
|
||||
#opt_enable $DIY_5IN1_DISABLED;
|
||||
opt_enable "MULTI_5IN1_INTERNAL JP_TLite"
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
@ -70,7 +85,7 @@ buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-tlite5in1-reta-v$MULTI_VERSION.bin;
|
||||
|
||||
# CC2500-only builds
|
||||
# CC2500-only FCC builds
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace RETA AETR;
|
||||
opt_disable "MULTI_5IN1_INTERNAL JP_TLite"
|
||||
@ -94,11 +109,32 @@ buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-reta-v$MULTI_VERSION.bin;
|
||||
|
||||
# CC2500-only LBT/EU builds
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-aetr-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace RETA AETR;
|
||||
opt_add MULTI_EU;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-aetr-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-taer-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace AETR TAER;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-taer-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
printf "\e[33;1mBuilding mm-stm-cc2500-reta-lbt-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_replace TAER RETA;
|
||||
buildMulti;
|
||||
exitcode=$((exitcode+$?));
|
||||
mv build/Multiprotocol.ino.bin ./binaries/mm-stm-cc2500-reta-lbt-v$MULTI_VERSION.bin;
|
||||
|
||||
# 4-in-1 PPM builds
|
||||
printf "\e[33;1mBuilding mm-stm-ppm-aetr-v$MULTI_VERSION.bin\e[0m\n";
|
||||
opt_enable A7105_INSTALLED;
|
||||
opt_enable CYRF6936_INSTALLED;
|
||||
opt_enable NRF24L01_INSTALLED;
|
||||
opt_remove MULTI_EU;
|
||||
opt_enable ENABLE_PPM;
|
||||
opt_disable ENABLE_SERIAL;
|
||||
opt_replace RETA AETR;
|
||||
|
5
buildroot/bin/opt_remove
Normal file
5
buildroot/bin/opt_remove
Normal file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SED=$(which gsed || which sed)
|
||||
|
||||
eval "${SED} -i '/#define \b${1}/d' Multiprotocol/_Config.h"
|
Loading…
x
Reference in New Issue
Block a user