embox
1/**
2* @file
3* @brief
4*
5* @date 21.04.2023
6* @author Andrew Bursian
7*/
8
9#include <stdint.h>10#include <framework/mod/options.h>11#include <drivers/i2c/i2c.h>12
13#include "hts221.h"14#include "hts221_transfer.h"15
16#define HTS221_I2C_ADDR 0x5f17#define HTS221_I2C_BUS OPTION_GET(NUMBER, i2c_bus)18
19struct hts221_dev {20int i2c_bus;21int i2c_addr;22};23
24struct hts221_dev hts221_dev0 = {25.i2c_bus = HTS221_I2C_BUS,26.i2c_addr = HTS221_I2C_ADDR27};28
29int hts221_hw_init(struct hts221_dev *dev) {30/* Do nothing */31return 0;32}
33
34int hts221_readb(struct hts221_dev *dev, int offset, uint8_t *ret) {35if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr,36(uint8_t *) &offset, 1) < 0) {37return -1;38}39if (i2c_bus_read(dev->i2c_bus, dev->i2c_addr, ret, 1) < 0) {40return -1;41}42return 0;43}
44
45int hts221_writeb(struct hts221_dev *dev,46int offset, uint8_t val) {47uint16_t tmp = (offset & 0xFF) | (val << 8);48if (i2c_bus_write(dev->i2c_bus, dev->i2c_addr, (void *) &tmp, 2)) {49return -1;50}51return 0;52}
53