mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 19:48:11 +00:00
Fix OMP protocol
This commit is contained in:
parent
9c6c55fa00
commit
7676398aab
@ -61,7 +61,6 @@ static void __attribute__((unused)) CORONA_rf_init()
|
|||||||
CC2500_WriteReg(CC2500_15_DEVIATN, 0x50);
|
CC2500_WriteReg(CC2500_15_DEVIATN, 0x50);
|
||||||
}
|
}
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
//not sure what they are doing to the PATABLE since basically only the first byte is used and it's only 8 bytes long. So I think they end up filling the PATABLE fully with 0xFF
|
//not sure what they are doing to the PATABLE since basically only the first byte is used and it's only 8 bytes long. So I think they end up filling the PATABLE fully with 0xFF
|
||||||
@ -262,11 +261,7 @@ uint16_t ReadCORONA()
|
|||||||
telemetry_set_input_sync(22000);
|
telemetry_set_input_sync(22000);
|
||||||
#endif
|
#endif
|
||||||
// Tune frequency if it has been changed
|
// Tune frequency if it has been changed
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(IS_BIND_IN_PROGRESS)
|
if(IS_BIND_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
|
@ -79,7 +79,6 @@ static void __attribute__((unused)) ESKY150V2_send_packet()
|
|||||||
|
|
||||||
uint16_t ESKY150V2_callback()
|
uint16_t ESKY150V2_callback()
|
||||||
{
|
{
|
||||||
if(option==0) option=1; //Trick the RF component auto select system
|
|
||||||
if(IS_BIND_DONE)
|
if(IS_BIND_DONE)
|
||||||
{
|
{
|
||||||
#ifdef MULTI_SYNC
|
#ifdef MULTI_SYNC
|
||||||
@ -107,7 +106,6 @@ uint16_t ESKY150V2_callback()
|
|||||||
|
|
||||||
uint16_t initESKY150V2()
|
uint16_t initESKY150V2()
|
||||||
{
|
{
|
||||||
if(option==0) option=1; // Trick the RF component auto select system
|
|
||||||
CC2500_250K_Init();
|
CC2500_250K_Init();
|
||||||
ESKY150V2_set_freq();
|
ESKY150V2_set_freq();
|
||||||
hopping_frequency_no = 0;
|
hopping_frequency_no = 0;
|
||||||
|
@ -375,7 +375,6 @@ void Frsky_init_clone(void)
|
|||||||
val=option;
|
val=option;
|
||||||
CC2500_WriteReg(reg,val);
|
CC2500_WriteReg(reg,val);
|
||||||
}
|
}
|
||||||
prev_option = option ; // Save option to monitor FSCTRL0 change
|
|
||||||
for(uint8_t i=0;i<17;i++)
|
for(uint8_t i=0;i<17;i++)
|
||||||
{
|
{
|
||||||
uint8_t reg=pgm_read_byte_near(&FRSKY_common_end_cc2500_conf[i][0]);
|
uint8_t reg=pgm_read_byte_near(&FRSKY_common_end_cc2500_conf[i][0]);
|
||||||
@ -406,7 +405,7 @@ void Frsky_init_clone(void)
|
|||||||
{
|
{
|
||||||
for (uint8_t i=start+1;i<=end;i++)
|
for (uint8_t i=start+1;i<=end;i++)
|
||||||
packet[i]=0;
|
packet[i]=0;
|
||||||
packet[start] = FrSkyX_RX_Seq << 4; //TX=8 at startup
|
packet[start] = FrSkyX_RX_Seq << 4;
|
||||||
#ifdef SPORT_SEND
|
#ifdef SPORT_SEND
|
||||||
if (FrSkyX_TX_IN_Seq!=0xFF)
|
if (FrSkyX_TX_IN_Seq!=0xFF)
|
||||||
{//RX has replied at least once
|
{//RX has replied at least once
|
||||||
|
@ -203,11 +203,7 @@ uint16_t ReadFrSky_2way()
|
|||||||
}
|
}
|
||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[counter % 47]);
|
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[counter % 47]);
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0,option); // Frequency offset hack
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
|
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
|
||||||
CC2500_Strobe(CC2500_SFRX);
|
CC2500_Strobe(CC2500_SFRX);
|
||||||
frsky2way_data_frame();
|
frsky2way_data_frame();
|
||||||
|
@ -200,11 +200,7 @@ uint16_t ReadFrSkyL()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FRSKY_DATA1:
|
case FRSKY_DATA1:
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0,option); //Frequency offset hack
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
FrSkyX_set_start(hopping_frequency_no);
|
FrSkyX_set_start(hopping_frequency_no);
|
||||||
FrSkyL_build_packet();
|
FrSkyL_build_packet();
|
||||||
FrSkyL_encode_packet(true);
|
FrSkyL_encode_packet(true);
|
||||||
|
@ -122,11 +122,7 @@ uint16_t ReadFRSKYV()
|
|||||||
#endif
|
#endif
|
||||||
uint8_t chan = FRSKYV_calc_channel();
|
uint8_t chan = FRSKYV_calc_channel();
|
||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
if (option != prev_option)
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
|
||||||
prev_option=option;
|
|
||||||
}
|
|
||||||
CC2500_WriteReg(CC2500_0A_CHANNR, chan * 5 + 6);
|
CC2500_WriteReg(CC2500_0A_CHANNR, chan * 5 + 6);
|
||||||
FRSKYV_build_data_packet();
|
FRSKYV_build_data_packet();
|
||||||
|
|
||||||
|
@ -142,11 +142,7 @@ uint16_t ReadFrSkyX()
|
|||||||
|
|
||||||
case FRSKY_DATA1:
|
case FRSKY_DATA1:
|
||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0,option); //Frequency offset hack
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
FrSkyX_set_start(hopping_frequency_no);
|
FrSkyX_set_start(hopping_frequency_no);
|
||||||
FrSkyX_build_packet();
|
FrSkyX_build_packet();
|
||||||
if(FrSkyFormat & 2)
|
if(FrSkyFormat & 2)
|
||||||
|
@ -79,7 +79,6 @@ static void __attribute__((unused)) SFHSS_rf_init()
|
|||||||
for (uint8_t i = 0; i < 39; ++i)
|
for (uint8_t i = 0; i < 39; ++i)
|
||||||
CC2500_WriteReg(i, pgm_read_byte_near(&SFHSS_init_values[i]));
|
CC2500_WriteReg(i, pgm_read_byte_near(&SFHSS_init_values[i]));
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
@ -86,7 +86,6 @@ static void __attribute__((unused)) HOTT_rf_init()
|
|||||||
for (uint8_t i = 0; i < 39; ++i)
|
for (uint8_t i = 0; i < 39; ++i)
|
||||||
CC2500_WriteReg(i, pgm_read_byte_near(&HOTT_init_values[i]));
|
CC2500_WriteReg(i, pgm_read_byte_near(&HOTT_init_values[i]));
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
@ -54,7 +54,6 @@ static void __attribute__((unused)) HITEC_CC2500_init()
|
|||||||
for (uint8_t i = 0; i < 39; ++i)
|
for (uint8_t i = 0; i < 39; ++i)
|
||||||
CC2500_WriteReg(i, pgm_read_byte_near(&HITEC_init_values[i]));
|
CC2500_WriteReg(i, pgm_read_byte_near(&HITEC_init_values[i]));
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 2
|
#define VERSION_REVISION 2
|
||||||
#define VERSION_PATCH_LEVEL 11
|
#define VERSION_PATCH_LEVEL 12
|
||||||
|
|
||||||
//******************
|
//******************
|
||||||
// Protocols
|
// Protocols
|
||||||
|
@ -30,7 +30,8 @@ Multiprotocol is distributed in the hope that it will be useful,
|
|||||||
static void __attribute__((unused)) OMP_send_packet()
|
static void __attribute__((unused)) OMP_send_packet()
|
||||||
{
|
{
|
||||||
#ifdef OMP_HUB_TELEMETRY
|
#ifdef OMP_HUB_TELEMETRY
|
||||||
if(option==0) option=1; // Select the CC2500 by default
|
if(option==0)
|
||||||
|
prev_option=option=1; // Select the CC2500 by default
|
||||||
PE1_off; PE2_on; // CC2500 antenna RF2
|
PE1_off; PE2_on; // CC2500 antenna RF2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -110,7 +111,7 @@ static void __attribute__((unused)) OMP_init()
|
|||||||
//Config CC2500
|
//Config CC2500
|
||||||
#ifdef OMP_HUB_TELEMETRY
|
#ifdef OMP_HUB_TELEMETRY
|
||||||
if(option==0)
|
if(option==0)
|
||||||
option=1; // Select the CC2500
|
prev_option=option=1; // Select the CC2500
|
||||||
#endif
|
#endif
|
||||||
XN297L_Init();
|
XN297L_Init();
|
||||||
XN297L_SetTXAddr((uint8_t*)"FLPBD", 5);
|
XN297L_SetTXAddr((uint8_t*)"FLPBD", 5);
|
||||||
@ -119,7 +120,7 @@ static void __attribute__((unused)) OMP_init()
|
|||||||
|
|
||||||
#ifdef OMP_HUB_TELEMETRY
|
#ifdef OMP_HUB_TELEMETRY
|
||||||
//Config NRF
|
//Config NRF
|
||||||
option=0; // Select the NRF
|
prev_option=option=0; // Select the NRF
|
||||||
XN297L_Init();
|
XN297L_Init();
|
||||||
XN297_Configure(_BV(NRF24L01_00_EN_CRC));
|
XN297_Configure(_BV(NRF24L01_00_EN_CRC));
|
||||||
XN297_SetRXAddr(rx_tx_addr, 5); // Set the RX address
|
XN297_SetRXAddr(rx_tx_addr, 5); // Set the RX address
|
||||||
|
@ -139,21 +139,11 @@ static void __attribute__((unused)) RLINK_rf_init()
|
|||||||
CC2500_WriteReg(5, 0xDC);
|
CC2500_WriteReg(5, 0xDC);
|
||||||
}
|
}
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
}
|
}
|
||||||
|
|
||||||
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_send_packet()
|
static void __attribute__((unused)) RLINK_send_packet()
|
||||||
{
|
{
|
||||||
static uint32_t pseudo=0;
|
static uint32_t pseudo=0;
|
||||||
@ -245,7 +235,7 @@ uint16_t RLINK_callback()
|
|||||||
telemetry_set_input_sync(RLINK_TIMING_PROTO);
|
telemetry_set_input_sync(RLINK_TIMING_PROTO);
|
||||||
#endif
|
#endif
|
||||||
CC2500_SetPower();
|
CC2500_SetPower();
|
||||||
RLINK_tune_freq();
|
CC2500_SetFreqOffset();
|
||||||
RLINK_send_packet();
|
RLINK_send_packet();
|
||||||
#if not defined RLINK_HUB_TELEMETRY
|
#if not defined RLINK_HUB_TELEMETRY
|
||||||
return RLINK_TIMING_PROTO;
|
return RLINK_TIMING_PROTO;
|
||||||
|
@ -98,11 +98,7 @@ static void REDPINE_data_frame() {
|
|||||||
|
|
||||||
static uint16_t ReadREDPINE()
|
static uint16_t ReadREDPINE()
|
||||||
{
|
{
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{ // Frequency adjust
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
if(IS_BIND_IN_PROGRESS)
|
if(IS_BIND_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
if (state == REDPINE_BIND) {
|
if (state == REDPINE_BIND) {
|
||||||
@ -122,22 +118,18 @@ static uint16_t ReadREDPINE()
|
|||||||
}
|
}
|
||||||
return 4000;
|
return 4000;
|
||||||
}
|
}
|
||||||
else
|
#ifdef MULTI_SYNC
|
||||||
{
|
telemetry_set_input_sync(packet_period);
|
||||||
#ifdef MULTI_SYNC
|
#endif
|
||||||
telemetry_set_input_sync(packet_period);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
#endif
|
REDPINE_set_channel(hopping_frequency_no);
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetPower();
|
||||||
REDPINE_set_channel(hopping_frequency_no);
|
CC2500_Strobe(CC2500_SFRX);
|
||||||
CC2500_SetPower();
|
REDPINE_data_frame();
|
||||||
CC2500_Strobe(CC2500_SFRX);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
REDPINE_data_frame();
|
hopping_frequency_no = (hopping_frequency_no + 1) % 49;
|
||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_WriteData(packet, REDPINE_PACKET_SIZE);
|
||||||
hopping_frequency_no = (hopping_frequency_no + 1) % 49;
|
return packet_period;
|
||||||
CC2500_WriteData(packet, REDPINE_PACKET_SIZE);
|
|
||||||
return packet_period;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// register, fast 250k, slow
|
// register, fast 250k, slow
|
||||||
@ -189,7 +181,6 @@ static void REDPINE_init(uint8_t format)
|
|||||||
CC2500_WriteReg(REDPINE_init_data[i][0], REDPINE_init_data[i][format+1]);
|
CC2500_WriteReg(REDPINE_init_data[i][0], REDPINE_init_data[i][format+1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ static void __attribute__((unused)) SKYARTEC_rf_init()
|
|||||||
for (uint8_t i = 4; i <= 0x2E; ++i)
|
for (uint8_t i = 4; i <= 0x2E; ++i)
|
||||||
CC2500_WriteReg(i, pgm_read_byte_near(&SKYARTEC_init_values[i-4]));
|
CC2500_WriteReg(i, pgm_read_byte_near(&SKYARTEC_init_values[i-4]));
|
||||||
|
|
||||||
prev_option = option;
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
@ -130,11 +129,7 @@ uint16_t ReadSKYARTEC()
|
|||||||
{
|
{
|
||||||
CC2500_SetPower();
|
CC2500_SetPower();
|
||||||
// Tune frequency if it has been changed
|
// Tune frequency if it has been changed
|
||||||
if ( prev_option != option )
|
CC2500_SetFreqOffset();
|
||||||
{
|
|
||||||
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
|
||||||
prev_option = option ;
|
|
||||||
}
|
|
||||||
phase = SKYARTEC_PKT1;
|
phase = SKYARTEC_PKT1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -304,7 +304,6 @@ uint16_t initWFLY2()
|
|||||||
rf_ch_num = 0;
|
rf_ch_num = 0;
|
||||||
bind_counter = WFLY2_BIND_COUNT;
|
bind_counter = WFLY2_BIND_COUNT;
|
||||||
phase = WFLY2_DATA;
|
phase = WFLY2_DATA;
|
||||||
prev_option = option;
|
|
||||||
#ifdef WFLY2_HUB_TELEMETRY
|
#ifdef WFLY2_HUB_TELEMETRY
|
||||||
packet_count = 0;
|
packet_count = 0;
|
||||||
telemetry_lost = 1;
|
telemetry_lost = 1;
|
||||||
|
@ -477,7 +477,6 @@ uint16_t WK_setup()
|
|||||||
packet_count = 0;
|
packet_count = 0;
|
||||||
packet_sent = 0;
|
packet_sent = 0;
|
||||||
WK_last_beacon = 0;
|
WK_last_beacon = 0;
|
||||||
prev_option=option;
|
|
||||||
if(sub_protocol!=WK2801 || option==0)
|
if(sub_protocol!=WK2801 || option==0)
|
||||||
{
|
{
|
||||||
CYRF_GetMfgData(cyrfmfg_id);
|
CYRF_GetMfgData(cyrfmfg_id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user