I2cPortInterface/Inc/I2cIO.h

29 lines
756 B
C

//
// Created by xemon on 12.10.22.
//
#ifndef UVEOS_ON_NATION_I2CPORTINTERFACE_H
#define UVEOS_ON_NATION_I2CPORTINTERFACE_H
#include "stdint.h"
//typedef enum {
// I2C_RW_OK = 0x00U,
// I2C_RW_ERROR = 0x01U,
// I2C_RW_BUSY = 0x02U,
// I2C_RW_TIMEOUT = 0x03U
//} I2cIOResult;
typedef uint16_t ( *I2C_IO_Operation )(void *env, uint16_t devAddress, uint8_t *data, uint16_t size, uint32_t timeout);
typedef struct {
void *env;
I2C_IO_Operation read;
I2C_IO_Operation write;
} tI2cIO;
#define I2cRead(IO, DEV_ADDR, DATA, SIZE, TIMEOUT) IO->read(IO->env,DEV_ADDR, DATA, SIZE, TIMEOUT)
#define I2cWrite(IO, DEV_ADDR, DATA, SIZE, TIMEOUT) IO->write(IO->env,DEV_ADDR, DATA, SIZE, TIMEOUT)
#endif //UVEOS_ON_NATION_I2CPORTINTERFACE_H