add missing sd_log.[ch] files
[protos/imu.git] / i2c_helper.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include <timer.h>
5
6 #include <aversive/wait.h>
7 #include <uart.h>
8
9 #include "i2cm_sw.h"
10
11 uint8_t read_reg(uint8_t address_dev, uint8_t address_reg, uint8_t * value)
12 {
13         uint8_t err = 0;
14         err = i2cm_send(address_dev, &address_reg, 1);
15         if (err) {
16                 printf("read reg: i2c error send\r\n");
17                 return err;
18         }
19         err = i2cm_recv(address_dev, 1);
20         if (err) {
21                 printf("read reg: i2c error recv\r\n");
22                 return err;
23         }
24         err = i2cm_get_recv_buffer(value, 1);
25         if (err != 1) {
26                 printf("read reg: i2c error get recv\r\n");
27                 return 0xff;
28         }
29         return 0;
30
31 }
32
33
34 uint8_t read_reg_len(uint8_t address_dev, uint8_t address_reg,
35         uint8_t *values, uint8_t len)
36 {
37         uint8_t err = 0;
38         err = i2cm_send(address_dev, &address_reg, 1);
39         if (err) {
40                 printf("read reg len: i2c error send\r\n");
41                 return err;
42         }
43         err = i2cm_recv(address_dev, len);
44         if (err) {
45                 printf("read reg len: i2c error recv\r\n");
46                 return err;
47         }
48         err = i2cm_get_recv_buffer(values, len);
49         if (err != len) {
50                 printf("read reg len: i2c error get recv\r\n");
51                 return 0xFF;
52         }
53         return 0;
54
55 }