RadioLib
Universal wireless communication library for Arduino
Hal.h
1 #if !defined(_RADIOLIB_HAL_H)
2 #define _RADIOLIB_HAL_H
3 
4 #include <stdint.h>
5 #include <stddef.h>
6 
12 class RadioLibHal {
13  public:
14 
15  // values for pin modes, levels and change directions
16  // these tell RadioLib how are different logic states represented on a given platform
17 
21  const uint32_t GpioModeInput;
22 
26  const uint32_t GpioModeOutput;
27 
31  const uint32_t GpioLevelLow;
32 
36  const uint32_t GpioLevelHigh;
37 
41  const uint32_t GpioInterruptRising;
42 
46  const uint32_t GpioInterruptFalling;
47 
63  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);
64 
65  // pure virtual methods - these must be implemented by the hardware abstraction for RadioLib to function
66 
75  virtual void pinMode(uint32_t pin, uint32_t mode) = 0;
76 
85  virtual void digitalWrite(uint32_t pin, uint32_t value) = 0;
86 
95  virtual uint32_t digitalRead(uint32_t pin) = 0;
96 
107  virtual void attachInterrupt(uint32_t interruptNum, void (*interruptCb)(void), uint32_t mode) = 0;
108 
115  virtual void detachInterrupt(uint32_t interruptNum) = 0;
116 
123  virtual void delay(unsigned long ms) = 0;
124 
131  virtual void delayMicroseconds(unsigned long us) = 0;
132 
139  virtual unsigned long millis() = 0;
140 
147  virtual unsigned long micros() = 0;
148 
161  virtual long pulseIn(uint32_t pin, uint32_t state, unsigned long timeout) = 0;
162 
166  virtual void spiBegin() = 0;
167 
171  virtual void spiBeginTransaction() = 0;
172 
180  virtual uint8_t spiTransfer(uint8_t b) = 0;
181 
185  virtual void spiEndTransaction() = 0;
186 
190  virtual void spiEnd() = 0;
191 
192  // virtual methods - these may or may not exists on a given platform
193  // they exist in this implementation, but do nothing
194 
200  virtual void init();
201 
207  virtual void term();
208 
218  virtual void tone(uint32_t pin, unsigned int frequency, unsigned long duration = 0);
219 
225  virtual void noTone(uint32_t pin);
226 
230  virtual void yield();
231 
237  virtual uint32_t pinToInterrupt(uint32_t pin);
238 };
239 
240 #endif
Definition: Hal.h:12
const uint32_t GpioInterruptFalling
Value to be used as the "falling" GPIO level change direction.
Definition: Hal.h:46
virtual uint32_t digitalRead(uint32_t pin)=0
Digital read method. Must be implemented by the platform-specific hardware abstraction!
virtual uint8_t spiTransfer(uint8_t b)=0
Method to transfer one byte over SPI.
const uint32_t GpioModeOutput
Value to be used as the "output" GPIO direction.
Definition: Hal.h:26
virtual void yield()
Yield method, called from long loops in multi-threaded environment (to prevent blocking other threads...
Definition: Hal.cpp:29
virtual unsigned long millis()=0
Get number of milliseconds since start. Must be implemented by the platform-specific hardware abstrac...
const uint32_t GpioModeInput
Value to be used as the "input" GPIO direction.
Definition: Hal.h:21
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:33
virtual long pulseIn(uint32_t pin, uint32_t state, unsigned long timeout)=0
Measure the length of incoming digital pulse in microseconds. Must be implemented by the platform-spe...
const uint32_t GpioLevelLow
Value to be used as the "low" GPIO level.
Definition: Hal.h:31
const uint32_t GpioLevelHigh
Value to be used as the "high" GPIO level.
Definition: Hal.h:36
virtual void spiEnd()=0
SPI termination method.
virtual void init()
Module initialization method. This will be called by all radio modules at the beginning of startup....
Definition: Hal.cpp:11
virtual void digitalWrite(uint32_t pin, uint32_t value)=0
Digital write method. Must be implemented by the platform-specific hardware abstraction!
virtual void spiEndTransaction()=0
Method to end SPI transaction.
virtual void noTone(uint32_t pin)
Method to stop producing a tone.
Definition: Hal.cpp:25
const uint32_t GpioInterruptRising
Value to be used as the "rising" GPIO level change direction.
Definition: Hal.h:41
virtual void delay(unsigned long ms)=0
Blocking wait function. Must be implemented by the platform-specific hardware abstraction!
virtual void spiBegin()=0
SPI initialization method.
virtual void term()
Module termination method. This will be called by all radio modules when the desctructor is called....
Definition: Hal.cpp:15
virtual void tone(uint32_t pin, unsigned int frequency, unsigned long duration=0)
Method to produce a square-wave with 50% duty cycle ("tone") of a given frequency at some pin.
Definition: Hal.cpp:19
virtual void spiBeginTransaction()=0
Method to start SPI transaction.
virtual void delayMicroseconds(unsigned long us)=0
Blocking microsecond wait function. Must be implemented by the platform-specific hardware abstraction...
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:3
virtual unsigned long micros()=0
Get number of microseconds since start. Must be implemented by the platform-specific hardware abstrac...
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...