5#if !defined(_RADIOLIB_ESP_IDF_HAL_H)
6#define _RADIOLIB_ESP_IDF_HAL_H
12#if defined(ESP_PLATFORM) && !defined(ARDUINO)
14#include "driver/spi_master.h"
19#if !defined(RADIOLIB_TONE_ESP32_CHANNEL)
20#define RADIOLIB_TONE_ESP32_CHANNEL (LEDC_CHANNEL_0)
24#define RADIOLIB_ERR_HAL_ESP_ISR_INSTALL_FAILED RADIOLIB_ERR_HAL(-1)
25#define RADIOLIB_ERR_HAL_ESP_SPI_INIT_FAILED RADIOLIB_ERR_HAL(-2)
26#define RADIOLIB_ERR_HAL_ESP_SPI_DEVICE_ADD_FAILED RADIOLIB_ERR_HAL(-3)
27#define RADIOLIB_ERR_HAL_ESP_SPI_DEVICE_UNINITIALIZED RADIOLIB_ERR_HAL(-4)
28#define RADIOLIB_ERR_HAL_ESP_SPI_XFER_FAILED RADIOLIB_ERR_HAL(-5)
47 EspHal(int8_t sck, int8_t miso, int8_t mosi,
48 spi_host_device_t host = SPI2_HOST, uint32_t clockHz = 2000000);
53 void pinMode(uint32_t pin, uint32_t mode)
override;
54 void digitalWrite(uint32_t pin, uint32_t value)
override;
57 uint32_t mode)
override;
59 void delay(
unsigned long ms)
override;
61 unsigned long millis()
override;
62 unsigned long micros()
override;
63 long pulseIn(uint32_t pin, uint32_t state,
unsigned long timeout)
override;
66 int16_t
spiTransfer(uint8_t *out,
size_t len, uint8_t *in);
71 int16_t
init()
override;
72 int16_t
term()
override;
73 void tone(uint32_t pin,
unsigned int frequency,
75 void noTone(uint32_t pin)
override;
76 void yield()
override;
77 void pullUpDown(uint32_t pin,
bool enable,
bool up)
override;
83 spi_host_device_t spiHost;
85 spi_device_handle_t spiDevice;
Hardware abstraction library base interface.
Definition Hal.h:18
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 int16_t spiEnd()=0
SPI termination method.
virtual void yield()
Yield method, called from long loops in multi-threaded environment (to prevent blocking other threads...
Definition Hal.cpp:37
virtual void detachInterrupt(uint32_t interruptNum)=0
Method to detach function from an external interrupt. Must be implemented by the platform-specific ha...
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 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
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
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