From 3f77f59c8a40b3eeed557935bd3e22c2d6545dc7 Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Thu, 6 Jun 2019 01:15:28 +0200 Subject: [PATCH] XN297L emu scramble option --- Multiprotocol/Multiprotocol.h | 2 +- Multiprotocol/NRF24l01_SPI.ino | 4 +--- Multiprotocol/Q303_nrf24l01.ino | 1 - Multiprotocol/XN297L_EMU.ino | 20 +++++++++++++++----- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index 5f685c1..5fc72ec 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 2 #define VERSION_REVISION 1 -#define VERSION_PATCH_LEVEL 56 +#define VERSION_PATCH_LEVEL 57 //****************** // Protocols diff --git a/Multiprotocol/NRF24l01_SPI.ino b/Multiprotocol/NRF24l01_SPI.ino index c1203e9..abe20cc 100644 --- a/Multiprotocol/NRF24l01_SPI.ino +++ b/Multiprotocol/NRF24l01_SPI.ino @@ -389,8 +389,7 @@ void XN297_WritePayload(uint8_t* msg, uint8_t len) for (uint8_t i = 0; i < len; ++i) { // bit-reverse bytes in packet - uint8_t b_out = bit_reverse(msg[i]); - buf[last] = b_out; + buf[last] = bit_reverse(msg[i]); if(xn297_scramble_enabled) buf[last] ^= xn297_scramble[xn297_addr_len+i]; last++; @@ -411,7 +410,6 @@ void XN297_WritePayload(uint8_t* msg, uint8_t len) NRF24L01_WritePayload(buf, last); } - void XN297_WriteEnhancedPayload(uint8_t* msg, uint8_t len, uint8_t noack) { uint8_t packet[32]; diff --git a/Multiprotocol/Q303_nrf24l01.ino b/Multiprotocol/Q303_nrf24l01.ino index 54ba17e..9eee446 100644 --- a/Multiprotocol/Q303_nrf24l01.ino +++ b/Multiprotocol/Q303_nrf24l01.ino @@ -292,7 +292,6 @@ static void __attribute__((unused)) Q303_init() case CX35: case CX10D: case CX10WD: - XN297_SetScrambledMode(XN297_SCRAMBLED); NRF24L01_SetBitrate(NRF24L01_BR_1M); break; case Q303: diff --git a/Multiprotocol/XN297L_EMU.ino b/Multiprotocol/XN297L_EMU.ino index ef0bfd9..1c407bc 100644 --- a/Multiprotocol/XN297L_EMU.ino +++ b/Multiprotocol/XN297L_EMU.ino @@ -66,6 +66,7 @@ static void __attribute__((unused)) XN297L_Init() CC2500_SetTxRxMode(TX_EN); CC2500_SetPower(); + xn297_scramble_enabled=XN297_SCRAMBLED; //enabled by default } static void __attribute__((unused)) XN297L_SetTXAddr(const uint8_t* addr, uint8_t len) @@ -84,22 +85,31 @@ static void __attribute__((unused)) XN297L_WritePayload(uint8_t* msg, uint8_t le static const uint16_t initial = 0xb5d2; // address - for (i = 0; i < xn297_addr_len; ++i) { - buf[last++] = xn297_tx_addr[xn297_addr_len - i - 1] ^ xn297_scramble[i]; + for (i = 0; i < xn297_addr_len; ++i) + { + buf[last] = xn297_tx_addr[xn297_addr_len - i - 1]; + if(xn297_scramble_enabled) + buf[last] ^= xn297_scramble[i]; + last++; } // payload for (i = 0; i < len; ++i) { // bit-reverse bytes in packet - uint8_t b_out = bit_reverse(msg[i]); - buf[last++] = b_out ^ xn297_scramble[xn297_addr_len + i]; + buf[last] = bit_reverse(msg[i]); + if(xn297_scramble_enabled) + buf[last] ^= xn297_scramble[xn297_addr_len+i]; + last++; } // crc uint16_t crc = initial; for (uint8_t i = 0; i < last; ++i) crc = crc16_update(crc, buf[i], 8); - crc ^= pgm_read_word(&xn297_crc_xorout_scrambled[xn297_addr_len - 3 + len]); + if(xn297_scramble_enabled) + crc ^= pgm_read_word(&xn297_crc_xorout_scrambled[xn297_addr_len - 3 + len]); + else + crc ^= pgm_read_word(&xn297_crc_xorout[xn297_addr_len - 3 + len]); buf[last++] = crc >> 8; buf[last++] = crc & 0xff;