Zephyr Project API  3.3.0
A Scalable Open Source RTOS
i2c_emul.h
Go to the documentation of this file.
1
7/*
8 * Copyright 2020 Google LLC
9 * Copyright (c) 2020 Nordic Semiconductor ASA
10 *
11 * SPDX-License-Identifier: Apache-2.0
12 */
13#ifndef ZEPHYR_INCLUDE_DRIVERS_I2C_I2C_EMUL_H_
14#define ZEPHYR_INCLUDE_DRIVERS_I2C_I2C_EMUL_H_
15
16#include <zephyr/device.h>
17#include <zephyr/drivers/emul.h>
18#include <zephyr/sys/slist.h>
19#include <zephyr/types.h>
20
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32struct i2c_msg;
33struct i2c_emul_api;
34
36struct i2c_emul {
38
40 const struct emul *target;
41
42 /* API provided for this device */
43 const struct i2c_emul_api *api;
44
45 /* I2C address of the emulated device */
47};
48
62typedef int (*i2c_emul_transfer_t)(const struct emul *target, struct i2c_msg *msgs, int num_msgs,
63 int addr);
64
72int i2c_emul_register(const struct device *dev, struct i2c_emul *emul);
73
77};
78
79#ifdef __cplusplus
80}
81#endif
82
87#endif /* ZEPHYR_INCLUDE_DRIVERS_I2C_I2C_EMUL_H_ */
int(* i2c_emul_transfer_t)(const struct emul *target, struct i2c_msg *msgs, int num_msgs, int addr)
Definition: i2c_emul.h:62
int i2c_emul_register(const struct device *dev, struct i2c_emul *emul)
int target
Definition: main.c:68
Single-linked list implementation.
struct _snode sys_snode_t
Definition: slist.h:33
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
Definition: emul.h:67
Definition: i2c_emul.h:75
i2c_emul_transfer_t transfer
Definition: i2c_emul.h:76
Definition: i2c_emul.h:36
const struct emul * target
Definition: i2c_emul.h:40
sys_snode_t node
Definition: i2c_emul.h:37
const struct i2c_emul_api * api
Definition: i2c_emul.h:43
uint16_t addr
Definition: i2c_emul.h:46
One I2C Message.
Definition: i2c.h:184