From 02fe9f3119f9c4aaf5495a06052d74d987fb430b Mon Sep 17 00:00:00 2001 From: jgromes <jan.gromes@gmail.com> Date: Wed, 18 Dec 2024 08:28:06 +0100 Subject: [PATCH] Remove dev files --- src/protocols/M17/M17.cpp | 168 -------------------------------------- src/protocols/M17/M17.h | 98 ---------------------- 2 files changed, 266 deletions(-) delete mode 100644 src/protocols/M17/M17.cpp delete mode 100644 src/protocols/M17/M17.h diff --git a/src/protocols/M17/M17.cpp b/src/protocols/M17/M17.cpp deleted file mode 100644 index cc77f559..00000000 --- a/src/protocols/M17/M17.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include "M17.h" - -#include "../../utils/CRC.h" - -#include <string.h> -#include <math.h> - -#if !RADIOLIB_EXCLUDE_M17 - -M17Client::M17Client(PhysicalLayer* phy) : FSK4Client(phy) { - phyLayer = phy; -} - -int16_t M17Client::begin(float base, char* addr) { - int16_t state = FSK4Client::begin(base, RADIOLIB_M17_SHIFT_HZ, RADIOLIB_M17_RATE_BAUD); - RADIOLIB_ASSERT(state); - - // FSK4: 0, 1600, 3200, 4800 - // M17: 800, 2400, -800, -2400 - int16_t offsets[] = { 800, 800, -4000, -7200 }; - FSK4Client::setCorrection(offsets); - - this->encodeAddr(addr, this->src); - - /*Module* mod = this->phyLayer->getMod(); - while(true) { - FSK4Client::write(0); - mod->hal->delay(1000); - FSK4Client::write(1); - mod->hal->delay(1000); - FSK4Client::write(2); - mod->hal->delay(1000); - FSK4Client::write(3); - mod->hal->delay(1000); - }*/ - - return(state); -} - -int16_t M17Client::transmit(uint8_t* data, size_t len, char* dst) { - uint8_t lsf[RADIOLIB_M17_LSF_MAXLEN_BYTES_ENCODED] = { 0 }; - size_t lsfLen = encodeLsf(dst, RADIOLIB_M17_LSF_MODE_PACKET | RADIOLIB_M17_LSF_DATA_TYPE_DATA | RADIOLIB_M17_LSF_ENC_NONE, lsf); - - // send preamble - for(size_t i = 0; i < RADIOLIB_M17_PRE_LEN_BYTES; i++) { - FSK4Client::write(RADIOLIB_M17_PRE_PATTERN_LSF); - } - - // send sync burst - FSK4Client::write(RADIOLIB_M17_SYNC_BURST_LSF >> 8); - FSK4Client::write(RADIOLIB_M17_SYNC_BURST_LSF & 0xFF); - - // send payload - FSK4Client::write(lsf, lsfLen); - - // dummy data - /*for(size_t i = 0; i < 200; i++) { - FSK4Client::write(0x00); - FSK4Client::write(0x55); - FSK4Client::write(0xAA); - FSK4Client::write(0xFF); - }*/ - - // send EOT - for(size_t i = 0; i < RADIOLIB_M17_EOT_LEN_BYTES / 2; i++) { - FSK4Client::write(RADIOLIB_M17_EOT_PATTERN >> 8); - FSK4Client::write(RADIOLIB_M17_EOT_PATTERN & 0xFF); - } - - return(RADIOLIB_ERR_NONE); -} - -int16_t M17Client::encodeAddr(char* in, uint8_t* out) { - //RADIOLIB_ASSERT_PTR(in); - //RADIOLIB_ASSERT_PTR(out); - - // TODO check max len and encodable/reserved addresses - uint64_t res = 0; - size_t len = strlen(in); - for(size_t i = 0; i < len; i++) { - uint8_t val = 0; - char c = in[i]; - if((c >= 'A') && (c <= 'Z')) { - val = c - 'A' + 1; - } else if((c >= '0') && (c <= '9')) { - val = c - '0' + 27; - } else if(c == '-') { - val = 37; - } else if(c == '/') { - val = 38; - } else if(c == '.') { - val = 39; - } else { - return(RADIOLIB_ERR_INVALID_CALLSIGN); - } - res += val * pow(40, i); - } - - // set the output - for(size_t i = 0; i < RADIOLIB_M17_ADDR_LEN; i++) { - out[i] = (res >> (i * 8)) & 0xFF; - } - - return(RADIOLIB_ERR_NONE); -} - -size_t M17Client::encodeLsf(char* dst, uint16_t type, uint8_t* out, uint8_t* meta, size_t metaLen) { - if(!out) { - return(0); - } - uint8_t* framePtr = out; - - // encode destination address - this->encodeAddr(dst, framePtr); - framePtr += RADIOLIB_M17_ADDR_LEN; - - // copy the source address - memcpy(framePtr, this->src, RADIOLIB_M17_ADDR_LEN); - framePtr += RADIOLIB_M17_ADDR_LEN; - - // set the type bits - (*framePtr++) = (type & 0xFF00) >> 8; - (*framePtr++) = type & 0x00FF; - - // TODO check meta + metaLen valid - if(meta) { - memcpy(framePtr, meta, metaLen); - } - framePtr += 14; - - // add CRC - RadioLibCRCInstance.size = 16; - RadioLibCRCInstance.poly = 0x5935; - RadioLibCRCInstance.init = 0xFFFF; - RadioLibCRCInstance.out = 0x0000; - uint16_t crc16 = RadioLibCRCInstance.checksum(out, 240/8 - sizeof(uint16_t)); - (*framePtr++) = (crc16 & 0xFF00) >> 8; - (*framePtr++) = crc16 & 0x00FF; - - // TODO add flush bits - framePtr++; - - // TODO convolutional encoding - framePtr+=30; - - // TODO puncturing - framePtr-=15; - - // TODO interleaving - - // randomize - size_t len = framePtr - out; - randomize(out, len); - return(len); -} - -void M17Client::randomize(uint8_t* buff, size_t len) { - if(!buff) { - return; - } - - for(size_t i = 0; i < len; i++) { - buff[i] ^= m17_randomizer[this->randIndex++]; - this->randIndex %= RADIOLIB_M17_RANDOMIZER_LEN; - } -} - -#endif diff --git a/src/protocols/M17/M17.h b/src/protocols/M17/M17.h deleted file mode 100644 index befbe693..00000000 --- a/src/protocols/M17/M17.h +++ /dev/null @@ -1,98 +0,0 @@ -#if !defined(_RADIOLIB_M17_H) -#define _RADIOLIB_M17_H - -#include "../../TypeDef.h" - -#if !RADIOLIB_EXCLUDE_M17 - -#include "../PhysicalLayer/PhysicalLayer.h" -#include "../FSK4/FSK4.h" - -// basic M17 properties -#define RADIOLIB_M17_SHIFT_HZ (1600) -#define RADIOLIB_M17_RATE_BAUD (4800) - -// preamble -#define RADIOLIB_M17_PRE_LEN_BYTES (192/4) -#define RADIOLIB_M17_PRE_PATTERN_LSF (0x77) -#define RADIOLIB_M17_PRE_PATTERN_BERT (0xDD) - -// end-of-transmission -#define RADIOLIB_M17_EOT_LEN_BYTES (192/4) -#define RADIOLIB_M17_EOT_PATTERN (0x555D) - -// sync-burst -#define RADIOLIB_M17_SYNC_BURST_LSF (0x55F7) -#define RADIOLIB_M17_SYNC_BURST_BERT (0xDF55) -#define RADIOLIB_M17_SYNC_BURST_STREAM (0xFF5D) -#define RADIOLIB_M17_SYNC_BURST_PACKET (0x75FF) - -// link setup frame (LFS) bit fields MSB LSB DESCRIPTION -#define RADIOLIB_M17_LSF_MODE_PACKET (0x00UL << 0) // 0 0 LSF packet/stream indicator: packet -#define RADIOLIB_M17_LSF_MODE_STREAM (0x01UL << 0) // 0 0 stream -#define RADIOLIB_M17_LSF_DATA_TYPE_DATA (0x01UL << 1) // 2 1 data type: data -#define RADIOLIB_M17_LSF_DATA_TYPE_VOICE (0x02UL << 1) // 2 1 voice -#define RADIOLIB_M17_LSF_DATA_TYPE_VOICE_DATA (0x03UL << 1) // 2 1 data + voice -#define RADIOLIB_M17_LSF_ENC_NONE (0x00UL << 3) // 4 3 encryption: none -#define RADIOLIB_M17_LSF_ENC_SCRAMBLER (0x01UL << 3) // 4 3 scrambler -#define RADIOLIB_M17_LSF_ENC_AES (0x02UL << 3) // 4 3 AES -#define RADIOLIB_M17_LSF_ENC_OTHER (0x03UL << 3) // 4 3 other -#define RADIOLIB_M17_LSF_AES_LEN_128 (0x00UL << 5) // 6 5 encryption key length: 128-bit -#define RADIOLIB_M17_LSF_AES_LEN_192 (0x01UL << 5) // 6 5 192-bit -#define RADIOLIB_M17_LSF_AES_LEN_256 (0x02UL << 5) // 6 5 256-bit -#define RADIOLIB_M17_LSF_SCRAMLER_LEN_8 (0x00UL << 5) // 6 5 scrambler length: 8-bit -#define RADIOLIB_M17_LSF_SCRAMLER_LEN_16 (0x01UL << 5) // 6 5 16-bit -#define RADIOLIB_M17_LSF_SCRAMLER_LEN_24 (0x02UL << 5) // 6 5 24-bit - -// maximum length of LSF frame before puncturing -#define RADIOLIB_M17_LSF_MAXLEN_BYTES_ENCODED (368/8) - -#define RADIOLIB_M17_ADDR_LEN (6) - -#define RADIOLIB_M17_RANDOMIZER_LEN (46) - -static const uint8_t m17_randomizer[RADIOLIB_M17_RANDOMIZER_LEN] = { - 0xD6, 0xB5, 0xE2, 0x30, 0x82, 0xFF, 0x84, 0x62, - 0xBA, 0x4E, 0x96, 0x90, 0xD8, 0x98, 0xDD, 0x5D, - 0x0C, 0xC8, 0x52, 0x43, 0x91, 0x1D, 0xF8, 0x6E, - 0x68, 0x2F, 0x35, 0xDA, 0x14, 0xEA, 0xCD, 0x76, - 0x19, 0x8D, 0xD5, 0x80, 0xD1, 0x33, 0x87, 0x13, - 0x57, 0x18, 0x2D, 0x29, 0x78, 0xC3 -}; - -/*! - \class M17Client - \brief Client for M17 transmissions. -*/ -class M17Client: public FSK4Client { - public: - /*! - \brief Constructor for 4-FSK mode. - \param phy Pointer to the wireless module providing PhysicalLayer communication. - */ - explicit M17Client(PhysicalLayer* phy); - - /*! - \brief Initialization method. - \param base Base (space) frequency to be used in MHz. - \returns \ref status_codes - */ - int16_t begin(float base, char* addr); - - int16_t transmit(uint8_t* data, size_t len, char* dst); - -#if !RADIOLIB_GODMODE - private: -#endif - PhysicalLayer* phyLayer; - uint8_t src[RADIOLIB_M17_ADDR_LEN] = { 0 }; - uint8_t randIndex = 0; - - int16_t encodeAddr(char* in, uint8_t* out); - size_t encodeLsf(char* dst, uint16_t type, uint8_t* out, uint8_t* meta = NULL, size_t metaLen = 0); - void randomize(uint8_t* buff, size_t len); -}; - -#endif - -#endif \ No newline at end of file