annotate projects/d-box/DboxSensors.cpp @ 269:ac8eb07afcf5

Oxygen text added to each render.cpp file for the default projects. Text includes project explanation from Wiki, edited in places. Empty project added as a default project. Doxyfile updated. Each of the project locations added to INPUT configuration option. Consider just watching the whole project file so all new projects are automatically pulled through.
author Robert Jack <robert.h.jack@gmail.com>
date Tue, 17 May 2016 15:40:16 +0100
parents 901d205d1a3c
children
rev   line source
andrewm@0 1 /*
andrewm@0 2 * DboxSensors.cpp
andrewm@0 3 *
andrewm@0 4 * Created on: May 19, 2014
andrewm@0 5 * Author: Victor Zappi
andrewm@0 6 */
andrewm@0 7
andrewm@0 8
andrewm@0 9 #include "DboxSensors.h"
andrewm@0 10 #include "config.h"
andrewm@0 11
andrewm@0 12 using namespace std;
andrewm@0 13
andrewm@0 14
andrewm@0 15
andrewm@15 16 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)
andrewm@0 17 {
andrewm@15 18 sensorType = sensorTypeToUse;
andrewm@0 19 // init first touch key on i2c bus
andrewm@0 20 if(tk0_address >= 0) {
andrewm@0 21 if(TK0.initI2C_RW(tk0_bus, tk0_address, tk_file)>0)
andrewm@0 22 return 1;
andrewm@15 23 if(TK0.initTouchKey(sensorType)>0)
andrewm@0 24 return 2;
andrewm@0 25 }
andrewm@0 26
andrewm@0 27 // init second touch key on i2c bus
andrewm@0 28 if(tk1_address >= 0) {
andrewm@0 29 if(TK1.initI2C_RW(tk1_bus, tk1_address, tk_file)>0)
andrewm@0 30 return 1;
andrewm@15 31 if(TK1.initTouchKey(sensorType)>0)
andrewm@0 32 return 2;
andrewm@0 33 }
andrewm@0 34
andrewm@0 35 // init fsr on analog input pin
andrewm@0 36 fsr_pinNum = fsr_pin;
andrewm@0 37 fsr_max = fsrmax;
andrewm@0 38
andrewm@0 39 if(FSR.initAnalogInputs()>0)
andrewm@0 40 return 3;
andrewm@0 41
andrewm@0 42 gpio[0] = gpio_0;
andrewm@0 43 if(gpio[0]!=-1)
andrewm@0 44 {
andrewm@0 45 fdDi[0] = gpio_export(gpio[0]);
andrewm@0 46 if(fdDi[0] == -1)
andrewm@0 47 return 4;
andrewm@0 48 }
andrewm@0 49 digitalIn[0] = 1;
andrewm@0 50
andrewm@0 51 return 0;
andrewm@0 52 }
andrewm@0 53
andrewm@0 54
andrewm@0 55 int DboxSensors::readSensors()
andrewm@0 56 {
andrewm@0 57 // write data into first touch key
andrewm@0 58 if(TK0.ready()) {
andrewm@0 59 if(TK0.readI2C()>0)
andrewm@0 60 return 1;
andrewm@0 61
andrewm@0 62 // retrieve data from first touch key
andrewm@0 63 tk0_touchCnt = TK0.getTouchCount();
andrewm@0 64 }
andrewm@0 65 else
andrewm@0 66 tk0_touchCnt = 0;
andrewm@0 67
andrewm@0 68 // write data into second touch key
andrewm@0 69 if(TK1.ready()) {
andrewm@0 70 if(TK1.readI2C()>0)
andrewm@0 71 return 1;
andrewm@0 72 // retrieve data from second touch key
andrewm@0 73 tk1_touchCnt = TK1.getTouchCount();
andrewm@0 74 }
andrewm@0 75 else
andrewm@0 76 tk1_touchCnt = 0;
andrewm@0 77
andrewm@0 78
andrewm@0 79 int max = 3;
andrewm@15 80 if(sensorType != kSensorTypeTouchKey)
andrewm@0 81 max = 5;
andrewm@0 82 // if touches detected on main touch key
andrewm@0 83 if(tk0_touchCnt == 0 && tk1_touchCnt == 0)
andrewm@0 84 resetSensorsData();
andrewm@0 85 else
andrewm@0 86 {
andrewm@0 87 for(int i=0; i<max; i++)
andrewm@0 88 {
andrewm@0 89 tk0_touchPosX[i] = TK0.getSliderPosition()[i];
andrewm@0 90 tk0_touchSize[i] = TK0.getSlidersize()[i];
andrewm@0 91
andrewm@0 92 tk1_touchPosX[i] = TK1.getSliderPosition()[i];
andrewm@0 93 tk1_touchSize[i] = TK1.getSlidersize()[i];
andrewm@0 94 }
andrewm@0 95 tk0_touchPosY = TK0.getSliderPositionH();
andrewm@0 96 tk1_touchPosY = TK1.getSliderPositionH();
andrewm@0 97 fsr_read = (double)FSR.read(fsr_pinNum);
andrewm@0 98 }
andrewm@0 99
andrewm@0 100 if(gpio[0]!=-1)
andrewm@0 101 {
andrewm@0 102 if(gpio_read(fdDi[0], &digitalIn[0])==-1)
andrewm@0 103 return 1;
andrewm@0 104 }
andrewm@0 105
andrewm@0 106 return 0;
andrewm@0 107 }
andrewm@0 108
andrewm@0 109
andrewm@0 110
andrewm@0 111 DboxSensors::DboxSensors()
andrewm@0 112 {
andrewm@0 113 resetSensorsData();
andrewm@0 114 }
andrewm@0 115
andrewm@0 116
andrewm@0 117
andrewm@0 118 DboxSensors::~DboxSensors()
andrewm@0 119 {
andrewm@0 120 if(gpio[0]!=-1)
andrewm@0 121 gpio_dismiss(fdDi[0], gpio[0]);
andrewm@0 122 }
andrewm@0 123
andrewm@0 124
andrewm@0 125
andrewm@0 126 //--------------------------------------------------------------------------------------------------------
andrewm@0 127 // private methods
andrewm@0 128 //--------------------------------------------------------------------------------------------------------
andrewm@0 129
andrewm@0 130 // idle values
andrewm@0 131 void DboxSensors::resetSensorsData()
andrewm@0 132 {
andrewm@0 133 int max = 3;
andrewm@15 134 if(sensorType != kSensorTypeTouchKey)
andrewm@0 135 max = 5;
andrewm@0 136
andrewm@0 137 for(int i=0; i<max; i++)
andrewm@0 138 {
andrewm@0 139 tk0_touchPosX[i] = -1;
andrewm@0 140 tk0_touchPosY = -1;
andrewm@0 141 tk0_touchSize[i] = 0;
andrewm@0 142
andrewm@0 143 tk1_touchPosX[i] = -1;
andrewm@0 144 tk1_touchPosY = -1;
andrewm@0 145 tk1_touchSize[i] = 0;
andrewm@0 146
andrewm@0 147 fsr_read = 0;
andrewm@0 148 }
andrewm@0 149
andrewm@0 150 return;
andrewm@0 151 }
andrewm@0 152
andrewm@0 153
andrewm@0 154
andrewm@0 155
andrewm@0 156
andrewm@0 157