LTPS C++ API
Ci2c.h
1 
5 
6 #ifndef __CI2C_H__
7 #define __CI2C_H__
8 
9 #include <unistd.h>
10 #include <errno.h>
11 #include <string.h>
12 #include <sys/types.h>
13 #include <stdint.h>
14 
18 struct i2cmap_t {
20  const char *name;
22  uint8_t id;
23 };
24 
27 class Ci2c {
28 
29 private:
30 
31  long addr;
32 
33 protected:
34 
35  int f_rw;
36  int busn;
37  int open_x( uint16_t _busn);
38 
39 public:
40 
41  Ci2c( void) { this->busn = this->addr = this->f_rw = -1; }
42  Ci2c( Ci2c &_o) { this->busn = _o.busn; this->addr = this->f_rw = -1; }
43  virtual ~Ci2c( void) {
44  if ( this->f_rw >= 0) close( this->f_rw);
45  }
46 
51  int set_bus( uint16_t _busn);
52  int set_bus( const char *_buss, i2cmap_t *_map = NULL);
53  int cur_bus( void) { return( this->busn); }
55 
63  virtual int R1b( uint16_t _addr, uint8_t _reg, uint8_t &_b) = 0;
64  virtual int W1b( uint16_t _addr, uint8_t _reg, uint8_t _b) = 0;
65  virtual int R2b( uint16_t _addr, uint8_t _reg, uint16_t &_b) = 0;
66  virtual int W2b( uint16_t _addr, uint8_t _reg, uint16_t _b) = 0;
67  // max block size == 32bytes
68  virtual int Rbb( uint16_t _addr, uint8_t _reg, uint8_t *_b, uint8_t _blen) = 0;
69  virtual int Wbb( uint16_t _addr, uint8_t _reg, uint8_t *_b, uint8_t _blen) = 0;
70  // quick type R/W (command-reg is data also)
71  virtual int Rqb( uint16_t _addr, uint8_t _reg, uint8_t *_b, uint8_t _blen) = 0;
72  virtual int Wqb( uint16_t _addr, uint8_t _reg, uint8_t *_b, uint8_t _blen) = 0;
74 
82  // _addr may be 7 or 10 bits
86  int set_slave( uint16_t _addr);
87 
89  static int find_bus( const char *_sock);
90 
91 }; // class /
92 
93 #endif
Base Virtual I2C I/O class.
Definition: Ci2c.h:27
const char * name
Bus name, "-tps" or "-s05" for example.
Definition: Ci2c.h:20
static int find_bus(const char *_sock)
I2C bus name to # mapping structure.
Definition: Ci2c.h:18
int set_slave(uint16_t _addr)
Set slave device to work with. No need to call it obviously. Call it only for test if device exists...
uint8_t id
Real bus ID, 1 for example.
Definition: Ci2c.h:22