mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 15:58:12 +00:00
Fix XN297Dump enhanced payload detection
This commit is contained in:
parent
09f39ea60f
commit
c52ac2cefc
@ -119,29 +119,34 @@ static boolean __attribute__((unused)) XN297Dump_process_packet(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Try enhanced payload
|
//Try enhanced payload
|
||||||
crc = 0xb5d2;
|
uint16_t crc_save = 0xb5d2;
|
||||||
packet_length=0;
|
packet_length=0;
|
||||||
for (uint8_t i = 0; i < XN297DUMP_MAX_PACKET_LEN-XN297DUMP_CRC_LENGTH; i++)
|
for (uint8_t i = 0; i < XN297DUMP_MAX_PACKET_LEN-XN297DUMP_CRC_LENGTH; i++)
|
||||||
{
|
{
|
||||||
packet_sc[i]=packet[i]^xn297_scramble[i];
|
packet_sc[i]=packet[i]^xn297_scramble[i];
|
||||||
|
crc = crc_save;
|
||||||
crc16_update( packet[i], 8);
|
crc16_update( packet[i], 8);
|
||||||
|
crc_save = crc;
|
||||||
crc16_update( packet[i+1] & 0xC0, 2);
|
crc16_update( packet[i+1] & 0xC0, 2);
|
||||||
crcxored=(packet[i+1]<<10)|(packet[i+2]<<2)|(packet[i+3]>>6) ;
|
crcxored=(packet[i+1]<<10)|(packet[i+2]<<2)|(packet[i+3]>>6) ;
|
||||||
if((crc ^ pgm_read_word(&xn297_crc_xorout_scrambled_enhanced[i - 3])) == crcxored)
|
if(i>=3)
|
||||||
{ // Found a valid CRC for the enhanced payload mode
|
{
|
||||||
packet_length=i;
|
if((crc ^ pgm_read_word(&xn297_crc_xorout_scrambled_enhanced[i - 3])) == crcxored)
|
||||||
scramble=true;
|
{ // Found a valid CRC for the enhanced payload mode
|
||||||
i++;
|
packet_length=i;
|
||||||
packet_sc[i]=packet[i]^xn297_scramble[i];
|
scramble=true;
|
||||||
memcpy(packet_un,packet_sc,packet_length+2); // unscramble packet
|
i++;
|
||||||
break;
|
packet_sc[i]=packet[i]^xn297_scramble[i];
|
||||||
}
|
memcpy(packet_un,packet_sc,packet_length+2); // unscramble packet
|
||||||
if((crc ^ pgm_read_word(&xn297_crc_xorout_enhanced[i - 3])) == crcxored)
|
break;
|
||||||
{ // Found a valid CRC for the enhanced payload mode
|
}
|
||||||
packet_length=i;
|
if((crc ^ pgm_read_word(&xn297_crc_xorout_enhanced[i - 3])) == crcxored)
|
||||||
scramble=false;
|
{ // Found a valid CRC for the enhanced payload mode
|
||||||
memcpy(packet_un,packet,packet_length+2); // packet is unscrambled
|
packet_length=i;
|
||||||
break;
|
scramble=false;
|
||||||
|
memcpy(packet_un,packet,packet_length+2); // packet is unscrambled
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(packet_length!=0)
|
if(packet_length!=0)
|
||||||
@ -324,7 +329,7 @@ static uint16_t XN297Dump_callback()
|
|||||||
switch(bitrate)
|
switch(bitrate)
|
||||||
{
|
{
|
||||||
case XN297DUMP_250K:
|
case XN297DUMP_250K:
|
||||||
XN297_Configure(XN297_CRCEN, scramble?XN297_SCRAMBLED:XN297_UNSCRAMBLED, XN297_250K);
|
XN297_Configure(XN297_CRCEN, scramble?XN297_SCRAMBLED:XN297_UNSCRAMBLED, XN297_250K, true);
|
||||||
debug("250K");
|
debug("250K");
|
||||||
break;
|
break;
|
||||||
case XN297DUMP_2M:
|
case XN297DUMP_2M:
|
||||||
|
@ -53,7 +53,7 @@ const uint16_t xn297_crc_xorout_enhanced[] = {
|
|||||||
0xABFC, 0xE68E, 0x0DE7, 0x28A2, 0x1965 };
|
0xABFC, 0xE68E, 0x0DE7, 0x28A2, 0x1965 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool __attribute__((unused)) XN297_Configure(bool crc_en, bool scramble_en, bool bitrate)
|
static bool __attribute__((unused)) XN297_Configure(bool crc_en, bool scramble_en, bool bitrate, bool force_nrf)
|
||||||
{
|
{
|
||||||
xn297_crc = crc_en;
|
xn297_crc = crc_en;
|
||||||
xn297_scramble_enabled = scramble_en;
|
xn297_scramble_enabled = scramble_en;
|
||||||
@ -61,7 +61,7 @@ static bool __attribute__((unused)) XN297_Configure(bool crc_en, bool scramble_e
|
|||||||
xn297_rf = XN297_NRF;
|
xn297_rf = XN297_NRF;
|
||||||
|
|
||||||
#if defined(NRF24L01_INSTALLED) and defined(CC2500_INSTALLED)
|
#if defined(NRF24L01_INSTALLED) and defined(CC2500_INSTALLED)
|
||||||
if(bitrate == XN297_1M)
|
if(bitrate == XN297_1M || force_nrf)
|
||||||
xn297_rf = XN297_NRF; // Use NRF24L01
|
xn297_rf = XN297_NRF; // Use NRF24L01
|
||||||
else
|
else
|
||||||
xn297_rf = XN297_CC2500; // Use CC2500
|
xn297_rf = XN297_CC2500; // Use CC2500
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// Functions
|
// Functions
|
||||||
static bool __attribute__((unused)) XN297_Configure(bool, bool, bool);
|
static bool __attribute__((unused)) XN297_Configure(bool, bool, bool, bool force_nrf=false);
|
||||||
static void __attribute__((unused)) XN297_SetTXAddr(const uint8_t*, uint8_t);
|
static void __attribute__((unused)) XN297_SetTXAddr(const uint8_t*, uint8_t);
|
||||||
static void __attribute__((unused)) XN297_SetRXAddr(const uint8_t*, uint8_t);
|
static void __attribute__((unused)) XN297_SetRXAddr(const uint8_t*, uint8_t);
|
||||||
static void __attribute__((unused)) XN297_SetTxRxMode(enum TXRX_State);
|
static void __attribute__((unused)) XN297_SetTxRxMode(enum TXRX_State);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user