Orefatoi / Mbed 2 deprecated afero_node_suntory_171018

Dependencies:   mbed MMA8451Q USBDevice WakeUp vt100

Fork of afero_node_suntory_2017_06_15 by Orefatoi

Committer:
wataloh
Date:
Wed Mar 29 00:42:12 2017 +0000
Revision:
10:02e481a80843
Parent:
7:e49bce0586b8
Child:
21:d03c7bbb9f37
Reset reason is uploaded to Afero cloud via color JSON string.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wataloh 1:b2a9a6f2c30e 1 #include "Accelerometer.hpp"
wataloh 1:b2a9a6f2c30e 2
wataloh 2:dfe671e31221 3 namespace MaruSolSensorManager
wataloh 2:dfe671e31221 4 {
wataloh 1:b2a9a6f2c30e 5 Accelerometer::Accelerometer()
wataloh 1:b2a9a6f2c30e 6 {
wataloh 2:dfe671e31221 7 read_count = 1;
wataloh 1:b2a9a6f2c30e 8 acc = new MMA8451Q(
wataloh 1:b2a9a6f2c30e 9 (PinName)PINS::ACCELEROMETER::SDA,
wataloh 1:b2a9a6f2c30e 10 (PinName)PINS::ACCELEROMETER::SCL,
wataloh 1:b2a9a6f2c30e 11 SENSORS::MMA8451Q::ADDRESS);
wataloh 2:dfe671e31221 12
wataloh 2:dfe671e31221 13 pAsymFIFO = new AsymFIFO();
wataloh 2:dfe671e31221 14
wataloh 5:9d5c7ee80f3b 15 packet_prev.accelerometer.x = 0;
wataloh 5:9d5c7ee80f3b 16 packet_prev.accelerometer.y = 0;
wataloh 5:9d5c7ee80f3b 17 packet_prev.accelerometer.z = 0;
wataloh 5:9d5c7ee80f3b 18
wataloh 1:b2a9a6f2c30e 19 read();
wataloh 1:b2a9a6f2c30e 20 }
wataloh 1:b2a9a6f2c30e 21
wataloh 1:b2a9a6f2c30e 22 Accelerometer::~Accelerometer()
wataloh 1:b2a9a6f2c30e 23 {
wataloh 1:b2a9a6f2c30e 24 delete acc;
wataloh 1:b2a9a6f2c30e 25 acc = NULL;
wataloh 1:b2a9a6f2c30e 26 SERIAL_PRINT_DBG("Accelerometer inited\n");
wataloh 1:b2a9a6f2c30e 27 }
wataloh 1:b2a9a6f2c30e 28
wataloh 1:b2a9a6f2c30e 29 void
wataloh 1:b2a9a6f2c30e 30 Accelerometer::toJSON(char *buf)
wataloh 1:b2a9a6f2c30e 31 {
wataloh 1:b2a9a6f2c30e 32 float x = packet.accelerometer.x;
wataloh 1:b2a9a6f2c30e 33 float y = packet.accelerometer.y;
wataloh 1:b2a9a6f2c30e 34 float z = packet.accelerometer.z;
wataloh 5:9d5c7ee80f3b 35
wataloh 5:9d5c7ee80f3b 36 if(SENSORS::DELTA[SENSORS::ACCELEROMETER]==true)
wataloh 5:9d5c7ee80f3b 37 {
wataloh 5:9d5c7ee80f3b 38 x = abs(packet_prev.accelerometer.x - packet.accelerometer.x);
wataloh 5:9d5c7ee80f3b 39 y = abs(packet_prev.accelerometer.y - packet.accelerometer.y);
wataloh 5:9d5c7ee80f3b 40 z = abs(packet_prev.accelerometer.z - packet.accelerometer.z);
wataloh 5:9d5c7ee80f3b 41 packet_prev.accelerometer.x = packet.accelerometer.x;
wataloh 5:9d5c7ee80f3b 42 packet_prev.accelerometer.y = packet.accelerometer.y;
wataloh 5:9d5c7ee80f3b 43 packet_prev.accelerometer.z = packet.accelerometer.z;
wataloh 5:9d5c7ee80f3b 44 }
wataloh 1:b2a9a6f2c30e 45 x /= 4096;
wataloh 1:b2a9a6f2c30e 46 y /= 4096;
wataloh 1:b2a9a6f2c30e 47 z /= 4096;
wataloh 5:9d5c7ee80f3b 48 char* &fmt = SENSORS::MMA8451Q::JSON_FMT;
wataloh 5:9d5c7ee80f3b 49 sprintf( buf, fmt, x, y, z );
wataloh 1:b2a9a6f2c30e 50 }
wataloh 5:9d5c7ee80f3b 51
wataloh 1:b2a9a6f2c30e 52 void
wataloh 1:b2a9a6f2c30e 53 Accelerometer::getBytes(uint8_t *buf)
wataloh 1:b2a9a6f2c30e 54 {
wataloh 1:b2a9a6f2c30e 55 memcpy(buf,(uint8_t*)&packet.accelerometer,sizeof(packet.accelerometer));
wataloh 1:b2a9a6f2c30e 56 }
wataloh 2:dfe671e31221 57
wataloh 2:dfe671e31221 58 void
wataloh 2:dfe671e31221 59 Accelerometer::toBASE64(char *buf, PREFERENCES::_crc32 *crc32)
wataloh 2:dfe671e31221 60 {
wataloh 2:dfe671e31221 61 pAsymFIFO->pop((uint8_t*)buf, crc32);
wataloh 2:dfe671e31221 62 }
wataloh 10:02e481a80843 63
wataloh 2:dfe671e31221 64 void
wataloh 2:dfe671e31221 65 Accelerometer::go()
wataloh 2:dfe671e31221 66 {
wataloh 2:dfe671e31221 67 timeout.attach(&onRead, 1);
wataloh 2:dfe671e31221 68 if(read_count>=(PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER]))
wataloh 2:dfe671e31221 69 {
wataloh 2:dfe671e31221 70 read_count = 1;
wataloh 2:dfe671e31221 71 packet.accelerometer.x = acc->getAccX()*4096;
wataloh 2:dfe671e31221 72 packet.accelerometer.y = acc->getAccY()*4096;
wataloh 2:dfe671e31221 73 packet.accelerometer.z = acc->getAccZ()*4096;
wataloh 2:dfe671e31221 74 RTC_GET_UTC(packet.accelerometer.timeStamp);
wataloh 2:dfe671e31221 75 if(PREFERENCES::FLOW_CONTROL==true)
wataloh 2:dfe671e31221 76 {
wataloh 2:dfe671e31221 77 pAsymFIFO->push(
wataloh 2:dfe671e31221 78 packet.accelerometer.timeStamp,
wataloh 2:dfe671e31221 79 packet.accelerometer.x,
wataloh 2:dfe671e31221 80 packet.accelerometer.y,
wataloh 2:dfe671e31221 81 packet.accelerometer.z);
wataloh 2:dfe671e31221 82 }
wataloh 2:dfe671e31221 83 else
wataloh 2:dfe671e31221 84 {
wataloh 2:dfe671e31221 85 ToDoQ::queuePut(this);
wataloh 2:dfe671e31221 86 }
wataloh 2:dfe671e31221 87 }
wataloh 2:dfe671e31221 88 else
wataloh 2:dfe671e31221 89 {
wataloh 2:dfe671e31221 90 ++read_count;
wataloh 2:dfe671e31221 91 }
wataloh 2:dfe671e31221 92
wataloh 2:dfe671e31221 93 if(pAsymFIFO->buffed()>1)
wataloh 2:dfe671e31221 94 {
wataloh 2:dfe671e31221 95 ToDoQ::queuePut(this);
wataloh 2:dfe671e31221 96 }
wataloh 1:b2a9a6f2c30e 97 backToNOP();
wataloh 1:b2a9a6f2c30e 98 }
wataloh 1:b2a9a6f2c30e 99 };