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