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
220 float freqStep;
221
224
225 // constructor
226
231
232 // basic methods
233
234 #if defined(RADIOLIB_BUILD_ARDUINO)
241 int16_t transmit(__FlashStringHelper* fstr, uint8_t addr = 0);
242
249 int16_t transmit(String& str, uint8_t addr = 0);
250 #endif
251
258 int16_t transmit(const char* str, uint8_t addr = 0);
259
267 virtual int16_t transmit(const uint8_t* data, size_t len, uint8_t addr = 0);
268
269 #if defined(RADIOLIB_BUILD_ARDUINO)
276 int16_t receive(String& str, size_t len = 0);
277 #endif
278
283 virtual int16_t sleep();
284
289 virtual int16_t standby();
290
295 virtual int16_t standby(uint8_t mode);
296
301 virtual int16_t startReceive();
302
313 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);
314
321 virtual int16_t receive(uint8_t* data, size_t len);
322
323 #if defined(RADIOLIB_BUILD_ARDUINO)
331 int16_t startTransmit(String& str, uint8_t addr = 0);
332 #endif
333
341 int16_t startTransmit(const char* str, uint8_t addr = 0);
342
350 virtual int16_t startTransmit(const uint8_t* data, size_t len, uint8_t addr = 0);
351
356 virtual int16_t finishTransmit();
357
358 #if defined(RADIOLIB_BUILD_ARDUINO)
366 int16_t readData(String& str, size_t len = 0);
367 #endif
368
376 virtual int16_t readData(uint8_t* data, size_t len);
377
384 virtual int16_t transmitDirect(uint32_t frf = 0);
385
391 virtual int16_t receiveDirect();
392
393 // configuration methods
394
400 virtual int16_t setFrequency(float freq);
401
407 virtual int16_t setBitRate(float br);
408
415 virtual int16_t setFrequencyDeviation(float freqDev);
416
422 virtual int16_t setDataShaping(uint8_t sh);
423
429 virtual int16_t setEncoding(uint8_t encoding);
430
436 virtual int16_t invertIQ(bool enable);
437
443 virtual int16_t setOutputPower(int8_t power);
444
451 virtual int16_t checkOutputPower(int8_t power, int8_t* clipped);
452
459 virtual int16_t setSyncWord(uint8_t* sync, size_t len);
460
466 virtual int16_t setPreambleLength(size_t len);
467
473 virtual int16_t setDataRate(DataRate_t dr);
474
480 virtual int16_t checkDataRate(DataRate_t dr);
481
487 virtual size_t getPacketLength(bool update = true);
488
493 virtual float getRSSI();
494
499 virtual float getSNR();
500
506 virtual RadioLibTime_t getTimeOnAir(size_t len);
507
515
521 uint32_t getIrqMapped(RadioLibIrqFlags_t irq);
522
528 int16_t checkIrq(RadioLibIrqType_t irq);
529
537 int16_t setIrq(RadioLibIrqFlags_t irq);
538
546 int16_t clearIrq(RadioLibIrqFlags_t irq);
547
553 virtual uint32_t getIrqFlags();
554
561 virtual int16_t setIrqFlags(uint32_t irq);
562
569 virtual int16_t clearIrqFlags(uint32_t irq);
570
576 virtual int16_t startChannelScan();
577
584 virtual int16_t startChannelScan(const ChannelScanConfig_t &config);
585
590 virtual int16_t getChannelScanResult();
591
598 virtual int16_t scanChannel();
599
607 virtual int16_t scanChannel(const ChannelScanConfig_t &config);
608
614 int32_t random(int32_t max);
615
622 int32_t random(int32_t min, int32_t max);
623
628 virtual uint8_t randomByte();
629
635 int16_t startDirect();
636
637 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
644 int16_t setDirectSyncWord(uint32_t syncWord, uint8_t len);
645
651 virtual void setDirectAction(void (*func)(void));
652
657 virtual void readBit(uint32_t pin);
658
663 int16_t available();
664
668 void dropSync();
669
676 uint8_t read(bool drop = true);
677 #endif
678
685 virtual int16_t setDIOMapping(uint32_t pin, uint32_t value);
686
691 virtual void setPacketReceivedAction(void (*func)(void));
692
696 virtual void clearPacketReceivedAction();
697
702 virtual void setPacketSentAction(void (*func)(void));
703
707 virtual void clearPacketSentAction();
708
713 virtual void setChannelScanAction(void (*func)(void));
714
718 virtual void clearChannelScanAction();
719
726 virtual int16_t setModem(ModemType_t modem);
727
733 virtual int16_t getModem(ModemType_t* modem);
734
741 virtual int16_t stageMode(RadioModeType_t mode, RadioModeConfig_t* cfg);
742
747 virtual int16_t launchMode();
748
749 #if RADIOLIB_INTERRUPT_TIMING
750
756 void setInterruptSetup(void (*func)(uint32_t));
757
762 void setTimerFlag();
763
764 #endif
765
766#if !RADIOLIB_GODMODE
767 protected:
768#endif
769 uint32_t irqMap[10] = { 0 };
770 RadioModeType_t stagedMode = RADIOLIB_RADIO_MODE_NONE;
771
772#if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
773 void updateDirectBuffer(uint8_t bit);
774#endif
775
776#if !RADIOLIB_GODMODE
777 private:
778#endif
779
780 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
781 uint8_t bufferBitPos = 0;
782 uint8_t bufferWritePos = 0;
783 uint8_t bufferReadPos = 0;
784 uint8_t buffer[RADIOLIB_STATIC_ARRAY_SIZE] = { 0 };
785 uint32_t syncBuffer = 0;
786 uint32_t directSyncWord = 0;
787 uint8_t directSyncWordLen = 0;
788 uint32_t directSyncWordMask = 0;
789 bool gotSync = false;
790 #endif
791
792 virtual Module* getMod() = 0;
793
794 // allow specific classes access the private getMod method
795 friend class AFSKClient;
796 friend class RTTYClient;
797 friend class MorseClient;
798 friend class HellClient;
799 friend class SSTVClient;
800 friend class AX25Client;
801 friend class FSK4Client;
802 friend class PagerClient;
803 friend class BellClient;
804 friend class FT8Client;
805 friend class LoRaWANNode;
806 friend class M17Client;
807};
808
809#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:527
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:550
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:536
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:411
size_t maxPacketLength
Maximum length of packet that can be received by the module.
Definition PhysicalLayer.h:223
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:332
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:297
virtual void setPacketSentAction(void(*func)(void))
Sets interrupt service routine to call when a packet is sent.
Definition PhysicalLayer.cpp:524
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:510
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:434
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:441
virtual RadioLibTime_t getTimeOnAir(size_t len)
Get expected time-on-air for a given size of payload.
Definition PhysicalLayer.cpp:310
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:556
virtual int16_t getChannelScanResult()
Read the channel scan result.
Definition PhysicalLayer.cpp:371
virtual void clearPacketSentAction()
Clears interrupt service routine to call when a packet is sent.
Definition PhysicalLayer.cpp:528
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:540
virtual void clearPacketReceivedAction()
Clears interrupt service routine to call when a packet is received.
Definition PhysicalLayer.cpp:520
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:315
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:340
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:415
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:449
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
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
float freqStep
Frequency step of the synthesizer in Hz.
Definition PhysicalLayer.h:220
virtual float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition PhysicalLayer.cpp:302
int16_t available()
Get the number of direct mode bytes currently available in buffer.
Definition PhysicalLayer.cpp:430
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:375
virtual void setDirectAction(void(*func)(void))
Set interrupt service routine function to call when data bit is received in direct mode....
Definition PhysicalLayer.cpp:500
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:357
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:384
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:504
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:532
virtual int16_t startChannelScan()
Interrupt-driven channel activity detection method. Interrupt will be activated when packet is detect...
Definition PhysicalLayer.cpp:362
uint32_t getIrqMapped(RadioLibIrqFlags_t irq)
Convert from radio-agnostic IRQ flags to radio-specific flags.
Definition PhysicalLayer.cpp:320
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:516
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:306
virtual int16_t getModem(ModemType_t *modem)
Get modem currently in use by the radio.
Definition PhysicalLayer.cpp:545
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:348
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:352
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:344
PhysicalLayer()
Default constructor.
Definition PhysicalLayer.cpp:5
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