mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 17:58:13 +00:00
CYRF6936: Findbestchannels flag addition
This commit is contained in:
parent
9e9c3958c6
commit
5acc3a8d01
@ -249,7 +249,7 @@ void CYRF_WriteDataPacket(const uint8_t dpbuffer[])
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
//NOTE: This routine will reset the CRC Seed
|
//NOTE: This routine will reset the CRC Seed
|
||||||
void CYRF_FindBestChannels(uint8_t *channels, uint8_t len, uint8_t minspace, uint8_t min, uint8_t max)
|
void CYRF_FindBestChannels(uint8_t *channels, uint8_t len, uint8_t minspace, uint8_t min, uint8_t max, uint8_t forced)
|
||||||
{
|
{
|
||||||
#define NUM_FREQ 80
|
#define NUM_FREQ 80
|
||||||
#define FREQ_OFFSET 4
|
#define FREQ_OFFSET 4
|
||||||
@ -269,7 +269,12 @@ void CYRF_FindBestChannels(uint8_t *channels, uint8_t len, uint8_t minspace, uin
|
|||||||
delayMilliseconds(1);
|
delayMilliseconds(1);
|
||||||
for(i = 0; i < NUM_FREQ; i++)
|
for(i = 0; i < NUM_FREQ; i++)
|
||||||
{
|
{
|
||||||
CYRF_ConfigRFChannel(protocol==PROTO_LOSI?i|1:i);
|
if(((i&1) && forced == FIND_CHANNEL_EVEN) || (!(i&1) && forced == FIND_CHANNEL_ODD))
|
||||||
|
{
|
||||||
|
rssi[i] = 0xFF;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
CYRF_ConfigRFChannel(i); //protocol==PROTO_LOSI?i|1:i);
|
||||||
delayMicroseconds(270); //slow channel require 270usec for synthesizer to settle
|
delayMicroseconds(270); //slow channel require 270usec for synthesizer to settle
|
||||||
if( !(CYRF_ReadRegister(CYRF_05_RX_CTRL) & 0x80)) {
|
if( !(CYRF_ReadRegister(CYRF_05_RX_CTRL) & 0x80)) {
|
||||||
CYRF_WriteRegister(CYRF_05_RX_CTRL, 0x80); //Prepare to receive
|
CYRF_WriteRegister(CYRF_05_RX_CTRL, 0x80); //Prepare to receive
|
||||||
|
@ -618,7 +618,7 @@ void DSM_init()
|
|||||||
else if(sub_protocol != DSMR)
|
else if(sub_protocol != DSMR)
|
||||||
{
|
{
|
||||||
uint8_t tmpch[10];
|
uint8_t tmpch[10];
|
||||||
CYRF_FindBestChannels(tmpch, 10, 5, 3, 75);
|
CYRF_FindBestChannels(tmpch, 10, 5, 3, 75, FIND_CHANNEL_ANY);
|
||||||
//
|
//
|
||||||
uint8_t idx = random(0xfefefefe) % 10;
|
uint8_t idx = random(0xfefefefe) % 10;
|
||||||
hopping_frequency[0] = tmpch[idx];
|
hopping_frequency[0] = tmpch[idx];
|
||||||
|
@ -365,7 +365,7 @@ static void __attribute__((unused)) DEVO_cyrf_init()
|
|||||||
|
|
||||||
static void __attribute__((unused)) DEVO_set_radio_channels()
|
static void __attribute__((unused)) DEVO_set_radio_channels()
|
||||||
{
|
{
|
||||||
CYRF_FindBestChannels(hopping_frequency, 3, 4, 4, 80);
|
CYRF_FindBestChannels(hopping_frequency, 3, 4, 4, 80, FIND_CHANNEL_ANY);
|
||||||
hopping_frequency[3] = hopping_frequency[0];
|
hopping_frequency[3] = hopping_frequency[0];
|
||||||
hopping_frequency[4] = hopping_frequency[1];
|
hopping_frequency[4] = hopping_frequency[1];
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ static void __attribute__((unused)) j6pro_set_radio_channels()
|
|||||||
{
|
{
|
||||||
//FIXME: Query free channels
|
//FIXME: Query free channels
|
||||||
//lowest channel is 0x08, upper channel is 0x4d?
|
//lowest channel is 0x08, upper channel is 0x4d?
|
||||||
CYRF_FindBestChannels(hopping_frequency, 3, 5, 8, 77);
|
CYRF_FindBestChannels(hopping_frequency, 3, 5, 8, 77, FIND_CHANNEL_ANY);
|
||||||
hopping_frequency[3] = hopping_frequency[0];
|
hopping_frequency[3] = hopping_frequency[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#include "iface_cyrf6936.h"
|
#include "iface_cyrf6936.h"
|
||||||
|
|
||||||
#define KYOSHO3_FORCE_ID
|
//#define KYOSHO3_FORCE_ID
|
||||||
//#define KYOSHO3_DEBUG
|
//#define KYOSHO3_DEBUG
|
||||||
|
|
||||||
#define KYOSHO3_BIND_PACKET_SIZE 4
|
#define KYOSHO3_BIND_PACKET_SIZE 4
|
||||||
@ -102,7 +102,8 @@ void KYOSHO3_init()
|
|||||||
CYRF_WritePreamble(0x333304);
|
CYRF_WritePreamble(0x333304);
|
||||||
|
|
||||||
//Find a free even channel
|
//Find a free even channel
|
||||||
CYRF_FindBestChannels(hopping_frequency,1,1,0x04,0x50);
|
CYRF_FindBestChannels(hopping_frequency,1,1,0x04,0x50, FIND_CHANNEL_EVEN);
|
||||||
|
hopping_frequency[0] = 0x04;
|
||||||
|
|
||||||
#ifdef KYOSHO3_FORCE_ID // data taken from TX dump
|
#ifdef KYOSHO3_FORCE_ID // data taken from TX dump
|
||||||
rx_tx_addr[1]=0x01;
|
rx_tx_addr[1]=0x01;
|
||||||
@ -114,6 +115,7 @@ void KYOSHO3_init()
|
|||||||
debugln("ID: %02X %02X %02X",rx_tx_addr[1],rx_tx_addr[2],rx_tx_addr[3]);
|
debugln("ID: %02X %02X %02X",rx_tx_addr[1],rx_tx_addr[2],rx_tx_addr[3]);
|
||||||
debugln("RF CH: %02X",hopping_frequency[0]);
|
debugln("RF CH: %02X",hopping_frequency[0]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CYRF_ConfigRFChannel(hopping_frequency[0]);
|
CYRF_ConfigRFChannel(hopping_frequency[0]);
|
||||||
|
|
||||||
bind_counter=1000;
|
bind_counter=1000;
|
||||||
|
@ -169,8 +169,7 @@ void LOSI_init()
|
|||||||
{
|
{
|
||||||
LOSI_cyrf_init();
|
LOSI_cyrf_init();
|
||||||
|
|
||||||
CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x07, 0x4F); // 0x07 and 0x4F are unknown limits, this routine resets the CRC Seed to 0
|
CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x07, 0x4F, FIND_CHANNEL_ODD); // 0x07 and 0x4F are unknown limits, this routine resets the CRC Seed to 0
|
||||||
hopping_frequency[0] |= 1; // Only odd channels are used, integrated in CYRF code...
|
|
||||||
|
|
||||||
crc8 = 0;
|
crc8 = 0;
|
||||||
crc8 = (uint16_t)LOSI_check(((rx_tx_addr[2]&0x0F) << 8) + rx_tx_addr[3]) >> 12;
|
crc8 = (uint16_t)LOSI_check(((rx_tx_addr[2]&0x0F) << 8) + rx_tx_addr[3]) >> 12;
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 4
|
#define VERSION_REVISION 4
|
||||||
#define VERSION_PATCH_LEVEL 4
|
#define VERSION_PATCH_LEVEL 5
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ void TRAXXAS_init()
|
|||||||
//Read CYRF ID
|
//Read CYRF ID
|
||||||
CYRF_GetMfgData(cyrfmfg_id);
|
CYRF_GetMfgData(cyrfmfg_id);
|
||||||
//cyrfmfg_id[0]+=RX_num; // Not needed since the TX and RX have to match
|
//cyrfmfg_id[0]+=RX_num; // Not needed since the TX and RX have to match
|
||||||
CYRF_FindBestChannels(hopping_frequency,1,1,0x02,0x21);
|
CYRF_FindBestChannels(hopping_frequency,1,1,0x02,0x21, FIND_CHANNEL_ANY);
|
||||||
#ifdef TRAXXAS_FORCE_ID // data taken from TX dump
|
#ifdef TRAXXAS_FORCE_ID // data taken from TX dump
|
||||||
cyrfmfg_id[0]=0x65; // CYRF MFG ID
|
cyrfmfg_id[0]=0x65; // CYRF MFG ID
|
||||||
cyrfmfg_id[1]=0xE2;
|
cyrfmfg_id[1]=0xE2;
|
||||||
|
@ -487,7 +487,7 @@ void WK_init()
|
|||||||
CYRF_SetTxRxMode(TX_EN);
|
CYRF_SetTxRxMode(TX_EN);
|
||||||
|
|
||||||
hopping_frequency_no=0;
|
hopping_frequency_no=0;
|
||||||
CYRF_FindBestChannels(hopping_frequency, 3, 4, 4, 80);
|
CYRF_FindBestChannels(hopping_frequency, 3, 4, 4, 80, FIND_CHANNEL_ANY);
|
||||||
CYRF_ConfigRFChannel(hopping_frequency[0]);
|
CYRF_ConfigRFChannel(hopping_frequency[0]);
|
||||||
|
|
||||||
packet_count = 0;
|
packet_count = 0;
|
||||||
|
@ -71,7 +71,11 @@ enum CYRF_PWR {
|
|||||||
CYRF_PWR_DEFAULT,
|
CYRF_PWR_DEFAULT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum FIND_CHANNEL {
|
||||||
|
FIND_CHANNEL_ANY = 0,
|
||||||
|
FIND_CHANNEL_EVEN = 1,
|
||||||
|
FIND_CHANNEL_ODD = 2,
|
||||||
|
};
|
||||||
|
|
||||||
/* SPI CYRF6936 */
|
/* SPI CYRF6936 */
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user