RadioLib
Universal wireless communication library for Arduino
Loading...
Searching...
No Matches
PhysicalLayer.h
1#if !defined(_RADIOLIB_PHYSICAL_LAYER_H)
2#define _RADIOLIB_PHYSICAL_LAYER_H
3
4#include "../../TypeDef.h"
5#include "../../Module.h"
6
7// common IRQ values - the IRQ flags in RadioLibIrqFlags_t arguments are offset by this value
8enum RadioLibIrqType_t {
9 RADIOLIB_IRQ_TX_DONE = 0x00,
10 RADIOLIB_IRQ_RX_DONE = 0x01,
11 RADIOLIB_IRQ_PREAMBLE_DETECTED = 0x02,
12 RADIOLIB_IRQ_SYNC_WORD_VALID = 0x03,
13 RADIOLIB_IRQ_HEADER_VALID = 0x04,
14 RADIOLIB_IRQ_HEADER_ERR = 0x05,
15 RADIOLIB_IRQ_CRC_ERR = 0x06,
16 RADIOLIB_IRQ_CAD_DONE = 0x07,
17 RADIOLIB_IRQ_CAD_DETECTED = 0x08,
18 RADIOLIB_IRQ_TIMEOUT = 0x09,
19 RADIOLIB_IRQ_NOT_SUPPORTED = 0x1F, // this must be the last value, intentionally set to 31
20};
21
22// some commonly used default values - defined here to ensure all modules have the same default behavior
23#define RADIOLIB_IRQ_RX_DEFAULT_FLAGS ((1UL << RADIOLIB_IRQ_RX_DONE) | (1UL << RADIOLIB_IRQ_TIMEOUT) | (1UL << RADIOLIB_IRQ_CRC_ERR) | (1UL << RADIOLIB_IRQ_HEADER_VALID) | (1UL << RADIOLIB_IRQ_HEADER_ERR))
24#define RADIOLIB_IRQ_RX_DEFAULT_MASK ((1UL << RADIOLIB_IRQ_RX_DONE))
25#define RADIOLIB_IRQ_CAD_DEFAULT_FLAGS ((1UL << RADIOLIB_IRQ_CAD_DETECTED) | (1UL << RADIOLIB_IRQ_CAD_DONE))
26#define RADIOLIB_IRQ_CAD_DEFAULT_MASK ((1UL << RADIOLIB_IRQ_CAD_DETECTED) | (1UL << RADIOLIB_IRQ_CAD_DONE))
27
32struct LoRaRate_t {
35
37 float bandwidth;
38
40 uint8_t codingRate;
41};
42
47struct FSKRate_t {
49 float bitRate;
50
52 float freqDev;
53};
54
61 uint8_t bw;
62
64 uint8_t cr;
65
68};
69
84
111
118 float limit;
119};
120
132
135 uint8_t mode;
136};
137
151
154 const uint8_t* data;
155
157 size_t len;
158
160 uint8_t addr;
161};
162
165 uint8_t mode;
166};
167
184
189enum ModemType_t {
190 RADIOLIB_MODEM_FSK = 0,
191 RADIOLIB_MODEM_LORA,
192 RADIOLIB_MODEM_LRFHSS,
193};
194
199enum RadioModeType_t {
200 RADIOLIB_RADIO_MODE_NONE = 0,
201 RADIOLIB_RADIO_MODE_STANDBY,
202 RADIOLIB_RADIO_MODE_RX,
203 RADIOLIB_RADIO_MODE_TX,
204 RADIOLIB_RADIO_MODE_SCAN,
205 RADIOLIB_RADIO_MODE_SLEEP,
206};
207
217 public:
218
219 // constructor
220
226 PhysicalLayer(float step, size_t maxLen);
227
228 // basic methods
229
230 #if defined(RADIOLIB_BUILD_ARDUINO)
237 int16_t transmit(__FlashStringHelper* fstr, uint8_t addr = 0);
238
245 int16_t transmit(String& str, uint8_t addr = 0);
246 #endif
247
254 int16_t transmit(const char* str, uint8_t addr = 0);
255
263 virtual int16_t transmit(const uint8_t* data, size_t len, uint8_t addr = 0);
264
265 #if defined(RADIOLIB_BUILD_ARDUINO)
272 int16_t receive(String& str, size_t len = 0);
273 #endif
274
279 virtual int16_t sleep();
280
285 virtual int16_t standby();
286
291 virtual int16_t standby(uint8_t mode);
292
297 virtual int16_t startReceive();
298
309 virtual int16_t startReceive(uint32_t timeout, RadioLibIrqFlags_t irqFlags = RADIOLIB_IRQ_RX_DEFAULT_FLAGS, RadioLibIrqFlags_t irqMask = RADIOLIB_IRQ_RX_DEFAULT_MASK, size_t len = 0);
310
317 virtual int16_t receive(uint8_t* data, size_t len);
318
319 #if defined(RADIOLIB_BUILD_ARDUINO)
327 int16_t startTransmit(String& str, uint8_t addr = 0);
328 #endif
329
337 int16_t startTransmit(const char* str, uint8_t addr = 0);
338
346 virtual int16_t startTransmit(const uint8_t* data, size_t len, uint8_t addr = 0);
347
352 virtual int16_t finishTransmit();
353
354 #if defined(RADIOLIB_BUILD_ARDUINO)
362 int16_t readData(String& str, size_t len = 0);
363 #endif
364
372 virtual int16_t readData(uint8_t* data, size_t len);
373
380 virtual int16_t transmitDirect(uint32_t frf = 0);
381
387 virtual int16_t receiveDirect();
388
389 // configuration methods
390
396 virtual int16_t setFrequency(float freq);
397
403 virtual int16_t setBitRate(float br);
404
411 virtual int16_t setFrequencyDeviation(float freqDev);
412
418 virtual int16_t setDataShaping(uint8_t sh);
419
425 virtual int16_t setEncoding(uint8_t encoding);
426
432 virtual int16_t invertIQ(bool enable);
433
439 virtual int16_t setOutputPower(int8_t power);
440
447 virtual int16_t checkOutputPower(int8_t power, int8_t* clipped);
448
455 virtual int16_t setSyncWord(uint8_t* sync, size_t len);
456
462 virtual int16_t setPreambleLength(size_t len);
463
469 virtual int16_t setDataRate(DataRate_t dr);
470
476 virtual int16_t checkDataRate(DataRate_t dr);
477
482 float getFreqStep() const;
483
489 virtual size_t getPacketLength(bool update = true);
490
495 virtual float getRSSI();
496
501 virtual float getSNR();
502
508 virtual RadioLibTime_t getTimeOnAir(size_t len);
509
517
523 uint32_t getIrqMapped(RadioLibIrqFlags_t irq);
524
530 int16_t checkIrq(RadioLibIrqType_t irq);
531
539 int16_t setIrq(RadioLibIrqFlags_t irq);
540
548 int16_t clearIrq(RadioLibIrqFlags_t irq);
549
555 virtual uint32_t getIrqFlags();
556
563 virtual int16_t setIrqFlags(uint32_t irq);
564
571 virtual int16_t clearIrqFlags(uint32_t irq);
572
578 virtual int16_t startChannelScan();
579
586 virtual int16_t startChannelScan(const ChannelScanConfig_t &config);
587
592 virtual int16_t getChannelScanResult();
593
600 virtual int16_t scanChannel();
601
609 virtual int16_t scanChannel(const ChannelScanConfig_t &config);
610
616 int32_t random(int32_t max);
617
624 int32_t random(int32_t min, int32_t max);
625
630 virtual uint8_t randomByte();
631
637 int16_t startDirect();
638
639 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
646 int16_t setDirectSyncWord(uint32_t syncWord, uint8_t len);
647
653 virtual void setDirectAction(void (*func)(void));
654
659 virtual void readBit(uint32_t pin);
660
665 int16_t available();
666
670 void dropSync();
671
678 uint8_t read(bool drop = true);
679 #endif
680
687 virtual int16_t setDIOMapping(uint32_t pin, uint32_t value);
688
693 virtual void setPacketReceivedAction(void (*func)(void));
694
698 virtual void clearPacketReceivedAction();
699
704 virtual void setPacketSentAction(void (*func)(void));
705
709 virtual void clearPacketSentAction();
710
715 virtual void setChannelScanAction(void (*func)(void));
716
720 virtual void clearChannelScanAction();
721
728 virtual int16_t setModem(ModemType_t modem);
729
735 virtual int16_t getModem(ModemType_t* modem);
736
743 virtual int16_t stageMode(RadioModeType_t mode, RadioModeConfig_t* cfg);
744
749 virtual int16_t launchMode();
750
751 #if RADIOLIB_INTERRUPT_TIMING
752
758 void setInterruptSetup(void (*func)(uint32_t));
759
764 void setTimerFlag();
765
766 #endif
767
768#if !RADIOLIB_GODMODE
769 protected:
770#endif
771 uint32_t irqMap[10] = { 0 };
772 RadioModeType_t stagedMode = RADIOLIB_RADIO_MODE_NONE;
773
774#if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
775 void updateDirectBuffer(uint8_t bit);
776#endif
777
778#if !RADIOLIB_GODMODE
779 private:
780#endif
781 float freqStep;
782 size_t maxPacketLength;
783
784 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
785 uint8_t bufferBitPos = 0;
786 uint8_t bufferWritePos = 0;
787 uint8_t bufferReadPos = 0;
788 uint8_t buffer[RADIOLIB_STATIC_ARRAY_SIZE] = { 0 };
789 uint32_t syncBuffer = 0;
790 uint32_t directSyncWord = 0;
791 uint8_t directSyncWordLen = 0;
792 uint32_t directSyncWordMask = 0;
793 bool gotSync = false;
794 #endif
795
796 virtual Module* getMod() = 0;
797
798 // allow specific classes access the private getMod method
799 friend class AFSKClient;
800 friend class RTTYClient;
801 friend class MorseClient;
802 friend class HellClient;
803 friend class SSTVClient;
804 friend class AX25Client;
805 friend class FSK4Client;
806 friend class PagerClient;
807 friend class BellClient;
808 friend class FT8Client;
809 friend class LoRaWANNode;
810 friend class M17Client;
811};
812
813#endif
Client for audio-based transmissions. Requires Arduino tone() function, and a module capable of direc...
Definition AFSK.h:16
Client for AX25 communication.
Definition AX25.h:233
Client for Bell modem communication. The public interface is the same as Arduino Serial.
Definition BellModem.h:54
Client for FSK-4 communication. The public interface is the same as Arduino Serial.
Definition FSK4.h:15
Client for Hellschreiber transmissions.
Definition Hellschreiber.h:90
LoRaWAN-compatible node (class A device).
Definition LoRaWAN.h:524
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition Module.h:73
Client for Morse Code communication. The public interface is the same as Arduino Serial.
Definition Morse.h:94
Client for Pager communication.
Definition Pager.h:62
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition PhysicalLayer.h:216
virtual int16_t stageMode(RadioModeType_t mode, RadioModeConfig_t *cfg)
Stage mode of the radio to be launched later using launchMode.
Definition PhysicalLayer.cpp:554
virtual int16_t invertIQ(bool enable)
Set IQ inversion. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:260
virtual void clearChannelScanAction()
Clears interrupt service routine to call when a channel scan is finished.
Definition PhysicalLayer.cpp:540
virtual int16_t checkOutputPower(int8_t power, int8_t *clipped)
Check if output power is configurable. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:270
virtual int16_t startReceive()
Sets module to received mode using its default configuration.
Definition PhysicalLayer.cpp:130
virtual uint8_t randomByte()
Get one truly random byte from RSSI noise. Must be implemented in module class.
Definition PhysicalLayer.cpp:415
virtual int16_t finishTransmit()
Clean up after transmission is done.
Definition PhysicalLayer.cpp:173
int16_t checkIrq(RadioLibIrqType_t irq)
Check whether a specific IRQ bit is set (e.g. RxTimeout, CadDone).
Definition PhysicalLayer.cpp:336
virtual int16_t setFrequencyDeviation(float freqDev)
Sets FSK frequency deviation from carrier frequency. Only available in FSK mode. Must be implemented ...
Definition PhysicalLayer.cpp:245
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:301
virtual void setPacketSentAction(void(*func)(void))
Sets interrupt service routine to call when a packet is sent.
Definition PhysicalLayer.cpp:528
virtual int16_t setDIOMapping(uint32_t pin, uint32_t value)
Configure DIO pin mapping to get a given signal on a DIO pin (if available).
Definition PhysicalLayer.cpp:514
virtual int16_t readData(uint8_t *data, size_t len)
Reads data that was received after calling startReceive method.
Definition PhysicalLayer.cpp:220
void dropSync()
Forcefully drop synchronization.
Definition PhysicalLayer.cpp:438
int16_t transmit(const char *str, uint8_t addr=0)
C-string transmit method.
Definition PhysicalLayer.cpp:53
uint8_t read(bool drop=true)
Get data from direct mode buffer.
Definition PhysicalLayer.cpp:445
virtual RadioLibTime_t getTimeOnAir(size_t len)
Get expected time-on-air for a given size of payload.
Definition PhysicalLayer.cpp:314
virtual int16_t checkDataRate(DataRate_t dr)
Check the data rate can be configured by this module. Must be implemented in module class if the modu...
Definition PhysicalLayer.cpp:292
virtual int16_t launchMode()
Launch previously staged mode.
Definition PhysicalLayer.cpp:560
virtual int16_t getChannelScanResult()
Read the channel scan result.
Definition PhysicalLayer.cpp:375
virtual void clearPacketSentAction()
Clears interrupt service routine to call when a packet is sent.
Definition PhysicalLayer.cpp:532
virtual int16_t setSyncWord(uint8_t *sync, size_t len)
Set sync word. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:276
virtual int16_t setDataRate(DataRate_t dr)
Set data. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:287
virtual int16_t setModem(ModemType_t modem)
Set modem for the radio to use. Will perform full reset and reconfigure the radio using its default p...
Definition PhysicalLayer.cpp:544
virtual void clearPacketReceivedAction()
Clears interrupt service routine to call when a packet is received.
Definition PhysicalLayer.cpp:524
virtual RadioLibTime_t calculateRxTimeout(RadioLibTime_t timeoutUs)
Calculate the timeout value for this specific module / series (in number of symbols or units of time)...
Definition PhysicalLayer.cpp:319
int16_t setIrq(RadioLibIrqFlags_t irq)
Set interrupt on specific IRQ bit(s) (e.g. RxTimeout, CadDone). Keep in mind that not all radio modul...
Definition PhysicalLayer.cpp:344
virtual int16_t setPreambleLength(size_t len)
Set preamble length. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:282
int16_t startDirect()
Configure module parameters for direct modes. Must be called prior to "ham" modes like RTTY or AX....
Definition PhysicalLayer.cpp:419
virtual int16_t setFrequency(float freq)
Sets carrier frequency. Must be implemented in module class.
Definition PhysicalLayer.cpp:235
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:453
int16_t startTransmit(const char *str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition PhysicalLayer.cpp:155
float getFreqStep() const
Gets the module frequency step size that was set in constructor.
Definition PhysicalLayer.cpp:297
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:226
virtual float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition PhysicalLayer.cpp:306
int16_t available()
Get the number of direct mode bytes currently available in buffer.
Definition PhysicalLayer.cpp:434
virtual int16_t receive(uint8_t *data, size_t len)
Binary receive method. Must be implemented in module class.
Definition PhysicalLayer.cpp:111
virtual int16_t scanChannel()
Check whether the current communication channel is free or occupied. Performs CAD for LoRa modules,...
Definition PhysicalLayer.cpp:379
virtual void setDirectAction(void(*func)(void))
Set interrupt service routine function to call when data bit is received in direct mode....
Definition PhysicalLayer.cpp:504
virtual int16_t clearIrqFlags(uint32_t irq)
Clear interrupt on a specific IRQ bit (e.g. RxTimeout, CadDone). Must be implemented in module class.
Definition PhysicalLayer.cpp:361
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:255
virtual int16_t standby()
Sets module to standby.
Definition PhysicalLayer.cpp:121
int32_t random(int32_t max)
Get truly random number in range 0 - max.
Definition PhysicalLayer.cpp:388
virtual void readBit(uint32_t pin)
Function to read and process data bit in direct reception mode. Must be implemented in module class.
Definition PhysicalLayer.cpp:508
virtual int16_t setOutputPower(int8_t power)
Set output power. Must be implemented in module class if the module supports it.
Definition PhysicalLayer.cpp:265
virtual int16_t receiveDirect()
Enables direct reception mode on pins DIO1 (clock) and DIO2 (data). Must be implemented in module cla...
Definition PhysicalLayer.cpp:231
virtual void setChannelScanAction(void(*func)(void))
Sets interrupt service routine to call when a channel scan is finished.
Definition PhysicalLayer.cpp:536
virtual int16_t startChannelScan()
Interrupt-driven channel activity detection method. Interrupt will be activated when packet is detect...
Definition PhysicalLayer.cpp:366
uint32_t getIrqMapped(RadioLibIrqFlags_t irq)
Convert from radio-agnostic IRQ flags to radio-specific flags.
Definition PhysicalLayer.cpp:324
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:250
virtual void setPacketReceivedAction(void(*func)(void))
Sets interrupt service routine to call when a packet is received.
Definition PhysicalLayer.cpp:520
virtual int16_t setBitRate(float br)
Sets FSK bit rate. Only available in FSK mode. Must be implemented in module class.
Definition PhysicalLayer.cpp:240
virtual float getSNR()
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
Definition PhysicalLayer.cpp:310
virtual int16_t getModem(ModemType_t *modem)
Get modem currently in use by the radio.
Definition PhysicalLayer.cpp:549
virtual int16_t sleep()
Sets module to sleep.
Definition PhysicalLayer.cpp:117
virtual uint32_t getIrqFlags()
Read currently active IRQ flags. Must be implemented in module class.
Definition PhysicalLayer.cpp:352
virtual int16_t setIrqFlags(uint32_t irq)
Set interrupt on DIO1 to be sent on a specific IRQ bit (e.g. RxTimeout, CadDone). Must be implemented...
Definition PhysicalLayer.cpp:356
int16_t clearIrq(RadioLibIrqFlags_t irq)
Clear interrupt on a specific IRQ bit (e.g. RxTimeout, CadDone). Keep in mind that not all radio modu...
Definition PhysicalLayer.cpp:348
Client for RTTY communication. The public interface is the same as Arduino Serial.
Definition RTTY.h:17
Client for SSTV transmissions.
Definition SSTV.h:121
unsigned long RadioLibTime_t
Type used for durations in RadioLib.
Definition TypeDef.h:642
uint32_t RadioLibIrqFlags_t
Type used for radio-agnostic IRQ flags. IRQ to enable corresponds to the bit index (RadioLibIrq_t)....
Definition TypeDef.h:648
Channel scan configuration interpretation in case LoRa CAD is used.
Definition PhysicalLayer.h:89
RadioLibTime_t timeout
Timeout in microseconds.
Definition PhysicalLayer.h:103
uint8_t detPeak
Number of peak detection symbols.
Definition PhysicalLayer.h:94
uint8_t symNum
Number of symbols to consider signal present.
Definition PhysicalLayer.h:91
uint8_t exitMode
Exit mode after signal detection is complete - module-specific value.
Definition PhysicalLayer.h:100
RadioLibIrqFlags_t irqFlags
Optional IRQ flags to set, bits offset by the value of RADIOLIB_IRQ_.
Definition PhysicalLayer.h:106
RadioLibIrqFlags_t irqMask
Optional IRQ mask to set, bits offset by the value of RADIOLIB_IRQ_.
Definition PhysicalLayer.h:109
uint8_t detMin
Number of minimum detection symbols.
Definition PhysicalLayer.h:97
Data rate structure interpretation in case FSK is used.
Definition PhysicalLayer.h:47
float bitRate
FSK bit rate in kbps.
Definition PhysicalLayer.h:49
float freqDev
FSK frequency deviation in kHz.
Definition PhysicalLayer.h:52
Data rate structure interpretation in case LoRa is used.
Definition PhysicalLayer.h:32
uint8_t spreadingFactor
LoRa spreading factor.
Definition PhysicalLayer.h:34
float bandwidth
LoRa bandwidth in kHz.
Definition PhysicalLayer.h:37
uint8_t codingRate
LoRa coding rate.
Definition PhysicalLayer.h:40
Data rate structure interpretation in case LR-FHSS is used.
Definition PhysicalLayer.h:59
bool narrowGrid
Grid spacing.
Definition PhysicalLayer.h:67
uint8_t cr
Coding rate.
Definition PhysicalLayer.h:64
uint8_t bw
Bandwidth.
Definition PhysicalLayer.h:61
Channel scan configuration interpretation in case RSSI threshold is used.
Definition PhysicalLayer.h:116
float limit
RSSI limit in dBm.
Definition PhysicalLayer.h:118
Definition PhysicalLayer.h:138
RadioLibIrqFlags_t irqFlags
Sets the IRQ flags.
Definition PhysicalLayer.h:143
size_t len
Packet length, needed for some modules under special circumstances (e.g. LoRa implicit header mode).
Definition PhysicalLayer.h:149
uint32_t timeout
Raw timeout value. Some modules use this argument to specify operation mode (single vs....
Definition PhysicalLayer.h:140
RadioLibIrqFlags_t irqMask
Sets the mask of IRQ flags that will trigger the radio interrupt pin.
Definition PhysicalLayer.h:146
Definition PhysicalLayer.h:163
uint8_t mode
Module-specific sleep mode configuration.
Definition PhysicalLayer.h:165
Definition PhysicalLayer.h:133
uint8_t mode
Module-specific standby mode configuration.
Definition PhysicalLayer.h:135
Definition PhysicalLayer.h:152
const uint8_t * data
Binary data that will be transmitted.
Definition PhysicalLayer.h:154
uint8_t addr
Node address to transmit the packet to. Only used in FSK mode.
Definition PhysicalLayer.h:160
size_t len
Length of binary data to transmit (in bytes).
Definition PhysicalLayer.h:157
Common channel scan configuration structure.
Definition PhysicalLayer.h:125
RSSIScanConfig_t rssi
Interpretation for modems that use RSSI threshold.
Definition PhysicalLayer.h:130
CADScanConfig_t cad
Interpretation for modems that use CAD (usually LoRa modems)
Definition PhysicalLayer.h:127
Common data rate structure.
Definition PhysicalLayer.h:74
LrFhssRate_t lrFhss
Interpretation for LR-FHSS modems.
Definition PhysicalLayer.h:82
LoRaRate_t lora
Interpretation for LoRa modems.
Definition PhysicalLayer.h:76
FSKRate_t fsk
Interpretation for FSK modems.
Definition PhysicalLayer.h:79
Definition PhysicalLayer.h:168
SleepConfig_t sleep
Interpretation for sleep mode.
Definition PhysicalLayer.h:182
StandbyConfig_t standby
Interpretation for standby mode.
Definition PhysicalLayer.h:170
ChannelScanConfig_t scan
Interpretation for scanning.
Definition PhysicalLayer.h:179
TransmitConfig_t transmit
Interpretation for Tx mode.
Definition PhysicalLayer.h:176
ReceiveConfig_t receive
Interpretation for Rx mode.
Definition PhysicalLayer.h:173