/* * lws-minimal-esp32 * * Written in 2010-2020 by Andy Green <andy@warmcat.com> * * This file is made available under the Creative Commons CC0 1.0 * Universal Public Domain Dedication. */ #include <stdint.h> #include <stddef.h> #include "i2c.h" #include "gpio-esp32.h" typedef struct lws_bb_i2c { lws_i2c_ops_t bb_ops; /* init to lws_bb_i2c_ops */ /* implementation-specific members */ _lws_plat_gpio_t scl; _lws_plat_gpio_t sda; const lws_gpio_ops_t *gpio; void (*delay)(void); } lws_bb_i2c_t; #define lws_bb_i2c_ops \ { \ .start = lws_bb_i2c_start, \ .stop = lws_bb_i2c_stop, \ .write = lws_bb_i2c_write, \ .read = lws_bb_i2c_read, \ .set_ack = lws_bb_i2c_set_ack, \ } int lws_bb_i2c_start(lws_i2c_ops_t *octx); void lws_bb_i2c_stop(lws_i2c_ops_t *octx); int lws_bb_i2c_write(lws_i2c_ops_t *octx, uint8_t data); int lws_bb_i2c_read(lws_i2c_ops_t *octx); void lws_bb_i2c_set_ack(lws_i2c_ops_t *octx, int ack);