Aruna
I2C_master.cpp
Go to the documentation of this file.
1 //
2 // Created by noeel on 15-10-20.
3 //
4 
6 
7 aruna::err_t aruna::driver::I2C_master::read(uint8_t address, uint8_t reg, uint8_t *buffer, size_t buffer_size) {
8  pthread_mutex_lock(&line_busy);
9  err_t ret;
10  ret = _read(address, reg, buffer, buffer_size);
11  pthread_mutex_unlock(&line_busy);
12  return ret;
13 }
14 
15 aruna::err_t aruna::driver::I2C_master::write(uint8_t address, uint8_t reg, uint8_t *data, size_t data_size) {
16  pthread_mutex_lock(&line_busy);
17  err_t ret;
18  ret = _write(address, reg, data, data_size);
19  pthread_mutex_unlock(&line_busy);
20  return ret;
21 }
22 
24  pthread_mutexattr_init(&line_busy_attr);
25  pthread_mutex_init(&line_busy, &line_busy_attr);
26 }
27 
29  pthread_mutex_destroy(&line_busy);
30  pthread_mutexattr_destroy(&line_busy_attr);
31 }
32 
33 aruna::err_t aruna::driver::I2C_master::write(uint8_t address, uint8_t reg, uint8_t data) {
34  return write(address, reg, &data, 1);
35 }
36 
37 aruna::err_t aruna::driver::I2C_master::read(uint8_t address, uint8_t reg, uint8_t &buffer) {
38  return read(address, reg, &buffer, 1);
39 }
40 
42 // TODO
43  return aruna::err_t::OK;
44 }
45 
47  // TODO
48  return aruna::err_t::OK;
49 }
50 
52  // TODO
53  return aruna::err_t::OK;
54 }
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
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