1 #if !defined(_RADIOLIB_RADIOLIB_MORSE_H) && !defined(RADIOLIB_EXCLUDE_MORSE)
2 #define _RADIOLIB_RADIOLIB_MORSE_H
4 #include "../../TypeDef.h"
5 #include "../PhysicalLayer/PhysicalLayer.h"
6 #include "../AFSK/AFSK.h"
8 #define RADIOLIB_MORSE_DOT 0b0
9 #define RADIOLIB_MORSE_DASH 0b1
10 #define RADIOLIB_MORSE_GUARDBIT 0b1
11 #define RADIOLIB_MORSE_UNSUPORTED 0xFF
12 #define RADIOLIB_MORSE_ASCII_OFFSET 32
13 #define RADIOLIB_MORSE_INTER_SYMBOL 0x00
14 #define RADIOLIB_MORSE_CHAR_COMPLETE 0x01
15 #define RADIOLIB_MORSE_WORD_COMPLETE 0x02
21 static const uint8_t MorseTable[] RADIOLIB_NONVOLATILE = {
25 RADIOLIB_MORSE_UNSUPORTED,
26 RADIOLIB_MORSE_UNSUPORTED,
27 RADIOLIB_MORSE_UNSUPORTED,
28 RADIOLIB_MORSE_UNSUPORTED,
32 RADIOLIB_MORSE_UNSUPORTED,
49 RADIOLIB_MORSE_UNSUPORTED,
50 RADIOLIB_MORSE_UNSUPORTED,
52 RADIOLIB_MORSE_UNSUPORTED,
81 RADIOLIB_MORSE_UNSUPORTED,
82 RADIOLIB_MORSE_UNSUPORTED,
83 RADIOLIB_MORSE_UNSUPORTED,
102 #if !defined(RADIOLIB_EXCLUDE_AFSK)
122 int16_t
begin(
float base, uint8_t speed = 20);
140 static char decode(uint8_t symbol, uint8_t len);
155 #if !defined(RADIOLIB_EXCLUDE_AFSK)
156 int read(
byte* symbol,
byte* len,
float low = 0.75f,
float high = 1.25f);
159 size_t write(
const char* str);
160 size_t write(uint8_t* buff,
size_t len);
161 size_t write(uint8_t b);
163 #if defined(RADIOLIB_BUILD_ARDUINO)
164 size_t print(__FlashStringHelper*);
165 size_t print(
const String &);
167 size_t print(
const char[]);
169 size_t print(
unsigned char,
int = DEC);
170 size_t print(
int,
int = DEC);
171 size_t print(
unsigned int,
int = DEC);
172 size_t print(
long,
int = DEC);
173 size_t print(
unsigned long,
int = DEC);
174 size_t print(
double,
int = 2);
176 size_t println(
void);
177 #if defined(RADIOLIB_BUILD_ARDUINO)
178 size_t println(__FlashStringHelper*);
179 size_t println(
const String &);
181 size_t println(
const char[]);
182 size_t println(
char);
183 size_t println(
unsigned char,
int = DEC);
184 size_t println(
int,
int = DEC);
185 size_t println(
unsigned int,
int = DEC);
186 size_t println(
long,
int = DEC);
187 size_t println(
unsigned long,
int = DEC);
188 size_t println(
double,
int = 2);
190 #if !defined(RADIOLIB_GODMODE)
194 #if !defined(RADIOLIB_EXCLUDE_AFSK)
198 uint32_t _base = 0, _baseHz = 0;
199 float _basePeriod = 0.0f;
200 uint32_t _dotLength = 0;
201 uint32_t _dashLength = 0;
202 uint32_t _letterSpace = 0;
203 uint16_t _wordSpace = 0;
206 uint32_t signalCounter = 0;
207 uint32_t signalStart = 0;
208 uint32_t pauseCounter = 0;
209 uint32_t pauseStart = 0;
211 size_t printNumber(
unsigned long, uint8_t);
212 size_t printFloat(
double, uint8_t);
214 int16_t transmitDirect(uint32_t freq = 0, uint32_t freqHz = 0);
Client for audio-based transmissions. Requires Arduino tone() function, and a module capable of direc...
Definition: AFSK.h:17
Client for Morse Code communication. The public interface is the same as Arduino Serial.
Definition: Morse.h:93
size_t startSignal()
Send start signal.
Definition: Morse.cpp:36
int16_t begin(float base, uint8_t speed=20)
Initialization method.
Definition: Morse.cpp:18
int read(byte *symbol, byte *len, float low=0.75f, float high=1.25f)
Read Morse tone on input pin.
Definition: Morse.cpp:58
static char decode(uint8_t symbol, uint8_t len)
Decode Morse symbol to ASCII.
Definition: Morse.cpp:40
MorseClient(PhysicalLayer *phy)
Constructor for 2-FSK mode.
Definition: Morse.cpp:4
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:14