RadioLib
Universal wireless communication library for Arduino
Loading...
Searching...
No Matches
ArduinoHal.h
1// make sure this is always compiled
2#include "../../TypeDef.h"
3
4#if !defined(_RADIOLIB_ARDUINOHAL_H)
5#define _RADIOLIB_ARDUINOHAL_H
6
7// this file only makes sense for Arduino builds
8#if defined(RADIOLIB_BUILD_ARDUINO)
9
10#if defined(RADIOLIB_MBED_TONE_OVERRIDE)
11#include "mbed.h"
12#endif
13
14#include "Hal.h"
15
16#include <SPI.h>
17
23class ArduinoHal : public RadioLibHal {
24 public:
28 ArduinoHal();
29
35 explicit ArduinoHal(SPIClass& spi, SPISettings spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS);
36
37 // implementations of pure virtual RadioLibHal methods
38 void pinMode(uint32_t pin, uint32_t mode) override;
39 void digitalWrite(uint32_t pin, uint32_t value) override;
40 uint32_t digitalRead(uint32_t pin) override;
41 void attachInterrupt(uint32_t interruptNum, void (*interruptCb)(void), uint32_t mode) override;
42 void detachInterrupt(uint32_t interruptNum) override;
43 void delay(RadioLibTime_t ms) override;
44 void delayMicroseconds(RadioLibTime_t us) override;
45 RadioLibTime_t millis() override;
46 RadioLibTime_t micros() override;
47 long pulseIn(uint32_t pin, uint32_t state, RadioLibTime_t timeout) override;
48 void spiBegin() override;
49 void spiBeginTransaction() override;
50 void spiTransfer(uint8_t* out, size_t len, uint8_t* in) override;
51 void spiEndTransaction() override;
52 void spiEnd() override;
53
54 // implementations of virtual RadioLibHal methods
55 void init() override;
56 void term() override;
57 void tone(uint32_t pin, unsigned int frequency, RadioLibTime_t duration = 0) override;
58 void noTone(uint32_t pin) override;
59 void yield() override;
60 uint32_t pinToInterrupt(uint32_t pin) override;
61
62#if !RADIOLIB_GODMODE
63 protected:
64#endif
65 SPIClass* spi = NULL;
66 SPISettings spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS;
67 bool initInterface = false;
68
69 #if defined(RADIOLIB_MBED_TONE_OVERRIDE)
70 mbed::PwmOut *pwmPin = NULL;
71 #endif
72
73 #if defined(RADIOLIB_ESP32)
74 int32_t prev = -1;
75 #endif
76};
77
78#endif
79
80#endif
Hardware abstraction library base interface.
Definition Hal.h:13
virtual uint32_t digitalRead(uint32_t pin)=0
Digital read method. Must be implemented by the platform-specific hardware abstraction!
virtual void yield()
Yield method, called from long loops in multi-threaded environment (to prevent blocking other threads...
Definition Hal.cpp:29
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, RadioLibTime_t timeout)=0
Measure the length of incoming digital pulse in microseconds. Must be implemented by the platform-spe...
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 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:19
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:25
virtual void spiBegin()=0
SPI initialization method.
virtual void delay(RadioLibTime_t ms)=0
Blocking wait function. Must be implemented by the platform-specific hardware abstraction!
virtual void term()
Module termination method. This will be called by all radio modules when the destructor is called....
Definition Hal.cpp:15
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 void spiTransfer(uint8_t *out, size_t len, uint8_t *in)=0
Method to transfer buffer over SPI.
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:642