cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

lws-i2c.h (2061B)


      1/*
      2 * Generic I2C ops
      3 *
      4 * Copyright (C) 2019 - 2020 Andy Green <andy@warmcat.com>
      5 *
      6 * Permission is hereby granted, free of charge, to any person obtaining a copy
      7 * of this software and associated documentation files (the "Software"), to
      8 * deal in the Software without restriction, including without limitation the
      9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
     10 * sell copies of the Software, and to permit persons to whom the Software is
     11 * furnished to do so, subject to the following conditions:
     12 *
     13 * The above copyright notice and this permission notice shall be included in
     14 * all copies or substantial portions of the Software.
     15 *
     16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
     22 * IN THE SOFTWARE.
     23 *
     24 * This is like an abstract class for i2c, a real implementation provides
     25 * functions for the ops that use the underlying OS arrangements.
     26 */
     27
     28#if !defined(__LWS_I2C_H__)
     29#define __LWS_I2C_H__
     30
     31#include <stdint.h>
     32#include <stddef.h>
     33
     34typedef struct lws_i2c_ops {
     35	int  (*init)(const struct lws_i2c_ops *ctx);
     36	int  (*start)(const struct lws_i2c_ops *ctx);
     37	void (*stop)(const struct lws_i2c_ops *ctx);
     38	int  (*write)(const struct lws_i2c_ops *ctx, uint8_t data);
     39	int  (*read)(const struct lws_i2c_ops *ctx);
     40	void (*set_ack)(const struct lws_i2c_ops *octx, int ack);
     41} lws_i2c_ops_t;
     42
     43/*
     44 * These are implemented by calling the ops above, and so are generic
     45 */
     46
     47LWS_VISIBLE LWS_EXTERN int
     48lws_i2c_command(const lws_i2c_ops_t *ctx, uint8_t ads7, uint8_t c);
     49
     50LWS_VISIBLE LWS_EXTERN int
     51lws_i2c_command_list(const lws_i2c_ops_t *ctx, uint8_t ads7, const uint8_t *buf,
     52		     size_t len);
     53
     54#endif