1 #if !defined(_RADIOLIB_PHYSICAL_LAYER_H)
2 #define _RADIOLIB_PHYSICAL_LAYER_H
4 #include "../../TypeDef.h"
5 #include "../../Module.h"
39 int16_t
transmit(__FlashStringHelper* fstr, uint8_t addr = 0);
50 int16_t
transmit(String& str, uint8_t addr = 0);
61 int16_t
transmit(
const char* str, uint8_t addr = 0);
74 virtual int16_t
transmit(uint8_t* data,
size_t len, uint8_t addr = 0);
85 int16_t
receive(String& str,
size_t len = 0);
99 virtual int16_t
standby(uint8_t mode);
110 virtual int16_t
receive(uint8_t* data,
size_t len);
147 virtual int16_t
startTransmit(uint8_t* data,
size_t len, uint8_t addr = 0);
166 int16_t
readData(String& str,
size_t len = 0);
178 virtual int16_t
readData(uint8_t* data,
size_t len);
268 int32_t
random(int32_t max);
279 int32_t
random(int32_t min, int32_t max);
295 #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
319 virtual void readBit(RADIOLIB_PIN_TYPE pin);
340 uint8_t
read(
bool drop =
true);
352 virtual int16_t
setDIOMapping(RADIOLIB_PIN_TYPE pin, uint8_t value);
354 #if defined(RADIOLIB_INTERRUPT_TIMING)
362 void setInterruptSetup(
void (*func)(uint32_t));
372 #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
374 void updateDirectBuffer(uint8_t bit);
377 #if !defined(RADIOLIB_GODMODE)
381 size_t _maxPacketLength;
383 #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
384 uint8_t _bufferBitPos;
385 uint8_t _bufferWritePos;
386 uint8_t _bufferReadPos;
387 uint8_t _buffer[RADIOLIB_STATIC_ARRAY_SIZE];
388 uint32_t _syncBuffer;
389 uint32_t _directSyncWord;
390 uint8_t _directSyncWordLen;
391 uint32_t _directSyncWordMask;
395 virtual Module* getMod() = 0;
Client for audio-based transmissions. Requires Arduino tone() function, and a module capable of direc...
Definition: AFSK.h:17
Client for AX25 communication.
Definition: AX25.h:279
Client for FSK-4 communication. The public interface is the same as Arduino Serial.
Definition: FSK4.h:16
Client for Hellschreiber transmissions.
Definition: Hellschreiber.h:89
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:16
Client for Morse Code communication. The public interface is the same as Arduino Serial.
Definition: Morse.h:93
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:14
virtual uint8_t randomByte()
Get one truly random byte from RSSI noise. Must be implemented in module class.
Definition: PhysicalLayer.cpp:260
virtual int16_t finishTransmit()
Clean up after transmission is done.
Definition: PhysicalLayer.cpp:136
virtual int16_t setFrequencyDeviation(float freqDev)
Sets FSK frequency deviation from carrier frequency. Only available in FSK mode. Must be implemented ...
Definition: PhysicalLayer.cpp:208
virtual size_t getPacketLength(bool update=true)
Query modem for the packet length of received payload. Must be implemented in module class.
Definition: PhysicalLayer.cpp:227
void dropSync()
Forcefully drop synchronization.
Definition: PhysicalLayer.cpp:283
virtual int16_t setDIOMapping(RADIOLIB_PIN_TYPE pin, uint8_t value)
Configure DIO pin mapping to get a given signal on a DIO pin (if available).
Definition: PhysicalLayer.cpp:361
uint8_t read(bool drop=true)
Get data from direct mode buffer.
Definition: PhysicalLayer.cpp:290
PhysicalLayer(float freqStep, size_t maxPacketLength)
Default constructor.
Definition: PhysicalLayer.cpp:3
int16_t startDirect()
Configure module parameters for direct modes. Must be called prior to "ham" modes like RTTY or AX....
Definition: PhysicalLayer.cpp:264
virtual int16_t setFrequency(float freq)
Sets carrier frequency. Must be implemented in module class.
Definition: PhysicalLayer.cpp:198
int16_t setDirectSyncWord(uint32_t syncWord, uint8_t len)
Set sync word to be used to determine start of packet in direct reception mode.
Definition: PhysicalLayer.cpp:298
float getFreqStep() const
Gets the module frequency step size that was set in constructor.
Definition: PhysicalLayer.cpp:223
virtual int16_t transmitDirect(uint32_t frf=0)
Enables direct transmission mode on pins DIO1 (clock) and DIO2 (data). Must be implemented in module ...
Definition: PhysicalLayer.cpp:189
int16_t transmit(__FlashStringHelper *fstr, uint8_t addr=0)
Arduino Flash String transmit method.
Definition: PhysicalLayer.cpp:12
int16_t available()
Get the number of direct mode bytes currently available in buffer.
Definition: PhysicalLayer.cpp:279
virtual void setDirectAction(void(*func)(void))
Set interrupt service routine function to call when data bit is receveid in direct mode....
Definition: PhysicalLayer.cpp:351
virtual int16_t setEncoding(uint8_t encoding)
Sets FSK data encoding. Only available in FSK mode. Must be implemented in module class.
Definition: PhysicalLayer.cpp:218
virtual int16_t standby()
Sets module to standby.
Definition: PhysicalLayer.cpp:113
int32_t random(int32_t max)
Get truly random number in range 0 - max.
Definition: PhysicalLayer.cpp:232
virtual int16_t receiveDirect()
Enables direct reception mode on pins DIO1 (clock) and DIO2 (data). Must be implemented in module cla...
Definition: PhysicalLayer.cpp:194
virtual void readBit(RADIOLIB_PIN_TYPE pin)
Function to read and process data bit in direct reception mode. Must be implemented in module class.
Definition: PhysicalLayer.cpp:355
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:140
virtual int16_t setDataShaping(uint8_t sh)
Sets GFSK data shaping. Only available in FSK mode. Must be implemented in module class.
Definition: PhysicalLayer.cpp:213
virtual int16_t setBitRate(float br)
Sets FSK bit rate. Only available in FSK mode. Must be implemented in module class.
Definition: PhysicalLayer.cpp:203
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition: PhysicalLayer.cpp:121
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:60
Client for RTTY communication. The public interface is the same as Arduino Serial.
Definition: RTTY.h:88
Client for SSTV transmissions.
Definition: SSTV.h:120