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