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