Mercurial > hg > beaglert
diff projects/d-box/DboxSensors.h @ 0:8a575ba3ab52
Initial commit.
author | andrewm |
---|---|
date | Fri, 31 Oct 2014 19:10:17 +0100 |
parents | |
children | 901d205d1a3c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/projects/d-box/DboxSensors.h Fri Oct 31 19:10:17 2014 +0100 @@ -0,0 +1,128 @@ +/* + * DboxSensors.h + * + * Created on: May 19, 2014 + * Author: Victor Zappi + */ + +#ifndef DBOXSENSORS_H_ +#define DBOXSENSORS_H_ + +#include <stdio.h> +#include <sys/mount.h> // mount() +#include <string.h> // strerror() +#include <fstream> // fstream +#include <iostream> +#include <unistd.h> // usleep() +#include <glob.h> // glob() +#include <sys/time.h> // elapsed time +#include <sys/stat.h> // mkdir() +#include <algorithm> // reverse() [string...] + +#include "I2c_TouchKey.h" +#include "AnalogInput.h" +#include "../../include/GPIOcontrol.h" // TODO wrap this into a class + +/*--------------------------------------------------------------------------------------------------------------------------------------------------- + * This class retrieves data from all the connected sensors, + * logs them + * and exposes to the main only the values needed to synthesize sound + * + * The simple instrument has: + * + * + * + *--------------------------------------------------------------------------------------------------------------------------------------------------- + */ +class DboxSensors +{ +public: + int initSensors(int tk0_bus, int tk0_address, int tk1_bus, int tk1_address, int tk_file, int fsr_pin, int fsrmax, bool useNewSensors, int gpio0=-1, int gpio1=-1); + int readSensors(); + int getTKTouchCount(int index); + float *getTKXPositions(int index); + float getTKYPosition(int index); + float *getTKTouchSize(int index); + double getFSRVAlue(); + int getDigitalIn(int index); + + DboxSensors(); + ~DboxSensors(); + +private: + bool newSensors; + + I2c_TouchKey TK0; + int tk0_touchCnt; + float tk0_touchPosX[5]; + float tk0_touchPosY; + float tk0_touchSize[5]; + + I2c_TouchKey TK1; + int tk1_touchCnt; + float tk1_touchPosX[5]; + float tk1_touchPosY; + float tk1_touchSize[5]; + + AnalogInput FSR; + int fsr_pinNum; + double fsr_read; + int fsr_max; + + unsigned int digitalIn[2]; + int fdDi[2]; + int gpio[2]; + + void resetSensorsData(); + +}; + + + +//-------------------------------------------------------------------------------- +// read interface +inline int DboxSensors::getTKTouchCount(int index) +{ + if(index==0) + return tk0_touchCnt; + else + return tk1_touchCnt; +} + +inline float *DboxSensors::getTKXPositions(int index) +{ + if(index==0) + return tk0_touchPosX; + else + return tk1_touchPosX; +} + +inline float DboxSensors::getTKYPosition(int index) +{ + if(index==0) + return tk0_touchPosY; + else + return tk1_touchPosY; +} + +inline float *DboxSensors::getTKTouchSize(int index) +{ + if(index==0) + return tk0_touchSize; + else + return tk1_touchSize; +} + +inline double DboxSensors::getFSRVAlue() +{ + return fsr_read; +} + +inline int DboxSensors::getDigitalIn(int index) +{ + return digitalIn[index]; +} +//-------------------------------------------------------------------------------- + + +#endif /* DBOXSENSORS_H_ */