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