Pelikan/SCX24: fix?

This commit is contained in:
Pascal Langer 2021-04-17 22:55:43 +02:00
parent 34f16b0b66
commit 2a383c7285
2 changed files with 46 additions and 59 deletions

View File

@ -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 75 #define VERSION_PATCH_LEVEL 76
#define MODE_SERIAL 0 #define MODE_SERIAL 0

View File

@ -50,20 +50,20 @@ static void __attribute__((unused)) pelikan_build_packet()
if(sub_protocol == PELIKAN_SCX24) if(sub_protocol == PELIKAN_SCX24)
{ {
packet[1] = 0x65; packet[1] = 0x65; //??
packet[6] = 0x55; packet[6] = 0x55; //??
packet[7] = 0xAA; packet[7] = 0xAA; //??
} }
else else
{//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)
packet[6] = 0x05; //sub version?? packet[6] = 0x05; //sub version??
else //PELIKAN_LITE else //PELIKAN_LITE
packet[6] = 0x03; //sub version?? packet[6] = 0x03; //sub version??
packet[7] = 0x00; //?? packet[7] = 0x00; //??
} }
packet[8] = 0x55; //?? packet[8] = 0x55; //??
packet_length = 10; packet_length = 10;
} }
else else
@ -171,7 +171,7 @@ uint16_t PELIKAN_callback()
BIND_DONE; BIND_DONE;
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_SCX24)
A7105_WriteReg(A7105_03_FIFOI,0x0D); A7105_WriteReg(A7105_03_FIFOI,0x0D);
else//PELIKAN_LITE else//PELIKAN_LITE
@ -301,12 +301,11 @@ void PELIKAN_init()
if(IS_BIND_IN_PROGRESS || sub_protocol==PELIKAN_LITE) if(IS_BIND_IN_PROGRESS || sub_protocol==PELIKAN_LITE)
A7105_WriteReg(A7105_03_FIFOI,0x10); A7105_WriteReg(A7105_03_FIFOI,0x10);
pelikan_init_hop(); if(sub_protocol==PELIKAN_PRO)
{
//ID from dump pelikan_init_hop();
#if defined(PELIKAN_FORCE_ID) //ID from dump
if(sub_protocol==PELIKAN_PRO) #if defined(PELIKAN_FORCE_ID)
{
rx_tx_addr[0]=0x0D; // hopping freq rx_tx_addr[0]=0x0D; // hopping freq
rx_tx_addr[1]=0xF4; // hopping freq rx_tx_addr[1]=0xF4; // hopping freq
rx_tx_addr[2]=0x50; // ID rx_tx_addr[2]=0x50; // ID
@ -314,60 +313,48 @@ void PELIKAN_init()
// Fill frequency table // Fill frequency table
for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++) for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++)
hopping_frequency[i]=pgm_read_byte_near(&pelikan_hopp[0][i]); hopping_frequency[i]=pgm_read_byte_near(&pelikan_hopp[0][i]);
} #endif
#endif packet_period = PELIKAN_PACKET_PERIOD;
#if defined(PELIKAN_LITE_FORCE_ID) || defined(PELIKAN_LITE_FORCE_HOP) }
if(sub_protocol==PELIKAN_LITE) else if(sub_protocol==PELIKAN_LITE)
{
#if defined(PELIKAN_LITE_FORCE_ID)
// ID
rx_tx_addr[2]=0x60;
rx_tx_addr[3]=0x18;
#endif
#if defined(PELIKAN_LITE_FORCE_HOP)
// Hop frequency table
rx_tx_addr[0]=0x04; // hopping freq
rx_tx_addr[1]=0x63; // hopping freq
for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++)
hopping_frequency[i]=pgm_read_byte_near(&pelikan_lite_hopp[0][i]);
#endif
}
#endif
#if defined(PELIKAN_SCX24_FORCE_ID) || defined(PELIKAN_SCX24_FORCE_HOP)
if(sub_protocol==PELIKAN_SCX24)
{
#if defined(PELIKAN_SCX24_FORCE_ID)
// ID
rx_tx_addr[2]=0x80;
rx_tx_addr[3]=0x19;
#endif
#if defined(PELIKAN_SCX24_FORCE_HOP)
// Hop frequency table
rx_tx_addr[0]=0x12; // hopping freq
rx_tx_addr[1]=0x46; // hopping freq
for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++)
hopping_frequency[i]=pgm_read_byte_near(&pelikan_scx24_hopp[0][i]);
#endif
}
#endif
MProtocol_id = ((uint32_t)rx_tx_addr[0]<<24)|((uint32_t)rx_tx_addr[1]<<16)|((uint32_t)rx_tx_addr[2]<<8)|(rx_tx_addr[3]);
if(sub_protocol==PELIKAN_LITE)
{ {
#if defined(PELIKAN_LITE_FORCE_ID)
// ID
rx_tx_addr[2]=0x60;
rx_tx_addr[3]=0x18;
#endif
#if defined(PELIKAN_LITE_FORCE_HOP)
// Hop frequency table
rx_tx_addr[0]=0x04; // hopping freq
rx_tx_addr[1]=0x63; // hopping freq
for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++)
hopping_frequency[i]=pgm_read_byte_near(&pelikan_lite_hopp[0][i]);
#endif
MProtocol_id = ((uint32_t)rx_tx_addr[0]<<24)|((uint32_t)rx_tx_addr[1]<<16)|((uint32_t)rx_tx_addr[2]<<8)|(rx_tx_addr[3]);
if(IS_BIND_DONE) if(IS_BIND_DONE)
A7105_WriteID(MProtocol_id); A7105_WriteID(MProtocol_id);
packet_period = PELIKAN_LITE_PACKET_PERIOD; packet_period = PELIKAN_LITE_PACKET_PERIOD;
} }
else if(sub_protocol==PELIKAN_SCX24) else if(sub_protocol==PELIKAN_SCX24)
{ {
#if defined(PELIKAN_SCX24_FORCE_ID)
// ID
rx_tx_addr[2]=0x80;
rx_tx_addr[3]=0x19;
#endif
#if defined(PELIKAN_SCX24_FORCE_HOP)
// Hop frequency table
rx_tx_addr[0]=0x12; // hopping freq
rx_tx_addr[1]=0x46; // hopping freq
for(uint8_t i=0;i<PELIKAN_NUM_RF_CHAN;i++)
hopping_frequency[i]=pgm_read_byte_near(&pelikan_scx24_hopp[0][i]);
#endif
A7105_WriteReg(A7105_0E_DATA_RATE,0x03);
if(IS_BIND_DONE) if(IS_BIND_DONE)
A7105_WriteReg(A7105_03_FIFOI,0x0D); A7105_WriteReg(A7105_03_FIFOI,0x0D);
packet_period = PELIKAN_SCX24_PACKET_PERIOD; packet_period = PELIKAN_SCX24_PACKET_PERIOD;
} }
else//PELIKAN_PRO
packet_period = PELIKAN_PACKET_PERIOD;
hopping_frequency_no = PELIKAN_NUM_RF_CHAN; hopping_frequency_no = PELIKAN_NUM_RF_CHAN;
packet_count = 5; packet_count = 5;
phase = 0; phase = 0;