embox
1/**
2* @file
3* @brief
4*
5* @date 06.02.2020
6* @author Alexander Kalmuk
7*/
8#include <stdint.h>9#include <framework/mod/options.h>10#include <drivers/i2c/i2c.h>11
12#include "l3g4200d.h"13#include "l3g4200d_transfer.h"14
15#define L3G4200D_I2C_ADDR 0x6916#define L3G4200D_I2C_BUS OPTION_GET(NUMBER, i2c_bus)17
18struct l3g4200d_dev {19int i2c_bus;20int i2c_addr;21};22
23struct l3g4200d_dev l3g4200d_dev0 = {24.i2c_bus = L3G4200D_I2C_BUS,25.i2c_addr = L3G4200D_I2C_ADDR26};27
28int l3g4200d_hw_init(struct l3g4200d_dev *dev) {29/* Do nothing */30return 0;31}
32
33int l3g4200d_readb(struct l3g4200d_dev *dev, int offset, uint8_t *ret) {34if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr,35(uint8_t *) &offset, 1) < 0) {36return -1;37}38if (i2c_bus_read(dev->i2c_bus, dev->i2c_addr, ret, 1) < 0) {39return -1;40}41return 0;42}
43
44int l3g4200d_writeb(struct l3g4200d_dev *dev,45int offset, uint8_t val) {46uint16_t tmp = (offset & 0xFF) | (val << 8);47if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr, (void *) &tmp, 2)) {48return -1;49}50return 0;51}
52