Add i2c_smbus_linux.h/cpp driver to handle ioctl-driven I2C access to /dev/i2c-x nodes on Linux
parent
1b288ce0b2
commit
0b5e8b400e
Binary file not shown.
@ -0,0 +1,16 @@
|
||||
TEMPLATE = app
|
||||
CONFIG += console c++11
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
i2c_smbus.cpp \
|
||||
AuraController.cpp \
|
||||
OpenAuraSDK.cpp \
|
||||
i2c_smbus_linux.cpp
|
||||
|
||||
HEADERS += \
|
||||
i2c_smbus.h \
|
||||
i2c_smbus_linux.h \
|
||||
AuraController.h \
|
||||
OpenAuraSDK.h
|
||||
@ -0,0 +1,29 @@
|
||||
/*-----------------------------------------*\
|
||||
| i2c_smbus_linux.cpp |
|
||||
| |
|
||||
| Linux i2c/smbus driver |
|
||||
| |
|
||||
| Adam Honse (CalcProgrammer1) 2/14/2019 |
|
||||
\*-----------------------------------------*/
|
||||
|
||||
#include "i2c_smbus.h"
|
||||
#include "i2c_smbus_linux.h"
|
||||
|
||||
#include <linux/i2c-dev.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
s32 i2c_smbus_linux::i2c_smbus_xfer(u8 addr, char read_write, u8 command, int size, union i2c_smbus_data* data)
|
||||
{
|
||||
struct i2c_smbus_ioctl_data args;
|
||||
|
||||
//Tell I2C host which slave address to transfer to
|
||||
ioctl(handle, I2C_SLAVE, addr);
|
||||
|
||||
args.read_write = read_write;
|
||||
args.command = command;
|
||||
args.size = size;
|
||||
args.data = data;
|
||||
|
||||
return ioctl(handle, I2C_SMBUS, &args);
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
/*-----------------------------------------*\
|
||||
| i2c_smbus_linux.h |
|
||||
| |
|
||||
| Definitions and types for Linux i2c/smbus|
|
||||
| driver |
|
||||
| |
|
||||
| Adam Honse (CalcProgrammer1) 2/14/2019 |
|
||||
\*-----------------------------------------*/
|
||||
|
||||
#include "i2c_smbus.h"
|
||||
|
||||
class i2c_smbus_linux : public i2c_smbus_interface
|
||||
{
|
||||
public:
|
||||
int handle;
|
||||
|
||||
private:
|
||||
s32 i2c_smbus_xfer(u8 addr, char read_write, u8 command, int size, i2c_smbus_data* data);
|
||||
};
|
||||
Loading…
Reference in New Issue