1d4afb5ceSopenharmony_ci/*
2d4afb5ceSopenharmony_ci * Generic i2c ops
3d4afb5ceSopenharmony_ci *
4d4afb5ceSopenharmony_ci * These ops always appear first in an implementation-specific
5d4afb5ceSopenharmony_ci * object, so the generic ops can be cast to the implementation-
6d4afb5ceSopenharmony_ci * specific object in the handlers.
7d4afb5ceSopenharmony_ci *
8d4afb5ceSopenharmony_ci * Written in 2010-2020 by Andy Green <andy@warmcat.com>
9d4afb5ceSopenharmony_ci *
10d4afb5ceSopenharmony_ci * This file is made available under the Creative Commons CC0 1.0
11d4afb5ceSopenharmony_ci * Universal Public Domain Dedication.
12d4afb5ceSopenharmony_ci */
13d4afb5ceSopenharmony_ci
14d4afb5ceSopenharmony_ci#if !defined(__LWS_I2C_H__)
15d4afb5ceSopenharmony_ci#define __LWS_I2C_H__
16d4afb5ceSopenharmony_ci
17d4afb5ceSopenharmony_ci#include <stdint.h>
18d4afb5ceSopenharmony_ci#include <stddef.h>
19d4afb5ceSopenharmony_ci
20d4afb5ceSopenharmony_citypedef struct lws_i2c_ops {
21d4afb5ceSopenharmony_ci	int  (*start)(struct lws_i2c_ops *ctx);
22d4afb5ceSopenharmony_ci	void (*stop)(struct lws_i2c_ops *ctx);
23d4afb5ceSopenharmony_ci	int  (*write)(struct lws_i2c_ops *ctx, uint8_t data);
24d4afb5ceSopenharmony_ci	int  (*read)(struct lws_i2c_ops *ctx);
25d4afb5ceSopenharmony_ci	void (*set_ack)(struct lws_i2c_ops *octx, int ack);
26d4afb5ceSopenharmony_ci} lws_i2c_ops_t;
27d4afb5ceSopenharmony_ci
28d4afb5ceSopenharmony_ciint
29d4afb5ceSopenharmony_cilws_i2c_command(lws_i2c_ops_t *ctx, uint8_t ads, uint8_t c);
30d4afb5ceSopenharmony_ci
31d4afb5ceSopenharmony_ciint
32d4afb5ceSopenharmony_cilws_i2c_command_list(lws_i2c_ops_t *ctx, uint8_t ads, const uint8_t *buf, size_t len);
33d4afb5ceSopenharmony_ci
34d4afb5ceSopenharmony_ci#endif
35d4afb5ceSopenharmony_ci
36