i2c.h
Go to the documentation of this file.
1 /*
2  * KubOS HAL
3  * Copyright (C) 2016 Kubos Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
27 #ifndef K_I2C_H
28 #define K_I2C_H
29 
30 #include <stdint.h>
31 #include "FreeRTOS.h"
32 #include "semphr.h"
33 
44 #ifndef K_NUM_I2CS
45 #define K_NUM_I2CS YOTTA_CFG_HARDWARE_I2CCOUNT
46 #endif
47 
58 #ifndef DEFAULT_I2C
59 #define DEFAULT_I2C YOTTA_CFG_HARDWARE_DEFAULTS_I2C
60 #endif
61 
65 typedef enum {
66  K_I2C1 = 0,
67  K_I2C2 = 1
68 } KI2CNum;
69 
73 typedef enum {
77 
82 typedef enum {
83  K_MASTER = 0,
85 } I2CRole;
86 
90 typedef struct {
93  uint32_t clock_speed;
94 } KI2CConf;
95 
99 typedef struct {
102  SemaphoreHandle_t i2c_lock;
103 } KI2C;
104 
108 typedef enum {
109  I2C_OK = 0,
118 } KI2CStatus;
119 
125 void k_i2c_init(KI2CNum i2c, KI2CConf *conf);
126 
131 void k_i2c_terminate(KI2CNum i2c);
132 
138 
142 void k_i2c_default_init();
143 
149 
163 KI2CStatus k_i2c_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
164 
178 KI2CStatus k_i2c_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
179 
186 
192 void kprv_i2c_dev_init(KI2CNum i2c);
193 
200 
210 KI2CStatus kprv_i2c_master_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
211 
221 KI2CStatus kprv_i2c_master_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
222 
233 KI2CStatus kprv_i2c_slave_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
234 
245 KI2CStatus kprv_i2c_slave_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len);
246 
247 #endif
248 
249 /* @} */
Definition: i2c.h:99
Definition: i2c.h:109
Definition: i2c.h:67
KI2CStatus kprv_i2c_slave_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
Definition: i2c.h:114
Definition: i2c.h:75
uint32_t clock_speed
Definition: i2c.h:93
void kprv_i2c_dev_init(KI2CNum i2c)
Definition: i2c.h:110
Definition: i2c.h:83
I2CRole role
Definition: i2c.h:92
Definition: i2c.h:117
I2CAddressingMode
Definition: i2c.h:73
KI2CStatus kprv_i2c_slave_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
KI2CStatus k_i2c_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
I2CAddressingMode addressing_mode
Definition: i2c.h:91
Definition: i2c.h:115
void k_i2c_default_dev_init(KI2CNum i2c)
KI2CStatus kprv_i2c_master_write(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
KI2CConf conf
Definition: i2c.h:101
void k_i2c_init(KI2CNum i2c, KI2CConf *conf)
Definition: i2c.h:116
Definition: i2c.h:74
KI2CStatus k_i2c_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
KI2CStatus
Definition: i2c.h:108
SemaphoreHandle_t i2c_lock
Definition: i2c.h:102
void kprv_i2c_dev_terminate(KI2CNum i2c)
void k_i2c_terminate(KI2CNum i2c)
KI2CConf k_i2c_conf_defaults(void)
KI2CNum bus_num
Definition: i2c.h:100
KI2CStatus kprv_i2c_master_read(KI2CNum i2c, uint16_t addr, uint8_t *ptr, int len)
Definition: i2c.h:111
I2CRole
Definition: i2c.h:82
Definition: i2c.h:84
Definition: i2c.h:90
Definition: i2c.h:113
KI2C * kprv_i2c_get(KI2CNum i2c)
KI2CNum
Definition: i2c.h:65
void k_i2c_default_init()
Definition: i2c.h:66
Definition: i2c.h:112