Statistics
| Branch: | Revision:

root / arduino-1.0 / libraries / Wire / Wire.h @ 58d82c77

History | View | Annotate | Download (1.99 KB)

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
#include "Stream.h"
25

    
26
#define BUFFER_LENGTH 32
27

    
28
class TwoWire : public Stream
29
{
30
  private:
31
    static uint8_t rxBuffer[];
32
    static uint8_t rxBufferIndex;
33
    static uint8_t rxBufferLength;
34

    
35
    static uint8_t txAddress;
36
    static uint8_t txBuffer[];
37
    static uint8_t txBufferIndex;
38
    static uint8_t txBufferLength;
39

    
40
    static uint8_t transmitting;
41
    static void (*user_onRequest)(void);
42
    static void (*user_onReceive)(int);
43
    static void onRequestService(void);
44
    static void onReceiveService(uint8_t*, int);
45
  public:
46
    TwoWire();
47
    void begin();
48
    void begin(uint8_t);
49
    void begin(int);
50
    void beginTransmission(uint8_t);
51
    void beginTransmission(int);
52
    uint8_t endTransmission(void);
53
    uint8_t requestFrom(uint8_t, uint8_t);
54
    uint8_t requestFrom(int, int);
55
    virtual size_t write(uint8_t);
56
    virtual size_t write(const uint8_t *, size_t);
57
    virtual int available(void);
58
    virtual int read(void);
59
    virtual int peek(void);
60
        virtual void flush(void);
61
    void onReceive( void (*)(int) );
62
    void onRequest( void (*)(void) );
63
  
64
    using Print::write;
65
};
66

    
67
extern TwoWire Wire;
68

    
69
#endif
70