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