diff include/I2c.h @ 0:8a575ba3ab52

Initial commit.
author andrewm
date Fri, 31 Oct 2014 19:10:17 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/I2c.h	Fri Oct 31 19:10:17 2014 +0100
@@ -0,0 +1,87 @@
+/*
+ * I2c.h
+ *
+ *  Created on: Oct 14, 2013
+ *      Author: Victor Zappi
+ */
+
+#ifndef I2C_H_
+#define I2C_H_
+
+#include <iostream>
+#include <iomanip>
+#include <string>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <linux/i2c.h>
+#include <linux/i2c-dev.h>
+#include <sys/ioctl.h>
+#include <stropts.h>
+
+#define MAX_BUF_NAME 64
+
+using namespace std;
+
+
+class I2c
+{
+
+protected:
+	int i2C_bus;
+	int i2C_address;
+	int i2C_file;
+
+public:
+	int initI2C_RW(int bus, int address, int file);
+	virtual int readI2C() = 0;
+	int closeI2C();
+
+	virtual ~I2c();
+
+};
+
+
+inline int I2c::initI2C_RW(int bus, int address, int fileHnd)
+{
+	i2C_bus 	= bus;
+	i2C_address = address;
+	i2C_file 	= fileHnd;
+
+	// open I2C device as a file
+	char namebuf[MAX_BUF_NAME];
+	snprintf(namebuf, sizeof(namebuf), "/dev/i2c-%d", i2C_bus);
+
+	if ((i2C_file = open(namebuf, O_RDWR)) < 0)
+	{
+			cout << "Failed to open " << namebuf << " I2C Bus" << endl;
+			return(1);
+	}
+
+	// target device as slave
+	if (ioctl(i2C_file, I2C_SLAVE, i2C_address) < 0){
+			cout << "I2C_SLAVE address " << i2C_address << " failed..." << endl;
+			return(2);
+	}
+
+	return 0;
+}
+
+
+
+inline int I2c::closeI2C()
+{
+	if(close(i2C_file)>0)
+	{
+		cout << "Failed to close  file "<< i2C_file << endl;
+		return 1;
+	}
+	return 0;
+}
+
+
+inline I2c::~I2c(){}
+
+
+#endif /* I2C_H_ */