i2csw: remove _NUM in function names
[protos/imu.git] / i2c_helper.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include <scheduler.h>
5 #include <timer.h>
6
7 #include <aversive/wait.h>
8 #include <uart.h>
9 #include <i2c.h>
10
11
12
13
14 uint8_t read_reg(uint8_t address_dev, uint8_t address_reg, uint8_t * value)
15 {
16         uint8_t err = 0;
17         err = i2c_send(address_dev, &address_reg, 1, I2C_CTRL_SYNC);
18         if (err) {
19                 printf("i2c error\r\n");
20                 return err;
21         }
22         err = i2c_recv(address_dev, 1, I2C_CTRL_SYNC);
23         if (err) {
24                 printf("i2c error\r\n");
25                 return err;
26         }
27         err = i2c_get_recv_buffer(value, 1);
28         if (err != 1) {
29                 printf("i2c error\r\n");
30                 return 0xff;
31         }
32         return 0;
33
34 }
35
36
37 uint8_t read_reg_len(uint8_t address_dev, uint8_t address_reg, uint8_t * values, uint8_t len)
38 {
39         uint8_t err = 0;
40         err = i2c_send(address_dev, &address_reg, 1, I2C_CTRL_SYNC);
41         if (err) {
42                 printf("i2c error\r\n");
43                 return err;
44         }
45         err = i2c_recv(address_dev, len, I2C_CTRL_SYNC);
46         if (err) {
47                 printf("i2c error\r\n");
48                 return err;
49         }
50         err = i2c_get_recv_buffer(values, len);
51         if (err != len) {
52                 printf("i2c error\r\n");
53                 return 0xDD;
54         }
55         return 0;
56
57 }