Pico-Arduino
HardwareI2C.h
1 /*
2  Copyright (c) 2016 Arduino LLC. All right reserved.
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Lesser General Public
6  License as published by the Free Software Foundation; either
7  version 2.1 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12  See the GNU Lesser General Public License for more details.
13 
14  You should have received a copy of the GNU Lesser General Public
15  License along with this library; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
19 #pragma once
20 
21 #include <inttypes.h>
22 #include "Stream.h"
23 
24 namespace arduino {
25 
26 class HardwareI2C : public Stream
27 {
28  public:
29  // bus master
30  virtual void begin() = 0;
31  // slave
32  virtual void begin(uint8_t address) = 0;
33  virtual void end() = 0;
34 
35  virtual void setClock(uint32_t freq) = 0;
36 
37  // Begin a transmission to the I2C slave device with the given address
38  virtual void beginTransmission(uint8_t address) = 0;
39  virtual uint8_t endTransmission(bool stopBit) = 0;
40  virtual uint8_t endTransmission(void) = 0;
41 
42  //Used by the master to request bytes from a slave device
43  virtual size_t requestFrom(uint8_t address, size_t len, bool stopBit) = 0;
44  //Used by the master to request bytes from a slave device
45  virtual size_t requestFrom(uint8_t address, size_t len) = 0;
46 
47  virtual void onReceive(void(*)(int)) = 0;
48  virtual void onRequest(void(*)(void)) = 0;
49 };
50 
51 }
52 
Definition: HardwareI2C.h:27
Definition: Stream.h:51