1 /* 2 * lws-minimal-esp32 3 * 4 * Written in 2010-2020 by Andy Green <andy@warmcat.com> 5 * 6 * This file is made available under the Creative Commons CC0 1.0 7 * Universal Public Domain Dedication. 8 */ 9 10 #include <stdint.h> 11 #include <stddef.h> 12 #include "i2c.h" 13 #include "gpio-esp32.h" 14 15 typedef struct lws_bb_i2c { 16 lws_i2c_ops_t bb_ops; /* init to lws_bb_i2c_ops */ 17 18 /* implementation-specific members */ 19 20 _lws_plat_gpio_t scl; 21 _lws_plat_gpio_t sda; 22 23 const lws_gpio_ops_t *gpio; 24 void (*delay)(void); 25 } lws_bb_i2c_t; 26 27 #define lws_bb_i2c_ops \ 28 { \ 29 .start = lws_bb_i2c_start, \ 30 .stop = lws_bb_i2c_stop, \ 31 .write = lws_bb_i2c_write, \ 32 .read = lws_bb_i2c_read, \ 33 .set_ack = lws_bb_i2c_set_ack, \ 34 } 35 36 int 37 lws_bb_i2c_start(lws_i2c_ops_t *octx); 38 39 void 40 lws_bb_i2c_stop(lws_i2c_ops_t *octx); 41 42 int 43 lws_bb_i2c_write(lws_i2c_ops_t *octx, uint8_t data); 44 45 int 46 lws_bb_i2c_read(lws_i2c_ops_t *octx); 47 48 void 49 lws_bb_i2c_set_ack(lws_i2c_ops_t *octx, int ack); 50 51 52