POC1.5 prototype 2 x color sensor 2 x LM75B 3 x AnalogIn 1 x accel

Dependencies:   mbed vt100

Revision:
0:f0de320e23ac
Child:
8:5590f55bdf41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/edge_sensor/edge_accel.cpp	Fri Dec 01 06:16:31 2017 +0000
@@ -0,0 +1,108 @@
+#include "mbed.h"
+#include "afLib.h"
+#include "edge_sensor.h"
+#include "edge_accel.h"
+#include "MMA8451Q.h"
+
+edge_accel::edge_accel(MMA8451Q *accel) : edge_sensor() 
+{
+    _accel = accel ;
+    _sample_count = 0 ;
+    _accumulation = 0 ;
+    _prev_x = 0 ;
+    _prev_y = 0 ;
+    _prev_z = 0 ;
+    
+    _interval = 10 ;
+}
+
+edge_accel::~edge_accel(void)
+{
+    delete _accel ;
+}
+
+void    edge_accel::reset(void) 
+{
+    clear_value() ;
+    edge_sensor::reset() ;
+}
+
+void    edge_accel::prepare(void) 
+{
+//    printf("accel prepare\n") ;
+}
+
+void    edge_accel::sample(void) 
+{
+//    printf("accel sample\n") ;
+}
+
+int    edge_accel::deliver(void) 
+{
+    int result ;
+    float value ;
+    print_time(_sampled_time) ;
+    value = get_value() ;
+    printf(" accel = %.3f [%d samples]\n", value, _sample_count) ;
+    sprintf(_str_buf,
+        "{\"DEVICE\":\"ACCEL\",\"PN\":\"MMA8451Q\",\"VAL_X\":\"%.3f\",\"VAL_Y\":\"0\",\"VAL_Z\":\"0\",\"UNIT\":\"g\",\"S\":\"%06d\",\"E\":\"%d\"}",
+        value, time2seq(_sampled_time), _error_count) ;
+    result = afero->setAttribute(1, _str_buf) ;
+    if (result == afSUCCESS) {
+        clear_value() ;
+    }
+    return( result == afSUCCESS ) ;
+}
+
+int edge_accel::accum(void)
+{
+    int16_t value[3] ;
+
+    if (_enable) {
+       _accel->getAllRawData(value) ;
+            
+        _sample_count++ ;
+    
+        _accumulation +=
+              abs(_prev_x - value[0])
+            + abs(_prev_y - value[1])
+            + abs(_prev_z - value[2]) ;        
+    
+        _prev_x = value[0] ;
+        _prev_y = value[1] ;
+        _prev_z = value[2] ;
+    }
+        
+    return( _sample_count ) ;
+}
+
+void edge_accel::clear_value(void)
+{
+    _sample_count = 0 ;
+    _accumulation = 0 ;
+    _prev_x = 0 ;
+    _prev_y = 0 ;
+    _prev_z = 0 ;
+}
+
+float edge_accel::get_value(void)
+{
+    float result = 0.0 ;
+    if (_sample_count > 0) {
+        result = (float)_accumulation / (float)_sample_count ;
+    }
+    _sampled_time = edge_time ;
+    return( result / 4096.0 ) ;
+}
+
+void edge_accel::send_config(void)
+{
+    afero->setAttributeBool(100, true) ; /* accel present */
+    afero->setAttributeBool(101, true) ; /* accel enable */
+}
+
+void edge_accel::recv_config(void)
+{
+}
+        
+        
\ No newline at end of file