Remote I/O Sensor bus with AT&T flow and M2X cloud

Dependencies:   DHT11 FXOS8700CQ MODSERIAL mbed

Fork of Avnet_ATT_Cellular_IOT by Avnet

Revision:
57:d184175b6b03
Parent:
56:cb42ff383dab
Child:
61:f6b93129f954
--- a/sensors.cpp	Thu Jul 28 17:21:31 2016 +0000
+++ b/sensors.cpp	Thu Jul 28 23:55:06 2016 +0000
@@ -1,15 +1,13 @@
 #include "mbed.h"
+#include "sensors.h"
 #include "hardware.h"
-#include "sensors.h"
+#include "FXOS8700CQ.h"
 
 //I2C for pmod sensors:
 #define Si1145_PMOD_I2C_ADDR   0xC0 //this is for 7-bit addr 0x60 for the Si7020
 #define Si7020_PMOD_I2C_ADDR   0x80 //this is for 7-bit addr 0x4 for the Si7020
 
-#include "FXOS8700CQ.h"
-// Pin names for the motion sensor FRDM-K64F board:
-FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
-// Storage for the data from the sensor
+// Storage for the data from the motion sensor
 SRAWDATA accel_data;
 SRAWDATA magn_data;
 //InterruptIn fxos_int1(PTC6); // unused, common with SW2 on FRDM-K64F
@@ -18,7 +16,7 @@
 void trigger_fxos_int2(void)
 {
     fxos_int2_triggered = true;
-    //us_ellapsed = t.read_us();
+
 }
 
 /*------------------------------------------------------------------------------
@@ -265,25 +263,29 @@
         //printf("PS2_Data = %d\n", PS2);
         //printf("PS3_Data = %d\n", PS3);
         //OBJECT PRESENT?
+#if (0)
         if(PS1 < 22000){
             //printf("Object Far\n");
-            sprintf(SENSOR_DATA.Proximity, "Object Far");
+            sprintf(SENSOR_DATA.Proximity, "Object Far\0");
         }
         else if(PS1 < 24000)
         {
             //printf("Object in Vicinity\n");
-            sprintf(SENSOR_DATA.Proximity, "Object in Vicinity");
+            sprintf(SENSOR_DATA.Proximity, "Object in Vicinity\0");
         }
         else if (PS1 < 30000)
         {
             //printf("Object Near\n");
-            sprintf(SENSOR_DATA.Proximity, "Object Near");
+            sprintf(SENSOR_DATA.Proximity, "Object Near\0");
         }
         else
         {
             //printf("Object Very Near\n");
-            sprintf(SENSOR_DATA.Proximity, "Object Very Near");
+            sprintf(SENSOR_DATA.Proximity, "Object Very Near\0");
         }
+#else    
+        sprintf(SENSOR_DATA.Proximity, "%d\0", PS1);
+#endif            
     
         //Force ALS read:
         //WriteTo_Si1145_Register(REG_COMMAND, 0x06);
@@ -312,8 +314,11 @@
 bool bMotionSensor_present = false;
 void init_motion_sensor()
 {
+    // Note: this class is instantiated here because if it is statically declared, the cellular shield init kills the I2C bus...
+    // Class instantiation with pin names for the motion sensor on the FRDM-K64F board:
+    FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
     int iWhoAmI = fxos.get_whoami();
-    
+
     printf("FXOS8700CQ WhoAmI = %X\r\n", iWhoAmI);
     // Iterrupt for active-low interrupt line from FXOS
     // Configured with only one interrupt on INT2 signaling Data-Ready
@@ -332,8 +337,12 @@
 
 void read_motion_sensor()
 {
+    // Note: this class is instantiated here because if it is statically declared, the cellular shield init kills the I2C bus...
+    // Class instantiation with pin names for the motion sensor on the FRDM-K64F board:
+    FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
     if (bMotionSensor_present)
     {
+        fxos.enable();
         fxos.get_data(&accel_data, &magn_data);
         //printf("Roll=%5d, Pitch=%5d, Yaw=%5d;\r\n", magn_data.x, magn_data.y, magn_data.z);
         sprintf(SENSOR_DATA.MagnetometerX, "%5d", magn_data.x);