Aruna
I2C_master.h
Go to the documentation of this file.
1 //
2 // Created by noeel on 14-10-20.
3 //
4 
5 #ifndef ARUNA_I2C_MASTER_H
6 #define ARUNA_I2C_MASTER_H
7 
8 #include <aruna/arunaTypes.h>
9 #include "pthread.h"
10 namespace aruna {
11  namespace driver {
12  class I2C_master {
13  private:
14  pthread_mutex_t line_busy;
15  pthread_mutexattr_t line_busy_attr;
16  virtual err_t _write(uint8_t address, uint8_t reg, uint8_t* data, size_t data_size) = 0;
17  virtual err_t _read(uint8_t address, uint8_t reg, uint8_t* buffer, size_t buffer_size) = 0;
18  public:
19  I2C_master();
20  ~I2C_master();
33  err_t write(uint8_t address, uint8_t reg, uint8_t* data, size_t data_size);
34 
46  err_t write(uint8_t address, uint8_t reg, uint8_t data);
47 
60  err_t read(uint8_t address, uint8_t reg, uint8_t* buffer, size_t buffer_size);
61 
73  err_t read(uint8_t address, uint8_t reg, uint8_t &buffer);
74 
75 // TODO write documentation and implement.
76  err_t lock(uint8_t i2c_address);
77  err_t try_lock(uint8_t i2c_address);
78  err_t unlock(uint8_t i2c_address);
79  };
80  }
81 }
82 
83 
84 
85 #endif //ARUNA_I2C_MASTER_H
Definition: comm.cpp:14
err_t read(uint8_t address, uint8_t reg, uint8_t *buffer, size_t buffer_size)
Read data from I²C slave.
Definition: I2C_master.cpp:7
pthread_mutex_t line_busy
Definition: I2C_master.h:14
virtual err_t _read(uint8_t address, uint8_t reg, uint8_t *buffer, size_t buffer_size)=0
err_t try_lock(uint8_t i2c_address)
Definition: I2C_master.cpp:46
virtual err_t _write(uint8_t address, uint8_t reg, uint8_t *data, size_t data_size)=0
pthread_mutexattr_t line_busy_attr
Definition: I2C_master.h:15
Link * driver
stores the driver.
Definition: comm.cpp:45
err_t write(uint8_t address, uint8_t reg, uint8_t *data, size_t data_size)
Write data to the I²C bus.
Definition: I2C_master.cpp:15
err_t lock(uint8_t i2c_address)
Definition: I2C_master.cpp:41
err_t unlock(uint8_t i2c_address)
Definition: I2C_master.cpp:51