Eurobot_2012_Secondary

Dependencies:   mbed tvmet

Committer:
narshu
Date:
Fri Apr 20 21:32:24 2012 +0000
Revision:
0:fbfafa6bf5f9

        

Who changed what in which revision?

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