RadioLib
Universal wireless communication library for Arduino
Loading...
Searching...
No Matches
Hal.h
1#if !defined(_RADIOLIB_HAL_H)
2#define _RADIOLIB_HAL_H
3
4#include <stdint.h>
5#include <stddef.h>
6
7#include "BuildOpt.h"
8
9#include "utils/Cryptography.h"
10
12RadioLibTime_t rlb_time_us();
13
19 public:
20
21 // values for pin modes, levels and change directions
22 // these tell RadioLib how are different logic states represented on a given platform
23
27 const uint32_t GpioModeInput;
28
32 const uint32_t GpioModeOutput;
33
37 const uint32_t GpioLevelLow;
38
42 const uint32_t GpioLevelHigh;
43
47 const uint32_t GpioInterruptRising;
48
52 const uint32_t GpioInterruptFalling;
53
61
71 RadioLibHal(const uint32_t input, const uint32_t output, const uint32_t low, const uint32_t high, const uint32_t rising, const uint32_t falling);
72
76 virtual ~RadioLibHal() = default;
77
78 // pure virtual methods - these must be implemented by the hardware abstraction for RadioLib to function
79
86 virtual void pinMode(uint32_t pin, uint32_t mode) = 0;
87
94 virtual void digitalWrite(uint32_t pin, uint32_t value) = 0;
95
102 virtual uint32_t digitalRead(uint32_t pin) = 0;
103
111 virtual void attachInterrupt(uint32_t interruptNum, void (*interruptCb)(void), uint32_t mode) = 0;
112
118 virtual void detachInterrupt(uint32_t interruptNum) = 0;
119
125 virtual void delay(RadioLibTime_t ms) = 0;
126
132 virtual void delayMicroseconds(RadioLibTime_t us) = 0;
133
139 virtual RadioLibTime_t millis() = 0;
140
146 virtual RadioLibTime_t micros() = 0;
147
156 virtual long pulseIn(uint32_t pin, uint32_t state, RadioLibTime_t timeout) = 0;
157
162 virtual int16_t spiBegin() = 0;
163
167 virtual void spiBeginTransaction() = 0;
168
176 virtual int16_t spiTransfer(uint8_t* out, size_t len, uint8_t* in) = 0;
177
181 virtual void spiEndTransaction() = 0;
182
187 virtual int16_t spiEnd() = 0;
188
189 // virtual methods - these may or may not exists on a given platform
190 // they exist in this implementation, but do nothing
191
198 virtual int16_t init();
199
206 virtual int16_t term();
207
214 virtual void tone(uint32_t pin, unsigned int frequency, RadioLibTime_t duration = 0);
215
220 virtual void noTone(uint32_t pin);
221
225 virtual void yield();
226
232 virtual uint32_t pinToInterrupt(uint32_t pin);
233
240 virtual void pullUpDown(uint32_t pin, bool enable, bool up);
241};
242
243#endif
Class to perform AES encryption, decryption and CMAC.
Definition Cryptography.h:32
const uint32_t GpioInterruptFalling
Value to be used as the "falling" GPIO level change direction.
Definition Hal.h:52
virtual int16_t spiTransfer(uint8_t *out, size_t len, uint8_t *in)=0
Method to transfer buffer over SPI.
virtual uint32_t digitalRead(uint32_t pin)=0
Digital read method. Must be implemented by the platform-specific hardware abstraction!
virtual ~RadioLibHal()=default
Default destructor.
virtual int16_t spiEnd()=0
SPI termination method.
const uint32_t GpioModeOutput
Value to be used as the "output" GPIO direction.
Definition Hal.h:32
virtual void yield()
Yield method, called from long loops in multi-threaded environment (to prevent blocking other threads...
Definition Hal.cpp:37
const uint32_t GpioModeInput
Value to be used as the "input" GPIO direction.
Definition Hal.h:27
virtual void detachInterrupt(uint32_t interruptNum)=0
Method to detach function from an external interrupt. Must be implemented by the platform-specific ha...
virtual uint32_t pinToInterrupt(uint32_t pin)
Function to convert from pin number to interrupt number.
Definition Hal.cpp:41
RadioLibAES128 * aes128
AES-128 engine instance to be used. When using platform with AES hardware acceleration,...
Definition Hal.h:60
const uint32_t GpioLevelLow
Value to be used as the "low" GPIO level.
Definition Hal.h:37
virtual long pulseIn(uint32_t pin, uint32_t state, RadioLibTime_t timeout)=0
Measure the length of incoming digital pulse in microseconds. Must be implemented by the platform-spe...
const uint32_t GpioLevelHigh
Value to be used as the "high" GPIO level.
Definition Hal.h:42
virtual RadioLibTime_t millis()=0
Get number of milliseconds since start. Must be implemented by the platform-specific hardware abstrac...
virtual void digitalWrite(uint32_t pin, uint32_t value)=0
Digital write method. Must be implemented by the platform-specific hardware abstraction!
virtual void tone(uint32_t pin, unsigned int frequency, RadioLibTime_t duration=0)
Method to produce a square-wave with 50% duty cycle ("tone") of a given frequency at some pin.
Definition Hal.cpp:27
virtual RadioLibTime_t micros()=0
Get number of microseconds since start. Must be implemented by the platform-specific hardware abstrac...
virtual void spiEndTransaction()=0
Method to end SPI transaction.
virtual void noTone(uint32_t pin)
Method to stop producing a tone.
Definition Hal.cpp:33
virtual int16_t init()
Module initialization method. This will be called by all radio modules at the beginning of startup....
Definition Hal.cpp:17
const uint32_t GpioInterruptRising
Value to be used as the "rising" GPIO level change direction.
Definition Hal.h:47
virtual int16_t term()
Module termination method. This will be called by all radio modules when the destructor is called....
Definition Hal.cpp:22
virtual void delay(RadioLibTime_t ms)=0
Blocking wait function. Must be implemented by the platform-specific hardware abstraction!
virtual void delayMicroseconds(RadioLibTime_t us)=0
Blocking microsecond wait function. Must be implemented by the platform-specific hardware abstraction...
virtual void spiBeginTransaction()=0
Method to start SPI transaction.
virtual int16_t spiBegin()=0
SPI initialization method.
virtual void pullUpDown(uint32_t pin, bool enable, bool up)
Enable or disable pull up or pull down for a specific pin.
Definition Hal.cpp:45
RadioLibHal(const uint32_t input, const uint32_t output, const uint32_t low, const uint32_t high, const uint32_t rising, const uint32_t falling)
Default constructor.
Definition Hal.cpp:5
virtual void pinMode(uint32_t pin, uint32_t mode)=0
GPIO pin mode (input/output/...) configuration method. Must be implemented by the platform-specific h...
virtual void attachInterrupt(uint32_t interruptNum, void(*interruptCb)(void), uint32_t mode)=0
Method to attach function to an external interrupt. Must be implemented by the platform-specific hard...
unsigned long RadioLibTime_t
Type used for durations in RadioLib.
Definition TypeDef.h:783