29 #ifndef _LCD_HAL_IO_H_ 30 #define _LCD_HAL_IO_H_ 44 #if defined(ARDUINO) || defined(PARTICLE_USER_MODULE) 45 #include "arduino/io.h" 48 #include "arduino/arduino_spi.h" 49 #include "arduino/arduino_wire.h" 50 #include "avr/spi_avr.h" 51 #include "avr/i2c_twi.h" 54 #include "esp/esp32_i2c.h" 55 #include "esp/esp32_spi.h" 56 #include "esp/esp8266_i2c.h" 57 #include "esp/esp8266_spi.h" 60 #elif defined(__AVR__) && !defined(ARDUINO) 63 #include "avr/spi_avr.h" 64 #include "avr/i2c_twi.h" 68 #elif defined(__XTENSA__) && !defined(ARDUINO) 71 #include "esp/esp32_i2c.h" 72 #include "esp/esp32_spi.h" 73 #include "esp/esp8266_i2c.h" 74 #include "esp/esp8266_spi.h" 76 #elif defined(STM32F1) || defined(STM32F2) || defined(STM32F4) 78 #elif defined(__linux__) || defined(__APPLE__) 81 #include "linux/linux_i2c.h" 82 #include "linux/linux_spi.h" 83 #include "linux/sdl_i2c.h" 84 #include "linux/sdl_spi.h" 86 #elif defined(__MINGW32__) 89 #include "linux/sdl_i2c.h" 90 #include "linux/sdl_spi.h" 92 #elif defined(PICO_BOARD) 95 #include "pico/pico_spi.h" 96 #include "pico/pico_i2c.h" 99 #warning "Platform is not supported. Use template to add support" 104 #ifndef LCDINT_TYPES_DEFINED 106 #define LCDINT_TYPES_DEFINED 114 #define ssd1306_swap_data(a, b, type) \ 125 #ifndef DOXYGEN_SHOULD_SKIP_THIS 126 #define ARDUINO_COMPAT 132 #define LCD_HIGH HIGH 133 #define LCD_GPIO_INPUT INPUT 134 #define LCD_GPIO_OUTPUT OUTPUT 135 #define LCD_GPIO_INPUT_PULLUP INPUT_PULLUP 136 #define LCD_GPIO_INPUT_PULLDOWN INPUT_PULLDOWN 137 #define LCD_PROGMEM PROGMEM 139 #define lcd_gpioRead digitalRead 140 #define lcd_gpioMode pinMode 141 #define lcd_adcRead analogRead 148 #ifndef DOXYGEN_SHOULD_SKIP_THIS 149 void lcd_registerGpioEvent(
int pin,
void (*on_pin_change)(
void *),
void *arg);
150 void lcd_unregisterGpioEvent(
int pin);
159 #define lcd_pgmReadByte pgm_read_byte 160 #define lcd_eepromReadWord eeprom_read_word 161 #define lcd_eepromWriteWord eeprom_write_word 163 #define lcd_millis millis 164 #define lcd_micros micros 165 #define lcd_delay delay 166 #define lcd_delayUs delayMicroseconds 167 #define lcd_attachInterrupt attachInterrupt 169 #define lcd_random random 170 #define lcd_randomSeed randomSeed 179 #define LCD_GPIO_INPUT 0 181 #define LCD_GPIO_OUTPUT 1 183 #define LCD_GPIO_INPUT_PULLUP 2 185 #define LCD_GPIO_INPUT_PULLDOWN 3 189 #define LCD_PROGMEM PROGMEM 218 #ifndef DOXYGEN_SHOULD_SKIP_THIS 219 void lcd_registerGpioEvent(
int pin,
void (*on_pin_change)(
void *),
void *arg);
220 void lcd_unregisterGpioEvent(
int pin);
309 #ifdef ARDUINO_COMPAT 313 #define HIGH LCD_HIGH 315 #define INPUT LCD_GPIO_INPUT 317 #define OUTPUT LCD_GPIO_OUTPUT 319 #define INPUT_PULLUP LCD_GPIO_INPUT_PULLUP 321 #define INPUT_PULLDOWN LCD_GPIO_INPUT_PULLDOWN 324 #define PROGMEM LCD_PROGMEM 328 #define digitalRead lcd_gpioRead 330 #define digitalWrite lcd_gpioWrite 332 #define pinMode lcd_gpioMode 334 #define analogRead lcd_adcRead 336 #if !defined(__AVR__) 338 #define pgm_read_byte lcd_pgmReadByte 340 #define eeprom_read_word lcd_eepromReadWord 342 #define eeprom_write_word lcd_eepromWriteWord 346 #define millis lcd_millis 348 #define micros lcd_micros 350 #define delay lcd_delay 352 #define delayMicroseconds lcd_delayUs 355 #define random lcd_random 357 #define randomSeed lcd_randomSeed 369 #if defined(CONFIG_ARDUINO_I2C_AVAILABLE) && defined(CONFIG_ARDUINO_I2C_ENABLE) 370 #define CONFIG_LCDGFX_PLATFORM_I2C 382 :
ArduinoI2c(config.scl, config.sda, config.addr)
387 #elif defined(CONFIG_TWI_I2C_AVAILABLE) && defined(CONFIG_TWI_I2C_ENABLE) 388 #define CONFIG_LCDGFX_PLATFORM_I2C 406 #elif defined(CONFIG_LINUX_I2C_AVAILABLE) && defined(CONFIG_LINUX_I2C_ENABLE) 407 #define CONFIG_LCDGFX_PLATFORM_I2C 409 #if defined(SDL_EMULATION) 443 #elif defined(CONFIG_ESP32_I2C_AVAILABLE) && defined(CONFIG_ESP32_I2C_ENABLE) 444 #define CONFIG_LCDGFX_PLATFORM_I2C 462 #elif defined(CONFIG_ESP8266_I2C_AVAILABLE) && defined(CONFIG_ESP8266_I2C_ENABLE) 463 #define CONFIG_LCDGFX_PLATFORM_I2C 481 #elif defined(CONFIG_SOFTWARE_I2C_AVAILABLE) && defined(CONFIG_SOFTWARE_I2C_ENABLE) 482 #define CONFIG_LCDGFX_PLATFORM_I2C 500 #elif defined(PICO_BOARD) 501 #define CONFIG_LCDGFX_PLATFORM_I2C 514 : PicoI2c(config.
scl, config.
sda, config.
addr)
525 #if defined(CONFIG_AVR_SPI_AVAILABLE) && defined(CONFIG_AVR_SPI_ENABLE) 526 #define CONFIG_LCDGFX_PLATFORM_SPI 539 :
AvrSpi(config.cs, config.dc, config.frequency)
544 #elif defined(CONFIG_ARDUINO_SPI_AVAILABLE) && defined(CONFIG_ARDUINO_SPI_ENABLE) 545 #define CONFIG_LCDGFX_PLATFORM_SPI 563 #elif defined(CONFIG_LINUX_SPI_AVAILABLE) && defined(CONFIG_LINUX_SPI_ENABLE) 564 #define CONFIG_LCDGFX_PLATFORM_SPI 566 #if defined(SDL_EMULATION) 600 #elif defined(CONFIG_ESP32_SPI_AVAILABLE) && defined(CONFIG_ESP32_SPI_ENABLE) 601 #define CONFIG_LCDGFX_PLATFORM_SPI 618 #elif defined(CONFIG_ESP8266_SPI_AVAILABLE) && defined(CONFIG_ESP8266_SPI_ENABLE) 619 #define CONFIG_LCDGFX_PLATFORM_SPI 636 #elif defined(CONFIG_USI_SPI_AVAILABLE) && defined(CONFIG_USI_SPI_ENABLE) 637 #define CONFIG_LCDGFX_PLATFORM_SPI 655 #elif defined(PICO_BOARD) 656 #define CONFIG_LCDGFX_PLATFORM_SPI Class implements i2c software interface for AVR platform.
void lcd_randomSeed(int seed)
Initializes RND device.
int lcd_gpioRead(int pin)
Reads gpio pin value.
Class implements i2c interface for Linux via i2c-dev.
Class implements i2c support via Wire library for Arduino platforms.
void lcd_attachInterrupt(int pin, void(*interrupt)(), int level)
Attaches interrupt handler to pin.
Class implements AVR i2c support via TWI hardware block.
void lcd_gpioWrite(int pin, int level)
Writes value to gpio.
SSD1306 SPI USI communication functions.
uint32_t lcd_micros(void)
returns 32-bit timestamp from system power-up in microseconds
int lcdint_t
internal int type, used by ssd1306 library.
uint8_t lcd_pgmReadByte(const void *ptr)
Read single data byte directly from flash.
unsigned int lcduint_t
internal int type, used by ssd1306 library.
Class implements SPI support for Arduino platforms.
void lcd_eepromWriteWord(const void *ptr, uint16_t val)
Writes 16-bit to eeprom.
void lcd_gpioMode(int pin, int mode)
Sets gpio pin mode.
Class implements AVR USI spi support via hardware module.
Class implements spi bus for linux via spidev interface.
Class implements I2c interface for ESP32 controllers.
Class implements spi support for esp32 platform.
lcdgfx modules configuration.
void lcd_delayUs(unsigned long us)
Forces current thread to sleeps for specified number of microseconds.
uint32_t lcd_millis(void)
returns 32-bit timestamp from system power-up in milliseconds
int lcd_random(int max)
Returns random number in range [0;max].
Class implements AVR spi support via hardware module.
uint16_t lcd_eepromReadWord(const void *ptr)
Reads 16-bit from eeprom.
LCD basic custom interface class.
embedded LCDGFX AVR i2c communication functions
int lcd_adcRead(int pin)
Read ADC data.
void lcd_delay(unsigned long ms)
Forces current thread to sleeps for specified number of milliseconds.