1 #if !defined(_RADIOLIB_PAGER_H) && !defined(RADIOLIB_EXCLUDE_PAGER)
2 #define _RADIOLIB_PAGER_H
4 #include "../../TypeDef.h"
5 #include "../PhysicalLayer/PhysicalLayer.h"
8 #define RADIOLIB_PAGER_FREQ_SHIFT_HZ (4500)
11 #define RADIOLIB_PAGER_ASCII (0)
12 #define RADIOLIB_PAGER_BCD (1)
15 #define RADIOLIB_PAGER_PREAMBLE_LENGTH (18)
18 #define RADIOLIB_PAGER_PREAMBLE_CODE_WORD (0xAAAAAAAA)
19 #define RADIOLIB_PAGER_FRAME_SYNC_CODE_WORD (0x7CD215D8)
20 #define RADIOLIB_PAGER_IDLE_CODE_WORD (0x7A89C197)
23 #define RADIOLIB_PAGER_ADDRESS_CODE_WORD (0UL)
24 #define RADIOLIB_PAGER_MESSAGE_CODE_WORD (1UL)
27 #define RADIOLIB_PAGER_CODE_WORD_LEN (32)
30 #define RADIOLIB_PAGER_ADDRESS_POS (13)
31 #define RADIOLIB_PAGER_FUNC_BITS_POS (11)
32 #define RADIOLIB_PAGER_MESSAGE_BITS_LENGTH (20)
33 #define RADIOLIB_PAGER_MESSAGE_END_POS (11)
36 #define RADIOLIB_PAGER_BATCH_LEN (16)
39 #define RADIOLIB_PAGER_ADDRESS_BITS_MASK (0x7FFFE000UL)
42 #define RADIOLIB_PAGER_FUNCTION_BITS_MASK (0x00001800UL)
45 #define RADIOLIB_PAGER_BCH_BITS_MASK (0x000007FFUL)
48 #define RADIOLIB_PAGER_FUNC_BITS_NUMERIC (0b00UL << RADIOLIB_PAGER_FUNC_BITS_POS)
49 #define RADIOLIB_PAGER_FUNC_BITS_TONE (0b01UL << RADIOLIB_PAGER_FUNC_BITS_POS)
50 #define RADIOLIB_PAGER_FUNC_BITS_ALPHA (0b11UL << RADIOLIB_PAGER_FUNC_BITS_POS)
53 #define RADIOLIB_PAGER_ADDRESS_MAX (2097151)
56 #define RADIOLIB_PAGER_BCH_M (5)
57 #define RADIOLIB_PAGER_BCH_N (31)
58 #define RADIOLIB_PAGER_BCH_K (21)
59 #define RADIOLIB_PAGER_BCH_D (5)
62 #define RADIOLIB_PAGER_BCH_PRIMITIVE_POLY (0x25)
93 int16_t
begin(
float base, uint16_t speed,
bool invert =
false, uint16_t shift = RADIOLIB_PAGER_FREQ_SHIFT_HZ);
104 #if defined(RADIOLIB_BUILD_ARDUINO)
116 int16_t
transmit(String& str, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD);
130 int16_t
transmit(
const char* str, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD);
145 int16_t
transmit(uint8_t* data,
size_t len, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD);
148 #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
160 int16_t
startReceive(RADIOLIB_PIN_TYPE pin, uint32_t addr, uint32_t mask = 0xFFFFF);
169 #if defined(RADIOLIB_BUILD_ARDUINO)
182 int16_t
readData(String& str,
size_t len = 0, uint32_t* addr = NULL);
198 int16_t
readData(uint8_t* data,
size_t* len, uint32_t* addr = NULL);
201 #if !defined(RADIOLIB_GODMODE)
211 uint16_t _bitDuration;
212 uint32_t _filterAddr;
213 uint32_t _filterMask;
217 int32_t _bchAlphaTo[RADIOLIB_PAGER_BCH_N + 1];
218 int32_t _bchIndexOf[RADIOLIB_PAGER_BCH_N + 1];
219 int32_t _bchG[RADIOLIB_PAGER_BCH_N - RADIOLIB_PAGER_BCH_K + 1];
221 void write(uint32_t* data,
size_t len);
222 void write(uint32_t codeWord);
224 #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
228 uint8_t encodeBCD(
char c);
229 char decodeBCD(uint8_t b);
232 uint32_t encodeBCH(uint32_t data);
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:14