/
onion-i2c.h
72 lines (46 loc) · 1.69 KB
/
onion-i2c.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef _ONION_I2C_H_
#define _ONION_I2C_H_
#include <stdlib.h>
#include <unistd.h>
#ifndef __APPLE__
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
#endif
#include <sys/ioctl.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include <errno.h>
#include <onion-debug.h>
#define I2C_DEV_PATH "/dev/i2c-%d"
#define I2C_PRINT_BANNER "onion-i2c::"
#define I2C_BUFFER_SIZE 256
#define I2C_DEFAULT_ADAPTER 0
// for debugging
#ifndef __APPLE__
#define I2C_ENABLED 1
#endif
#ifdef __cplusplus
extern "C" {
#endif
// helper functions
int _i2c_getFd (int adapterNum, int *devHandle);
int _i2c_releaseFd (int devHandle);
int _i2c_setDevice (int devHandle, int addr);
int _i2c_setDevice10bit (int devHandle, int addr);
int _i2c_writeBuffer (int devNum, int devAddr, uint8_t *buffer, int size);
// i2c functions
int i2c_writeBuffer (int devNum, int devAddr, int addr, uint8_t *buffer, int size);
int i2c_writeBufferRaw (int devNum, int devAddr, uint8_t *buffer, int size);
int i2c_write (int devNum, int devAddr, int addr, int val);
int i2c_writeBytes (int devNum, int devAddr, int addr, int val, int numBytes);
int i2c_read (int devNum, int devAddr, int addr, uint8_t *buffer, int numBytes);
int i2c_readRaw (int devNum, int devAddr, uint8_t *buffer, int numBytes);
int i2c_readByte (int devNum, int devAddr, int addr, int *val);
int i2c_readMultiByteAddr (int devNum, int devAddr, uint8_t *addrBuffer, int addrLength, uint8_t *buffer, int dataLength);
int i2c_writeMultiByteAddr (int devNum, int devAddr, uint8_t *addrBuffer, int addrLength, uint8_t *buffer, int dataLength);
#ifdef __cplusplus
}
#endif
#endif // _ONION_I2C_H_