I2C interface for our mbed.

Fork of I2Cinterfaces by wimbeaumont Project

Committer:
katrijnverhasselt
Date:
Fri Apr 01 08:39:58 2016 +0000
Revision:
2:6dafea14e21e
Parent:
1:80ebfbf95667
I2C interface of our Mbed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:c65947f64a8b 1 #ifndef __MBEDI2CINTERFACE_H
wbeaumont 0:c65947f64a8b 2 #define __MBEDI2CINTERFACE_H
wbeaumont 0:c65947f64a8b 3
katrijnverhasselt 2:6dafea14e21e 4 #include "I2C.h"
katrijnverhasselt 2:6dafea14e21e 5
wbeaumont 0:c65947f64a8b 6 #define VERSION_MBEDI2CInterface_HDR "1.00"
wbeaumont 0:c65947f64a8b 7
wbeaumont 0:c65947f64a8b 8
wbeaumont 0:c65947f64a8b 9 class MBEDI2CInterface :public I2CInterface {
wbeaumont 0:c65947f64a8b 10
katrijnverhasselt 2:6dafea14e21e 11 mbed::I2C i2cdev;
wbeaumont 0:c65947f64a8b 12 public :
wbeaumont 0:c65947f64a8b 13
katrijnverhasselt 2:6dafea14e21e 14 MBEDI2CInterface(PinName sda, PinName scl)
katrijnverhasselt 2:6dafea14e21e 15 : getVersion(VERSION_MBEDI2CInterface_HDR, VERSION_MBEDI2CInterface_HDR, __TIME__, __DATE__),
katrijnverhasselt 2:6dafea14e21e 16 i2cdev(sda,scl) {
wbeaumont 0:c65947f64a8b 17 // no init code yet
katrijnverhasselt 2:6dafea14e21e 18 }
katrijnverhasselt 2:6dafea14e21e 19 // next could perhaps more efficient but not yet investigated
katrijnverhasselt 2:6dafea14e21e 20
katrijnverhasselt 2:6dafea14e21e 21 virtual void frequency (int hz){
katrijnverhasselt 2:6dafea14e21e 22 return i2cdev.frequency(hz) ;
katrijnverhasselt 2:6dafea14e21e 23 }
katrijnverhasselt 2:6dafea14e21e 24
katrijnverhasselt 2:6dafea14e21e 25 virtual int read (int address, char *data, int length, bool repeated=false) {
katrijnverhasselt 2:6dafea14e21e 26 return i2cdev.read(address, data, length, repeated);
katrijnverhasselt 2:6dafea14e21e 27 }
katrijnverhasselt 2:6dafea14e21e 28
katrijnverhasselt 2:6dafea14e21e 29 // Read a single byte from the I2C bus.
katrijnverhasselt 2:6dafea14e21e 30 virtual int read(int ack) {
katrijnverhasselt 2:6dafea14e21e 31 return i2cdev.read(ack);
katrijnverhasselt 2:6dafea14e21e 32 }
katrijnverhasselt 2:6dafea14e21e 33
katrijnverhasselt 2:6dafea14e21e 34 virtual int write(int address, const char *data, int length, bool repeated=false){
katrijnverhasselt 2:6dafea14e21e 35 return i2cdev.write(address, data, length, repeated);
katrijnverhasselt 2:6dafea14e21e 36 }
katrijnverhasselt 2:6dafea14e21e 37
katrijnverhasselt 2:6dafea14e21e 38 // Write single byte out on the I2C bus.
katrijnverhasselt 2:6dafea14e21e 39 virtual int write(int data) {
katrijnverhasselt 2:6dafea14e21e 40 return i2cdev.write(data);
katrijnverhasselt 2:6dafea14e21e 41 }
katrijnverhasselt 2:6dafea14e21e 42 // Creates a start condition on the I2C bus
katrijnverhasselt 2:6dafea14e21e 43 virtual void start(void) {
katrijnverhasselt 2:6dafea14e21e 44 i2cdev.start();
katrijnverhasselt 2:6dafea14e21e 45 }
katrijnverhasselt 2:6dafea14e21e 46 // Creates a stop condition on the I2C bus.
katrijnverhasselt 2:6dafea14e21e 47 virtual void stop(void) {
katrijnverhasselt 2:6dafea14e21e 48 i2cdev.stop();
katrijnverhasselt 2:6dafea14e21e 49 }
katrijnverhasselt 2:6dafea14e21e 50
katrijnverhasselt 2:6dafea14e21e 51 virtual int transfer(int address, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, void* callbackfunction, bool repeated=false){
katrijnverhasselt 2:6dafea14e21e 52 return -1; // seems transfer not supported in mbed or not correctly called below
katrijnverhasselt 2:6dafea14e21e 53 // return i2cdev.transfer (address, tx_buffer, tx_length, rx_buffer, rx_length, callback, event, repeated);
katrijnverhasselt 2:6dafea14e21e 54 }
wbeaumont 0:c65947f64a8b 55
wbeaumont 0:c65947f64a8b 56
katrijnverhasselt 2:6dafea14e21e 57 } ;
wbeaumont 0:c65947f64a8b 58
wbeaumont 0:c65947f64a8b 59
wbeaumont 0:c65947f64a8b 60
wbeaumont 0:c65947f64a8b 61
wbeaumont 0:c65947f64a8b 62
wbeaumont 0:c65947f64a8b 63 #endif