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@10:02e481a80843, 2017-03-29 (annotated)
- 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?
| User | Revision | Line number | New 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 | }; | 
