Subversion Repositories Projects

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*
  TwoWire.h - TWI/I2C library for Arduino & Wiring
  Copyright (c) 2006 Nicholas Zambetti.  All right reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

  Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts
*/


#ifndef TwoWire_h
#define TwoWire_h

#include <inttypes.h>
//#include "Stream.h"

#define BUFFER_LENGTH 32

//class TwoWire : public Stream
//{
//  private:
//    static uint8_t rxBuffer[];
//    static uint8_t rxBufferIndex;
//    static uint8_t rxBufferLength;
//
//    static uint8_t txAddress;
//    static uint8_t txBuffer[];
//    static uint8_t txBufferIndex;
//    static uint8_t txBufferLength;
//
//    static uint8_t transmitting;
//    static void (*user_onRequest)(void);
//    static void (*user_onReceive)(int);




  //public:
//    TwoWire();
    void Wire_begin();
    void Wire_begin_uint(uint8_t);
    void Wire_begin_int(int);

    void Wire_beginTransmission_uint(uint8_t);
    void Wire_beginTransmission_int(int);

    uint8_t Wire_endTransmission(void);
    uint8_t Wire_endTransmission_Stop(uint8_t);

    uint8_t Wire_requestFrom_uint(uint8_t, uint8_t);
    uint8_t Wire_requestFrom_Stop_uint(uint8_t, uint8_t, uint8_t);
    uint8_t Wire_requestFrom_int(int, int);
    uint8_t Wire_requestFrom_Stop_int(int, int, int);

    uint8_t Wire_write(uint8_t);
//    virtual size_t Wire_writeP(const uint8_t *, size_t);
//
      int Wire_available(void);
      int Wire_read(void);
      int Wire_peek(void);
      void flush(void);

      void Wire_onReceive( void (*)(int) );
      void Wire_onRequest( void (*)(void) );


      void Wire_onRequestService(void);
      void Wire_onReceiveService(uint8_t*, int);

//
//    inline size_t write(unsigned long n) { return write((uint8_t)n); }
//    inline size_t write(long n) { return write((uint8_t)n); }
//    inline size_t write(unsigned int n) { return write((uint8_t)n); }
//    inline size_t write(int n) { return write((uint8_t)n); }
//    using Print::write;
//};

//extern TwoWire Wire;

#endif