Remove Pelikan/SCX24 when MULTI_AIR

Save flash space
This commit is contained in:
pascallanger 2024-02-22 17:14:20 +01:00
parent babfee0f9e
commit 09ee173e3b

View File

@ -38,9 +38,11 @@ static void __attribute__((unused)) pelikan_build_packet()
uint8_t sum; uint8_t sum;
uint16_t channel; uint16_t channel;
#ifndef MULTI_AIR
if(sub_protocol == PELIKAN_SCX24) if(sub_protocol == PELIKAN_SCX24)
packet[0] = 0x11; packet[0] = 0x11;
else //PELIKAN_PRO & PELIKAN_LITE else //PELIKAN_PRO & PELIKAN_LITE
#endif
packet[0] = 0x15; packet[0] = 0x15;
if(IS_BIND_IN_PROGRESS) if(IS_BIND_IN_PROGRESS)
{ {
@ -49,6 +51,7 @@ static void __attribute__((unused)) pelikan_build_packet()
packet[4] = rx_tx_addr[2]; packet[4] = rx_tx_addr[2];
packet[5] = rx_tx_addr[3]; packet[5] = rx_tx_addr[3];
#ifndef MULTI_AIR
if(sub_protocol == PELIKAN_SCX24) if(sub_protocol == PELIKAN_SCX24)
{ {
packet[1] = 0x65; //?? packet[1] = 0x65; //??
@ -56,6 +59,7 @@ static void __attribute__((unused)) pelikan_build_packet()
packet[7] = 0xAA; //?? packet[7] = 0xAA; //??
} }
else else
#endif
{//PELIKAN_PRO & PELIKAN_LITE {//PELIKAN_PRO & PELIKAN_LITE
packet[1] = 0x04; //version?? packet[1] = 0x04; //version??
if(sub_protocol==PELIKAN_PRO) if(sub_protocol==PELIKAN_PRO)
@ -71,6 +75,7 @@ static void __attribute__((unused)) pelikan_build_packet()
{ {
//ID //ID
packet[1] = rx_tx_addr[0]; packet[1] = rx_tx_addr[0];
#ifndef MULTI_AIR
if(sub_protocol == PELIKAN_SCX24) if(sub_protocol == PELIKAN_SCX24)
{ {
//ID //ID
@ -96,6 +101,7 @@ static void __attribute__((unused)) pelikan_build_packet()
packet_length = 14; packet_length = 14;
} }
else else
#endif
{//PELIKAN_PRO & PELIKAN_LITE {//PELIKAN_PRO & PELIKAN_LITE
//ID //ID
packet[7] = rx_tx_addr[1]; packet[7] = rx_tx_addr[1];
@ -159,6 +165,13 @@ static void __attribute__((unused)) pelikan_build_packet()
uint16_t PELIKAN_callback() uint16_t PELIKAN_callback()
{ {
#ifdef MULTI_AIR
if(sub_protocol == PELIKAN_SCX24)
{
SUB_PROTO_INVALID;
return 10000;
}
#endif
if(phase==0) if(phase==0)
{ {
#ifndef FORCE_PELIKAN_TUNING #ifndef FORCE_PELIKAN_TUNING
@ -173,10 +186,12 @@ uint16_t PELIKAN_callback()
A7105_Strobe(A7105_STANDBY); A7105_Strobe(A7105_STANDBY);
if(sub_protocol==PELIKAN_PRO) if(sub_protocol==PELIKAN_PRO)
A7105_WriteReg(A7105_03_FIFOI,0x28); //???? A7105_WriteReg(A7105_03_FIFOI,0x28); //????
else if(sub_protocol==PELIKAN_SCX24) else if(sub_protocol==PELIKAN_LITE)
A7105_WriteReg(A7105_03_FIFOI,0x0D);
else//PELIKAN_LITE
A7105_WriteID(MProtocol_id); A7105_WriteID(MProtocol_id);
#ifndef MULTI_AIR
else // PELIKAN_SCX24
A7105_WriteReg(A7105_03_FIFOI,0x0D);
#endif
} }
} }
#ifdef MULTI_SYNC #ifdef MULTI_SYNC
@ -331,28 +346,6 @@ static uint8_t pelikan_add(uint8_t pfrq,uint8_t a, uint8_t limit)
return nfrq; return nfrq;
} }
const uint8_t PROGMEM scx_ch_map[4][PELIKAN_NUM_RF_CHAN] =
{
{0,1,2,26,27,28,23,24,25,20,21,22,17,18,19,14,15,16,11,12,13,8,9,10,5,6,7,4,3},
{0,1,2,28,25,26,27,24,21,22,23,20,17,18,19,16,13,14,15,12,9,10,11,8,5,6,7,3,4},
{0,1,27,28,25,26,23,24,21,22,19,20,17,18,15,16,13,14,11,12,9,10,7,8,5,6,3,4,2},
{0,1,28,1,4,2,23,26,22,24,27,25,17,20,16,18,21,19,11,14,10,12,15,13,27,8,6,7,9}
};
static void pelikan_shuffle(uint8_t j)
{
uint8_t temp[PELIKAN_NUM_RF_CHAN];
for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++)
{
temp[i] = hopping_frequency[scx_ch_map[j-1][i]];
}
for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++)
{
hopping_frequency[i] = temp[i];
}
}
static void __attribute__((unused)) pelikan_init_hop() static void __attribute__((unused)) pelikan_init_hop()
{ {
#define PELIKAN_HOP_LIMIT 70 #define PELIKAN_HOP_LIMIT 70
@ -381,6 +374,26 @@ static void __attribute__((unused)) pelikan_init_hop()
debugln(""); debugln("");
} }
#ifndef MULTI_AIR
const uint8_t PROGMEM scx_ch_map[4][PELIKAN_NUM_RF_CHAN] =
{
{0,1,2,26,27,28,23,24,25,20,21,22,17,18,19,14,15,16,11,12,13,8,9,10,5,6,7,4,3},
{0,1,2,28,25,26,27,24,21,22,23,20,17,18,19,16,13,14,15,12,9,10,11,8,5,6,7,3,4},
{0,1,27,28,25,26,23,24,21,22,19,20,17,18,15,16,13,14,11,12,9,10,7,8,5,6,3,4,2},
{0,1,28,1,4,2,23,26,22,24,27,25,17,20,16,18,21,19,11,14,10,12,15,13,27,8,6,7,9}
};
static void pelikan_shuffle(uint8_t j)
{
uint8_t temp[PELIKAN_NUM_RF_CHAN];
for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++)
temp[i] = hopping_frequency[pgm_read_byte_near(&scx_ch_map[j-1][i])];
for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++)
hopping_frequency[i] = temp[i];
}
static void __attribute__((unused)) pelikan_init_hop_scx() static void __attribute__((unused)) pelikan_init_hop_scx()
{ {
rx_tx_addr[0] = 0x10; rx_tx_addr[0] = 0x10;
@ -458,13 +471,24 @@ static void __attribute__((unused)) pelikan_init_hop_scx()
hopping_frequency[PELIKAN_NUM_RF_CHAN - 1] = last_channel; hopping_frequency[PELIKAN_NUM_RF_CHAN - 1] = last_channel;
} }
for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++) #ifdef DEBUG_SERIAL
{ for (uint8_t i = 0; i < PELIKAN_NUM_RF_CHAN; i++)
debug("%02X ", hopping_frequency[i]); debug("%02X ", hopping_frequency[i]);
} debugln("");
debugln(""); #endif
} }
#ifdef PELIKAN_SCX24_FORCE_HOP
const uint8_t PROGMEM pelikan_scx24_hopp[][PELIKAN_NUM_RF_CHAN] = {
/*TX1*/ { 0x1E,0x32,0x46,0x5A,0x44,0x58,0x2E,0x42,0x56,0x2C,0x40,0x54,0x2A,0x3E,0x52,0x28,0x3C,0x50,0x26,0x3A,0x4E,0x24,0x38,0x4C,0x22,0x36,0x4A,0x20,0x1A },
/*TX2*/ { 0x2C,0x44,0x1E,0x52,0x56,0x22,0x3A,0x3E,0x34,0x4C,0x26,0x5A,0x50,0x2A,0x42,0x38,0x2E,0x46,0x20,0x54,0x4A,0x24,0x3C,0x32,0x28,0x40,0x58,0x1B,0x4E },
/*TX3*/ { 0x3C,0x4C,0x1E,0x4A,0x5A,0x2C,0x58,0x2A,0x3A,0x56,0x28,0x38,0x26,0x36,0x46,0x34,0x44,0x54,0x42,0x52,0x24,0x50,0x22,0x32,0x4E,0x20,0x40,0x3E,0x17 },
/*TX4*/ { 0x46,0x32,0x1E,0x58,0x44,0x5A,0x56,0x42,0x2E,0x54,0x40,0x2C,0x52,0x3E,0x2A,0x50,0x3C,0x28,0x4E,0x3A,0x26,0x4C,0x38,0x24,0x4A,0x36,0x22,0x20,0x1A }
};
#endif //PELIKAN_SCX24_FORCE_HOP
#endif //MULTI_AIR
#ifdef PELIKAN_FORCE_ID #ifdef PELIKAN_FORCE_ID
const uint8_t PROGMEM pelikan_hopp[][PELIKAN_NUM_RF_CHAN] = { const uint8_t PROGMEM pelikan_hopp[][PELIKAN_NUM_RF_CHAN] = {
{ 0x5A,0x46,0x32,0x6E,0x6C,0x58,0x44,0x42,0x40,0x6A,0x56,0x54,0x52,0x3E,0x68,0x66,0x64,0x50,0x3C,0x3A,0x38,0x62,0x4E,0x4C,0x5E,0x4A,0x36,0x5C,0x34 } { 0x5A,0x46,0x32,0x6E,0x6C,0x58,0x44,0x42,0x40,0x6A,0x56,0x54,0x52,0x3E,0x68,0x66,0x64,0x50,0x3C,0x3A,0x38,0x62,0x4E,0x4C,0x5E,0x4A,0x36,0x5C,0x34 }
@ -476,14 +500,6 @@ const uint8_t PROGMEM pelikan_lite_hopp[][PELIKAN_NUM_RF_CHAN] = {
{ 0x46,0x2A,0x3E,0x5A,0x5C,0x24,0x4E,0x32,0x54,0x26,0x2C,0x34,0x56,0x1E,0x3A,0x3C,0x50,0x4A,0x2E,0x42,0x20,0x52,0x28,0x22,0x44,0x58,0x36,0x38,0x4C } { 0x46,0x2A,0x3E,0x5A,0x5C,0x24,0x4E,0x32,0x54,0x26,0x2C,0x34,0x56,0x1E,0x3A,0x3C,0x50,0x4A,0x2E,0x42,0x20,0x52,0x28,0x22,0x44,0x58,0x36,0x38,0x4C }
}; };
#endif #endif
#ifdef PELIKAN_SCX24_FORCE_HOP
const uint8_t PROGMEM pelikan_scx24_hopp[][PELIKAN_NUM_RF_CHAN] = {
/*TX1*/ { 0x1E,0x32,0x46,0x5A,0x44,0x58,0x2E,0x42,0x56,0x2C,0x40,0x54,0x2A,0x3E,0x52,0x28,0x3C,0x50,0x26,0x3A,0x4E,0x24,0x38,0x4C,0x22,0x36,0x4A,0x20,0x1A },
/*TX2*/ { 0x2C,0x44,0x1E,0x52,0x56,0x22,0x3A,0x3E,0x34,0x4C,0x26,0x5A,0x50,0x2A,0x42,0x38,0x2E,0x46,0x20,0x54,0x4A,0x24,0x3C,0x32,0x28,0x40,0x58,0x1B,0x4E },
/*TX3*/ { 0x3C,0x4C,0x1E,0x4A,0x5A,0x2C,0x58,0x2A,0x3A,0x56,0x28,0x38,0x26,0x36,0x46,0x34,0x44,0x54,0x42,0x52,0x24,0x50,0x22,0x32,0x4E,0x20,0x40,0x3E,0x17 },
/*TX4*/ { 0x46,0x32,0x1E,0x58,0x44,0x5A,0x56,0x42,0x2E,0x54,0x40,0x2C,0x52,0x3E,0x2A,0x50,0x3C,0x28,0x4E,0x3A,0x26,0x4C,0x38,0x24,0x4A,0x36,0x22,0x20,0x1A }
};
#endif
void PELIKAN_init() void PELIKAN_init()
{ {
@ -530,6 +546,7 @@ void PELIKAN_init()
A7105_WriteID(MProtocol_id); A7105_WriteID(MProtocol_id);
packet_period = PELIKAN_LITE_PACKET_PERIOD; packet_period = PELIKAN_LITE_PACKET_PERIOD;
} }
#ifndef MULTI_AIR
else// if(sub_protocol==PELIKAN_SCX24) else// if(sub_protocol==PELIKAN_SCX24)
{ {
pelikan_init_hop_scx(); pelikan_init_hop_scx();
@ -574,6 +591,7 @@ void PELIKAN_init()
A7105_WriteReg(A7105_03_FIFOI,0x0D); A7105_WriteReg(A7105_03_FIFOI,0x0D);
packet_period = PELIKAN_SCX24_PACKET_PERIOD; packet_period = PELIKAN_SCX24_PACKET_PERIOD;
} }
#endif //MULTI_AIR
} }
hopping_frequency_no = PELIKAN_NUM_RF_CHAN; hopping_frequency_no = PELIKAN_NUM_RF_CHAN;