pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
Accelerometer.cpp
00001 #include "Accelerometer.hpp" 00002 00003 namespace MaruSolSensorManager 00004 { 00005 Accelerometer::Accelerometer() 00006 { 00007 read_count = 1; 00008 acc = new MMA8451Q( 00009 (PinName)PINS::ACCELEROMETER::SDA, 00010 (PinName)PINS::ACCELEROMETER::SCL, 00011 SENSORS::MMA8451Q::ADDRESS); 00012 00013 pAsymFIFO = new AsymFIFO(); 00014 00015 packet_prev.accelerometer.x = 0; 00016 packet_prev.accelerometer.y = 0; 00017 packet_prev.accelerometer.z = 0; 00018 00019 read(); 00020 } 00021 00022 Accelerometer::~Accelerometer() 00023 { 00024 delete acc; 00025 acc = NULL; 00026 SERIAL_PRINT_DBG("Accelerometer inited\n"); 00027 } 00028 00029 void 00030 Accelerometer::toJSON(char *buf) 00031 { 00032 float x = packet.accelerometer.x; 00033 float y = packet.accelerometer.y; 00034 float z = packet.accelerometer.z; 00035 00036 if(SENSORS::DELTA[SENSORS::ACCELEROMETER]==true) 00037 { 00038 x = abs(packet_prev.accelerometer.x - packet.accelerometer.x); 00039 y = abs(packet_prev.accelerometer.y - packet.accelerometer.y); 00040 z = abs(packet_prev.accelerometer.z - packet.accelerometer.z); 00041 packet_prev.accelerometer.x = packet.accelerometer.x; 00042 packet_prev.accelerometer.y = packet.accelerometer.y; 00043 packet_prev.accelerometer.z = packet.accelerometer.z; 00044 } 00045 x /= 4096; 00046 y /= 4096; 00047 z /= 4096; 00048 char* &fmt = SENSORS::MMA8451Q::JSON_FMT; 00049 sprintf( buf, fmt, x, y, z ); 00050 } 00051 00052 void 00053 Accelerometer::getBytes(uint8_t *buf) 00054 { 00055 memcpy(buf,(uint8_t*)&packet.accelerometer,sizeof(packet.accelerometer)); 00056 } 00057 00058 void 00059 Accelerometer::toBASE64(char *buf, PREFERENCES::_crc32 *crc32) 00060 { 00061 pAsymFIFO->pop((uint8_t*)buf, crc32); 00062 } 00063 00064 void 00065 Accelerometer::go() 00066 { 00067 timeout->attach(this, &Accelerometer::read, 1); 00068 if(read_count>=(PREFERENCES::SENSING_INTERVAL[SENSORS::ACCELEROMETER])) 00069 { 00070 read_count = 1; 00071 packet.accelerometer.x = acc->getAccX()*4096; 00072 packet.accelerometer.y = acc->getAccY()*4096; 00073 packet.accelerometer.z = acc->getAccZ()*4096; 00074 RTC_GET_UTC(packet.accelerometer.timeStamp); 00075 if(PREFERENCES::FLOW_CONTROL==true) 00076 { 00077 pAsymFIFO->push( 00078 packet.accelerometer.timeStamp, 00079 packet.accelerometer.x, 00080 packet.accelerometer.y, 00081 packet.accelerometer.z); 00082 } 00083 else 00084 { 00085 ToDoQ::queuePut(this); 00086 } 00087 } 00088 else 00089 { 00090 ++read_count; 00091 } 00092 00093 if(pAsymFIFO->buffed()>1) 00094 { 00095 ToDoQ::queuePut(this); 00096 } 00097 backToNOP(); 00098 } 00099 };
Generated on Thu Jul 14 2022 06:24:36 by 1.7.2