diff examples/10-Instruments/d-box/DboxSensors.cpp @ 464:8fcfbfb32aa0 prerelease

Examples reorder with subdirectories. Added header to each project. Moved Doxygen to bottom of render.cpp.
author Robert Jack <robert.h.jack@gmail.com>
date Mon, 20 Jun 2016 16:20:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/d-box/DboxSensors.cpp	Mon Jun 20 16:20:38 2016 +0100
@@ -0,0 +1,157 @@
+/*
+ * DboxSensors.cpp
+ *
+ *  Created on: May 19, 2014
+ *      Author: Victor Zappi
+ */
+
+
+#include "DboxSensors.h"
+#include "config.h"
+
+using namespace std;
+
+
+
+int DboxSensors::initSensors(int tk0_bus, int tk0_address, int tk1_bus, int tk1_address, int tk_file, int fsr_pin, int fsrmax, int sensorTypeToUse, int gpio_0, int gpio_1)
+{
+	sensorType = sensorTypeToUse;
+	// init first touch key on i2c bus
+	if(tk0_address >= 0) {
+		if(TK0.initI2C_RW(tk0_bus, tk0_address, tk_file)>0)
+			return 1;
+		if(TK0.initTouchKey(sensorType)>0)
+			return 2;
+	}
+
+	// init second touch key on i2c bus
+	if(tk1_address >= 0) {
+		if(TK1.initI2C_RW(tk1_bus, tk1_address, tk_file)>0)
+			return 1;
+		if(TK1.initTouchKey(sensorType)>0)
+			return 2;
+	}
+
+	// init fsr on analog input pin
+	fsr_pinNum	= fsr_pin;
+	fsr_max	  	= fsrmax;
+
+	if(FSR.initAnalogInputs()>0)
+		return 3;
+
+	gpio[0] = gpio_0;
+	if(gpio[0]!=-1)
+	{
+		fdDi[0] = gpio_export(gpio[0]);
+		if(fdDi[0] == -1)
+			return 4;
+	}
+	digitalIn[0] = 1;
+
+	return 0;
+}
+
+
+int DboxSensors::readSensors()
+{
+	// write data into first touch key
+	if(TK0.ready()) {
+		if(TK0.readI2C()>0)
+			return 1;
+
+		// retrieve data from first touch key
+		tk0_touchCnt = TK0.getTouchCount();
+	}
+	else
+		tk0_touchCnt = 0;
+
+	// write data into second touch key
+	if(TK1.ready()) {
+		if(TK1.readI2C()>0)
+			return 1;
+		// retrieve data from second touch key
+		tk1_touchCnt = TK1.getTouchCount();
+	}
+	else
+		tk1_touchCnt = 0;
+
+
+	int max = 3;
+	if(sensorType != kSensorTypeTouchKey)
+		max = 5;
+	// if touches detected on main touch key
+	if(tk0_touchCnt == 0 && tk1_touchCnt == 0)
+		resetSensorsData();
+	else
+	{
+		for(int i=0; i<max; i++)
+		{
+			tk0_touchPosX[i] = TK0.getSliderPosition()[i];
+			tk0_touchSize[i] = TK0.getSlidersize()[i];
+
+			tk1_touchPosX[i] = TK1.getSliderPosition()[i];
+			tk1_touchSize[i] = TK1.getSlidersize()[i];
+		}
+		tk0_touchPosY 	 = TK0.getSliderPositionH();
+		tk1_touchPosY 	 = TK1.getSliderPositionH();
+		fsr_read		 = (double)FSR.read(fsr_pinNum);
+	}
+
+	if(gpio[0]!=-1)
+	{
+		if(gpio_read(fdDi[0], &digitalIn[0])==-1)
+			return 1;
+	}
+
+	return 0;
+}
+
+
+
+DboxSensors::DboxSensors()
+{
+	resetSensorsData();
+}
+
+
+
+DboxSensors::~DboxSensors()
+{
+	if(gpio[0]!=-1)
+		gpio_dismiss(fdDi[0], gpio[0]);
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+// private methods
+//--------------------------------------------------------------------------------------------------------
+
+// idle values
+void DboxSensors::resetSensorsData()
+{
+	int max = 3;
+	if(sensorType != kSensorTypeTouchKey)
+		max = 5;
+
+	for(int i=0; i<max; i++)
+	{
+		tk0_touchPosX[i] = -1;
+		tk0_touchPosY	 = -1;
+		tk0_touchSize[i] = 0;
+
+		tk1_touchPosX[i] = -1;
+		tk1_touchPosY	 = -1;
+		tk1_touchSize[i] = 0;
+
+		fsr_read		 = 0;
+	}
+
+	return;
+}
+
+
+
+
+
+