1 #if !defined(_RADIOLIB_PAGER_H) && !RADIOLIB_EXCLUDE_PAGER
2 #define _RADIOLIB_PAGER_H
4 #include "../../TypeDef.h"
5 #include "../PhysicalLayer/PhysicalLayer.h"
6 #include "../../utils/FEC.h"
9 #define RADIOLIB_PAGER_FREQ_SHIFT_HZ (4500)
12 #define RADIOLIB_PAGER_ASCII (0)
13 #define RADIOLIB_PAGER_BCD (1)
16 #define RADIOLIB_PAGER_PREAMBLE_LENGTH (18)
19 #define RADIOLIB_PAGER_PREAMBLE_CODE_WORD (0xAAAAAAAA)
20 #define RADIOLIB_PAGER_FRAME_SYNC_CODE_WORD (0x7CD215D8)
21 #define RADIOLIB_PAGER_IDLE_CODE_WORD (0x7A89C197)
24 #define RADIOLIB_PAGER_ADDRESS_CODE_WORD (0UL)
25 #define RADIOLIB_PAGER_MESSAGE_CODE_WORD (1UL)
28 #define RADIOLIB_PAGER_CODE_WORD_LEN (32)
31 #define RADIOLIB_PAGER_ADDRESS_POS (13)
32 #define RADIOLIB_PAGER_FUNC_BITS_POS (11)
33 #define RADIOLIB_PAGER_MESSAGE_BITS_LENGTH (20)
34 #define RADIOLIB_PAGER_MESSAGE_END_POS (11)
37 #define RADIOLIB_PAGER_BATCH_LEN (16)
40 #define RADIOLIB_PAGER_ADDRESS_BITS_MASK (0x7FFFE000UL)
43 #define RADIOLIB_PAGER_FUNCTION_BITS_MASK (0x00001800UL)
46 #define RADIOLIB_PAGER_BCH_BITS_MASK (0x000007FFUL)
49 #define RADIOLIB_PAGER_FUNC_BITS_NUMERIC (0b00)
50 #define RADIOLIB_PAGER_FUNC_BITS_TONE (0b01)
51 #define RADIOLIB_PAGER_FUNC_BITS_ACTIVATION (0b10)
52 #define RADIOLIB_PAGER_FUNC_BITS_ALPHA (0b11)
53 #define RADIOLIB_PAGER_FUNC_AUTO 0xFF
56 #define RADIOLIB_PAGER_ADDRESS_MAX (2097151)
80 int16_t
begin(
float base, uint16_t speed,
bool invert =
false, uint16_t shift = RADIOLIB_PAGER_FREQ_SHIFT_HZ);
89 #if defined(RADIOLIB_BUILD_ARDUINO)
98 int16_t
transmit(String& str, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD, uint8_t
function = RADIOLIB_PAGER_FUNC_AUTO);
109 int16_t
transmit(
const char* str, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD, uint8_t
function = RADIOLIB_PAGER_FUNC_AUTO);
120 int16_t
transmit(uint8_t* data,
size_t len, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD, uint8_t
function = RADIOLIB_PAGER_FUNC_AUTO);
122 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
131 int16_t
startReceive(uint32_t pin, uint32_t addr, uint32_t mask = 0xFFFFF);
141 int16_t
startReceive(uint32_t pin, uint32_t *addrs, uint32_t *masks,
size_t numAddress);
149 #if defined(RADIOLIB_BUILD_ARDUINO)
159 int16_t
readData(String& str,
size_t len = 0, uint32_t* addr = NULL);
172 int16_t
readData(uint8_t* data,
size_t* len, uint32_t* addr = NULL);
175 #if !RADIOLIB_GODMODE
182 uint32_t baseFreqRaw = 0;
183 uint16_t shiftFreq = 0;
184 uint16_t shiftFreqHz = 0;
186 uint32_t filterAddr = 0;
187 uint32_t filterMask = 0;
188 uint32_t *filterAddresses =
nullptr;
189 uint32_t *filterMasks =
nullptr;
190 size_t filterNumAddresses = 0;
193 void write(uint32_t* data,
size_t len);
194 void write(uint32_t codeWord);
195 int16_t startReceiveCommon();
196 bool addressMatched(uint32_t addr);
198 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
202 uint8_t encodeBCD(
char c);
203 char decodeBCD(uint8_t b);
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:135
unsigned long RadioLibTime_t
Type used for durations in RadioLib.
Definition: TypeDef.h:621