Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
sensors/Accelerometer/Accelerometer.cpp
- Committer:
- wataloh
- Date:
- 2017-01-24
- Revision:
- 2:dfe671e31221
- Parent:
- 1:b2a9a6f2c30e
- Child:
- 5:9d5c7ee80f3b
File content as of revision 2:dfe671e31221:
#include "Accelerometer.hpp" namespace MaruSolSensorManager { Accelerometer::Accelerometer() { read_count = 1; //if(PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER]<=0) { PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER] = 15; } acc = new MMA8451Q( (PinName)PINS::ACCELEROMETER::SDA, (PinName)PINS::ACCELEROMETER::SCL, SENSORS::MMA8451Q::ADDRESS); pAsymFIFO = new AsymFIFO(); read(); } Accelerometer::~Accelerometer() { delete acc; acc = NULL; SERIAL_PRINT_DBG("Accelerometer inited\n"); } void Accelerometer::toJSON(char *buf) { float x = packet.accelerometer.x; float y = packet.accelerometer.y; float z = packet.accelerometer.z; x /= 4096; y /= 4096; z /= 4096; char* &fmt = SENSORS::MMA8451Q::JSON_FMT; char* &type = SENSORS::MMA8451Q::TYPE; char* &pn = SENSORS::MMA8451Q::PN; time_t &timeStamp = packet.accelerometer.timeStamp; char* &unit = SENSORS::MMA8451Q::UNIT; sprintf( buf, fmt, type, pn, timeStamp, x, y, z, unit); } void Accelerometer::getBytes(uint8_t *buf) { memcpy(buf,(uint8_t*)&packet.accelerometer,sizeof(packet.accelerometer)); } void Accelerometer::toBASE64(char *buf, PREFERENCES::_crc32 *crc32) { pAsymFIFO->pop((uint8_t*)buf, crc32); } /* void Accelerometer::go() { timeout.attach(&onRead, PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER]); packet.accelerometer.x = acc->getAccX()*4096; packet.accelerometer.y = acc->getAccY()*4096; packet.accelerometer.z = acc->getAccZ()*4096; RTC_GET_UTC(packet.accelerometer.timeStamp); if(PREFERENCES::FLOW_CONTROL==true) { pAsymFIFO->push( packet.accelerometer.timeStamp, packet.accelerometer.x, packet.accelerometer.y, packet.accelerometer.z); if(pAsymFIFO->buffed()>1) { ToDoQ::queuePut(this); } } else { ToDoQ::queuePut(this); } backToNOP(); } */ void Accelerometer::go() { timeout.attach(&onRead, 1); if(read_count>=(PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER])) { read_count = 1; packet.accelerometer.x = acc->getAccX()*4096; packet.accelerometer.y = acc->getAccY()*4096; packet.accelerometer.z = acc->getAccZ()*4096; RTC_GET_UTC(packet.accelerometer.timeStamp); if(PREFERENCES::FLOW_CONTROL==true) { pAsymFIFO->push( packet.accelerometer.timeStamp, packet.accelerometer.x, packet.accelerometer.y, packet.accelerometer.z); } else { ToDoQ::queuePut(this); } } else { ++read_count; } if(pAsymFIFO->buffed()>1) { ToDoQ::queuePut(this); } backToNOP(); } };