summaryrefslogtreecommitdiff
path: root/recipes/i2c/files/i2c-api.h
blob: 73f9f209905aed162332c8681ab84e7c4ef9c9c5 (plain)
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