commit!

Committer:
narshu
Date:
Fri Jun 15 20:40:17 2012 +0000
Revision:
0:42026f893a2d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
narshu 0:42026f893a2d 1 #ifndef TSH_H
narshu 0:42026f893a2d 2 #define TSH_H
narshu 0:42026f893a2d 3
narshu 0:42026f893a2d 4 #include "rtos.h"
narshu 0:42026f893a2d 5
narshu 0:42026f893a2d 6 //Thread Safe Hardware
narshu 0:42026f893a2d 7
narshu 0:42026f893a2d 8 class TSI2C : public I2C {
narshu 0:42026f893a2d 9 public:
narshu 0:42026f893a2d 10
narshu 0:42026f893a2d 11 TSI2C( PinName sda,
narshu 0:42026f893a2d 12 PinName scl,
narshu 0:42026f893a2d 13 const char* name=NULL )
narshu 0:42026f893a2d 14 : I2C(sda, scl, name) { }
narshu 0:42026f893a2d 15
narshu 0:42026f893a2d 16
narshu 0:42026f893a2d 17 int read( int address,
narshu 0:42026f893a2d 18 char* data,
narshu 0:42026f893a2d 19 int length,
narshu 0:42026f893a2d 20 bool repeated = false ) {
narshu 0:42026f893a2d 21
narshu 0:42026f893a2d 22 rlock.lock();
narshu 0:42026f893a2d 23 int retval = I2C::read(address, data, length, repeated);
narshu 0:42026f893a2d 24 rlock.unlock();
narshu 0:42026f893a2d 25
narshu 0:42026f893a2d 26 return retval;
narshu 0:42026f893a2d 27 }
narshu 0:42026f893a2d 28
narshu 0:42026f893a2d 29 int read(int ack) {
narshu 0:42026f893a2d 30 rlock.lock();
narshu 0:42026f893a2d 31 int retval = I2C::read(ack);
narshu 0:42026f893a2d 32 rlock.unlock();
narshu 0:42026f893a2d 33
narshu 0:42026f893a2d 34 return retval;
narshu 0:42026f893a2d 35 }
narshu 0:42026f893a2d 36
narshu 0:42026f893a2d 37 int write( int address,
narshu 0:42026f893a2d 38 const char* data,
narshu 0:42026f893a2d 39 int length,
narshu 0:42026f893a2d 40 bool repeated = false ) {
narshu 0:42026f893a2d 41
narshu 0:42026f893a2d 42 wlock.lock();
narshu 0:42026f893a2d 43 int retval = I2C::write(address, data, length, repeated);
narshu 0:42026f893a2d 44 wlock.unlock();
narshu 0:42026f893a2d 45
narshu 0:42026f893a2d 46 return retval;
narshu 0:42026f893a2d 47 }
narshu 0:42026f893a2d 48
narshu 0:42026f893a2d 49 int write(int data) {
narshu 0:42026f893a2d 50 wlock.lock();
narshu 0:42026f893a2d 51 int retval = I2C::write(data);
narshu 0:42026f893a2d 52 wlock.unlock();
narshu 0:42026f893a2d 53
narshu 0:42026f893a2d 54 return retval;
narshu 0:42026f893a2d 55 }
narshu 0:42026f893a2d 56
narshu 0:42026f893a2d 57 private:
narshu 0:42026f893a2d 58 Mutex rlock;
narshu 0:42026f893a2d 59 Mutex wlock;
narshu 0:42026f893a2d 60 };
narshu 0:42026f893a2d 61
narshu 0:42026f893a2d 62 #endif