#ifndef GS_UTIL_DRIVERS_I2C_COMMON_H #define GS_UTIL_DRIVERS_I2C_COMMON_H /* Copyright (c) 2013-2018 GomSpace A/S. All rights reserved. */ /** @file Common (master and slave) I2C definitions. */ #include #ifdef __cplusplus extern "C" { #endif /** Default log group for I2C driver. */ GS_LOG_GROUP_EXTERN(gs_i2c_log); /** I2C mode. */ typedef enum { //! Master mode GS_I2C_MASTER = 0, //! Multimaster mode GS_I2C_MULTI_MASTER = 1, //! Slave mode GS_I2C_SLAVE = 2, } gs_i2c_mode_t; /** Cross-platform I2C configuration. */ typedef struct { //! Data order, True: MSB first, False: LSB first (default = True) bool data_order_msb; //! Device mode (master, multimaster, or slave) gs_i2c_mode_t mode; //! Address of node in multimaster and slave mode (not used in master mode) uint16_t addr; //! Bits per second (default is #GS_I2C_DEFAULT_BPS) uint32_t bps; //! Address size in bits, 7, 8 or 10 bits (default/prefered is #GS_I2C_DEFAULT_ADDRESS_SIZE) uint8_t addrbits; } gs_i2c_config_t; /** Cross-platform I2C configuration. @deprecated use gs_i2c_config_t. */ typedef gs_i2c_config_t gs_i2c_bus_config_t; /** Default bit-rate. */ #define GS_I2C_DEFAULT_BPS 100000 /** Default address size. */ #define GS_I2C_DEFAULT_ADDRESS_SIZE 7 /** Default data order (MSB). */ #define GS_I2C_DEFAULT_DATA_ORDER_MSB 1 /** Speed (command line sub-option). */ #define GS_I2C_COMMAND_LINE_SPEED "speed" /** Device (command line sub-option). */ #define GS_I2C_COMMAND_LINE_DEVICE "device" /** Address (command line sub-option). */ #define GS_I2C_COMMAND_LINE_ADDRESS "address" #ifdef __cplusplus } #endif #endif