no-OS
no_os_i2c.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef _NO_OS_I2C_H_
41 #define _NO_OS_I2C_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 
47 #include <stdint.h>
48 
49 /******************************************************************************/
50 /********************** Macros and Constants Definitions **********************/
51 /******************************************************************************/
52 
53 #define I2C_MAX_BUS_NUMBER 4
54 
55 /******************************************************************************/
56 /*************************** Types Declarations *******************************/
57 /******************************************************************************/
58 
65 
72  uint32_t device_id;
74  uint32_t max_speed_hz;
76  uint8_t slave_address;
80  void *extra;
81 };
82 
89  void* mutex;
91  uint8_t slave_number;
93  uint32_t device_id;
95  uint32_t max_speed_hz;
99  void *extra;
100 };
101 
102 
111  uint32_t device_id;
113  uint32_t max_speed_hz;
115  uint8_t slave_address;
119  void *extra;
120 };
121 
129  int32_t (*i2c_ops_init)(struct no_os_i2c_desc **,
130  const struct no_os_i2c_init_param *);
132  int32_t (*i2c_ops_write)(struct no_os_i2c_desc *, uint8_t *, uint8_t, uint8_t);
134  int32_t (*i2c_ops_read)(struct no_os_i2c_desc *, uint8_t *, uint8_t, uint8_t);
136  int32_t (*i2c_ops_remove)(struct no_os_i2c_desc *);
137 };
138 
139 /******************************************************************************/
140 /************************ Functions Declarations ******************************/
141 /******************************************************************************/
142 
143 /* Initialize the I2C communication peripheral. */
144 int32_t no_os_i2c_init(struct no_os_i2c_desc **desc,
145  const struct no_os_i2c_init_param *param);
146 
147 /* Free the resources allocated by no_os_i2c_init(). */
148 int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc);
149 
150 /* Write data to a slave device. */
151 int32_t no_os_i2c_write(struct no_os_i2c_desc *desc,
152  uint8_t *data,
153  uint8_t bytes_number,
154  uint8_t stop_bit);
155 
156 /* Read data from a slave device. */
157 int32_t no_os_i2c_read(struct no_os_i2c_desc *desc,
158  uint8_t *data,
159  uint8_t bytes_number,
160  uint8_t stop_bit);
161 
162 /* Initialize I2C bus descriptor*/
163 int32_t no_os_i2cbus_init(const struct no_os_i2c_init_param *param);
164 
165 /* Free the resources allocated for I2C bus desc*/
166 void no_os_i2cbus_remove(uint32_t bus_number);
167 
168 #endif // _NO_OS_I2C_H_
no_os_i2cbus_desc
Structure holding I2C bus descriptor.
Definition: no_os_i2c.h:87
no_os_i2c_write
int32_t no_os_i2c_write(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Write data to slave device.
Definition: no_os_i2c.c:165
no_os_i2c_init
int32_t no_os_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition: no_os_i2c.c:58
no_os_i2c_platform_ops::i2c_ops_read
int32_t(* i2c_ops_read)(struct no_os_i2c_desc *, uint8_t *, uint8_t, uint8_t)
Definition: no_os_i2c.h:134
no_os_i2c_init_param::slave_address
uint8_t slave_address
Definition: no_os_i2c.h:76
no_os_i2c_remove
int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition: no_os_i2c.c:119
no_os_i2c_platform_ops::i2c_ops_write
int32_t(* i2c_ops_write)(struct no_os_i2c_desc *, uint8_t *, uint8_t, uint8_t)
Definition: no_os_i2c.h:132
no_os_i2cbus_remove
void no_os_i2cbus_remove(uint32_t bus_number)
Removes i2c bus instance.
Definition: no_os_i2c.c:137
no_os_i2c_desc::device_id
uint32_t device_id
Definition: no_os_i2c.h:111
no_os_i2c_init_param::extra
void * extra
Definition: no_os_i2c.h:80
no_os_i2cbus_desc::max_speed_hz
uint32_t max_speed_hz
Definition: no_os_i2c.h:95
no_os_i2c_desc::slave_address
uint8_t slave_address
Definition: no_os_i2c.h:115
no_os_i2cbus_init
int32_t no_os_i2cbus_init(const struct no_os_i2c_init_param *param)
Initialize the i2c bus communication peripheral.
Definition: no_os_i2c.c:92
no_os_i2c_init_param::max_speed_hz
uint32_t max_speed_hz
Definition: no_os_i2c.h:74
no_os_i2c_desc::bus
struct no_os_i2cbus_desc * bus
Definition: no_os_i2c.h:109
no_os_i2c_desc::max_speed_hz
uint32_t max_speed_hz
Definition: no_os_i2c.h:113
no_os_i2c_platform_ops
Structure holding I2C function pointers that point to the platform specific function.
Definition: no_os_i2c.h:127
no_os_i2c_platform_ops::i2c_ops_init
int32_t(* i2c_ops_init)(struct no_os_i2c_desc **, const struct no_os_i2c_init_param *)
Definition: no_os_i2c.h:129
no_os_i2c_desc::platform_ops
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:117
no_os_i2c_desc
Structure holding I2C address descriptor.
Definition: no_os_i2c.h:107
no_os_i2cbus_desc::extra
void * extra
Definition: no_os_i2c.h:99
no_os_i2c_read
int32_t no_os_i2c_read(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Read data from slave device.
Definition: no_os_i2c.c:196
no_os_i2cbus_desc::device_id
uint32_t device_id
Definition: no_os_i2c.h:93
no_os_i2cbus_desc::platform_ops
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:97
no_os_i2c_platform_ops::i2c_ops_remove
int32_t(* i2c_ops_remove)(struct no_os_i2c_desc *)
Definition: no_os_i2c.h:136
no_os_i2cbus_desc::mutex
void * mutex
Definition: no_os_i2c.h:89
no_os_i2c_init_param
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:70
no_os_i2cbus_desc::slave_number
uint8_t slave_number
Definition: no_os_i2c.h:91
no_os_i2c_init_param::platform_ops
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:78
no_os_i2c_desc::extra
void * extra
Definition: no_os_i2c.h:119
no_os_i2c_init_param::device_id
uint32_t device_id
Definition: no_os_i2c.h:72