tortuga DataLogging Library: battery, speed, time, average...
Fork of DataLogging by
Diff: BikeData.cpp
- Revision:
- 2:f3c2bf5521e5
- Child:
- 3:610ace66d7af
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BikeData.cpp Sat Apr 30 13:29:23 2016 +0000 @@ -0,0 +1,72 @@ +#include "mbed.h" +#include "BikeData.h" +#include "Data.h" +#include "eeprom.h" + +#define Period 1 //1000ms + +#define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00 +#define SDA PB_9 // I2C SDA pin +#define SCL PB_8 // I2C SCL pin + +EEPROM mem(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); +/* +EEPROM ADRESSES: + +0->3: overall distance +4->7: overall time +*/ + +//CONSTRUCTOR +BikeData::BikeData(PinName pin) : + button(pin), + trackTrip(false), + count(0) + { + float readDistance; + mem.read(0,readDistance); + int32_t readTime; + mem.read(4,readTime); + overallData = new Data(readDistance,readTime); + dataSet[OVERALL] = tripData; + batChangeData = new Data(0,0); + dataSet[BATCHANGE] = tripData; + tick.attach(this,&BikeData::interval,Period); + button.fall(this,&BikeData::pressed); + } + +void BikeData::startTrip(){ + tripData = new Data(0,0); + dataSet[TRIP] = tripData; + trackTrip = true; + } + +void BikeData::pauzeTrip(){ + trackTrip = false; + } + +void BikeData::stopTrip(){ + trackTrip = false; + } + +void BikeData::pressed(void){ + count++; + } + +Data* BikeData::getDataSet(uint8_t type){ + return dataSet[type]; + } + +void BikeData::interval(void){ + if(trackTrip){ + printf("Trip:\n"); + tripData->interval(count); + } + printf("Overall:\n"); + overallData->interval(count); + mem.write(0,overallData->getDistance()); + mem.write(4,(int32_t)overallData->getTime()); + printf("batChange:\n"); + batChangeData->interval(count); + count = 0; + } \ No newline at end of file