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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/****************************************************************************
*
* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Alternatively, this software may be distributed under the terms of BSD
* license.
*
* See README and COPYING for more details.
*
****************************************************************************/
/**
*
* @file i2c-api.h
*
* @brief This file contains definitions for performing i2c operations
* on the gumstix.
*
****************************************************************************/
#if !defined( I2C_API_H )
#define I2C_API_H
// ---- Include Files -------------------------------------------------------
#include <inttypes.h>
#include "i2c.h"
// ---- Constants and Types -------------------------------------------------
#define I2C_USE_CRC 1
#define I2C_NO_CRC 0
// ---- Variable Externs ----------------------------------------------------
// ---- Function Prototypes -------------------------------------------------
void I2cSetSlaveAddress
(
int i2cDev, ///< Handle to i2c-dev file
I2C_Addr_t i2cAddr, ///< 7 bit i2c address to use
int useCrc ); ///< Should CRC's be used?
int I2cTransfer
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
const void *wrData, ///< Data to write
uint8_t wrLen, ///< Number of bytes to write (or in 0x80 for a block write)
void *rdData, ///< Place to store data read
uint8_t rdLen, ///< Number of bytes to read (or in 0x80 for a block read)
uint8_t *bytesReadp ///< Place to store number of bytes read
);
int I2cProcessBlock
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
const void *wrData, ///< Data to write
uint8_t wrLen, ///< Number of bytes to write
void *rdData, ///< Place to store data read
uint8_t rdLen, ///< Number of bytes to read
uint8_t *bytesReadp ///< Place to store number of bytes read
);
int I2cReadBlock
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
void *rdData, ///< Place to store data read
uint8_t rdLen, ///< Number of bytes to read
uint8_t *bytesReadp ///< Place to store number of bytes read
);
int I2cReadByte
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
uint8_t *rdByte ///< Place to store byte to read
);
int I2cReadBytes
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
void *rdByte, ///< Place to store bytes read
uint8_t rdLen ///< Number of bytes to read
);
int I2cWriteBlock
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
const void *wrData, ///< Data to write
uint8_t wrLen ///< Number of bytes to write
);
int I2cWriteByte
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
uint8_t wrByte ///< Byte to write
);
int I2cWriteBytes
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t cmd, ///< Command to send
const void *wrByte, ///< Bytes to write
uint8_t wrLen ///< Number of bytes to write
);
int I2cReceiveByte
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t *rdByte ///< Place to store byte read
);
int I2cReceiveBytes
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t *rdData, ///< Place to store byte read
uint8_t rdLen ///< Number of bytes to read
);
int I2cSendByte
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t wrByte ///< Byte to write
);
int I2cSendBytes
(
int i2cDev, ///< Handle to i2c-dev file
uint8_t *wrData, ///< Pointer to data to write.
uint8_t wrLen ///< Number of bytes to write.
);
#endif // I2C_API_H
|