1/*
2  TwoWire.h - TWI/I2C library for Arduino & Wiring
3  Copyright (c) 2006 Nicholas Zambetti.  All right reserved.
4
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  Lesser General Public License for more details.
14
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18*/
19
20#ifndef TwoWire_h
21#define TwoWire_h
22
23#include <inttypes.h>
24
25#define BUFFER_LENGTH 32
26
27class TwoWire
28{
29  private:
30    static uint8_t rxBuffer[];
31    static uint8_t rxBufferIndex;
32    static uint8_t rxBufferLength;
33
34    static uint8_t txAddress;
35    static uint8_t txBuffer[];
36    static uint8_t txBufferIndex;
37    static uint8_t txBufferLength;
38
39    static uint8_t transmitting;
40    static void (*user_onRequest)(void);
41    static void (*user_onReceive)(int);
42    static void onRequestService(void);
43    static void onReceiveService(uint8_t*, int);
44  public:
45    TwoWire();
46    void begin();
47    void begin(uint8_t);
48    void begin(int);
49    void beginTransmission(uint8_t);
50    void beginTransmission(int);
51    uint8_t endTransmission(void);
52    uint8_t requestFrom(uint8_t, uint8_t);
53    uint8_t requestFrom(int, int);
54    void send(uint8_t);
55    void send(uint8_t*, uint8_t);
56    void send(int);
57    void send(char*);
58    uint8_t available(void);
59    uint8_t receive(void);
60    void onReceive( void (*)(int) );
61    void onRequest( void (*)(void) );
62};
63
64extern TwoWire Wire;
65
66#endif
67
68