RadioLib
Universal wireless communication library for Arduino
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 
24 class ArduinoHal : public RadioLibHal {
25  public:
29  ArduinoHal();
30 
36  ArduinoHal(SPIClass& spi, SPISettings spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS);
37 
38  // implementations of pure virtual RadioLibHal methods
39  void pinMode(uint32_t pin, uint32_t mode) override;
40  void digitalWrite(uint32_t pin, uint32_t value) override;
41  uint32_t digitalRead(uint32_t pin) override;
42  void attachInterrupt(uint32_t interruptNum, void (*interruptCb)(void), uint32_t mode) override;
43  void detachInterrupt(uint32_t interruptNum) override;
44  void delay(unsigned long ms) override;
45  void delayMicroseconds(unsigned long us) override;
46  unsigned long millis() override;
47  unsigned long micros() override;
48  long pulseIn(uint32_t pin, uint32_t state, unsigned long timeout) override;
49  void spiBegin() override;
50  void spiBeginTransaction() override;
51  uint8_t spiTransfer(uint8_t b) override;
52  void spiEndTransaction() override;
53  void spiEnd() override;
54 
55  // implementations of virtual RadioLibHal methods
56  void init() override;
57  void term() override;
58  void tone(uint32_t pin, unsigned int frequency, unsigned long duration = 0) override;
59  void noTone(uint32_t pin) override;
60  void yield() override;
61  uint32_t pinToInterrupt(uint32_t pin) override;
62 
63 #if !defined(RADIOLIB_GODMODE)
64  private:
65 #endif
66  SPIClass* _spi = NULL;
67  SPISettings _spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS;
68  bool _initInterface = false;
69 
70  #if defined(RADIOLIB_MBED_TONE_OVERRIDE)
71  mbed::PwmOut *pwmPin = NULL;
72  #endif
73 
74  #if defined(ESP32)
75  int32_t _prev = -1;
76  #endif
77 };
78 
79 #endif
80 
81 #endif
Definition: Hal.h:11
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.
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...
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...
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
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...
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...