Catie fork

Dependencies:   SDFileSystem X_NUCLEO_IKS01A1

Fork of ATT_AWS_IoT_demo by AT&T IoT

Revision:
29:537df716ba0b
Parent:
28:a31312c9756d
--- a/main.cpp	Wed Apr 05 08:32:05 2017 +0000
+++ b/main.cpp	Wed Apr 05 16:05:41 2017 +0000
@@ -22,7 +22,7 @@
 #include "aws_iot_mqtt_interface.h"
 
 // Sensors
-#include "HTS221.h"
+#include "x_nucleo_iks01a1.h"
 
 #if DEBUG_LEVEL > 0
 #include "mbedtls/debug.h"
@@ -43,7 +43,7 @@
 
 // AWS defines
 #define PATH_MAX    1024
-#define MAX_LENGTH_OF_UPDATE_JSON_BUFFER 200 // NOTE: Be wary of this if your JSON doc grows
+#define MAX_LENGTH_OF_UPDATE_JSON_BUFFER 300 // NOTE: Be wary of this if your JSON doc grows
 #define SHADOW_SYNC_INTERVAL 3.0             // How often we sync with AWS Shadow (in seconds)
 
 // Comment out the following line if color is not supported on the terminal
@@ -96,12 +96,19 @@
 uint32_t port = AWS_IOT_MQTT_PORT;
 char iccidName[21] = "12345678901234567890";
 
+/* Instantiate the expansion board */
+static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(I2C_SDA, I2C_SCL);
+
 // Sensor data
-float temperature = 0.0;
-int   humidity    = 0;
+static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor;
+static PressureSensor *pressure_sensor = mems_expansion_board->pt_sensor;
+static TempSensor *temp_sensor1 = mems_expansion_board->ht_sensor;
+static TempSensor *temp_sensor2 = mems_expansion_board->pt_sensor;
+float iks01a1_temperature = 0.0;
+float iks01a1_pressure = 0.0;
+float iks01a1_humidity = 0.0;
+uint8_t id;
 
-// Temp/humidity object
-HTS221 hts221; 
 
 //=====================================================================================================================
 //
@@ -119,9 +126,6 @@
 // SD card access (MOSI, MISO, SCK, CS)
 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
 
-// I2C bus (SDA, SCL)
-I2C i2c(PTC11, PTC10);
-
 //=====================================================================================================================
 //
 // Functions
@@ -175,8 +179,10 @@
 //*********************************************************************************************************************
 void printData()
 {
-    INFO("Temperature is: %0.2f F", temperature);
-    INFO("Humidity    is: %02d", humidity);      
+    INFO("Temperature is: %0.2f C", iks01a1_temperature);
+    INFO("Humidity    is: %0.2f", iks01a1_humidity); 
+    INFO("Pressure    is: %0.2f mbar", iks01a1_pressure);      
+     
     switch (ledColor) {
          case COLOR_OFF:
              INFO("LED: Off");
@@ -382,11 +388,12 @@
             buttonOverride = false;
             
             // Get temp/humidity values
-            temperature = CTOF(hts221.readTemperature());
-            humidity = hts221.readHumidity();
+            temp_sensor1->get_temperature(&iks01a1_temperature);
+            humidity_sensor->get_humidity(&iks01a1_humidity);
+            pressure_sensor->get_pressure(&iks01a1_pressure);
     
             // Loading data into JSON format
-            sprintf(cPayload, "{\"color\":\"%s\",\"temperature\":%f,\"humidity\":%d}", colorStrings[ledColor], temperature, humidity);
+            sprintf(cPayload, "{\"color\":\"%s\",\"temperature\":%f,\"humidity\":%f,\"pressure\":%f}", colorStrings[ledColor], iks01a1_temperature, iks01a1_humidity, iks01a1_pressure);
             Msg.PayloadLen = strlen(cPayload) + 1;
             Params.MessageParams = Msg;
             
@@ -437,18 +444,24 @@
     ledController.pKey = "ledColor";
     ledController.type = SHADOW_JSON_UINT8;
 
-    // JSON struct for temperature\humidity readings
+    // JSON struct for temperature\humidity\pressure readings
     jsonStruct_t temperatureHandler;
     temperatureHandler.cb = NULL;
     temperatureHandler.pKey = "temperature";
-    temperatureHandler.pData = &temperature;
+    temperatureHandler.pData = &iks01a1_temperature;
     temperatureHandler.type = SHADOW_JSON_FLOAT;
     
     jsonStruct_t humidityHandler;
     humidityHandler.cb = NULL;
     humidityHandler.pKey = "humidity";
-    humidityHandler.pData = &humidity;
-    humidityHandler.type = SHADOW_JSON_INT16;
+    humidityHandler.pData = &iks01a1_humidity;
+    humidityHandler.type = SHADOW_JSON_FLOAT;
+    
+    jsonStruct_t pressureHandler;
+    pressureHandler.cb = NULL;
+    pressureHandler.pKey = "pressure";
+    pressureHandler.pData = &iks01a1_pressure;
+    pressureHandler.type = SHADOW_JSON_FLOAT;
     
     INFO("AWS IoT SDK Version(dev) %d.%d.%d-%s", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_TAG);
 
@@ -476,11 +489,10 @@
     
     // Initialize sensors
     INFO("Init sensors...");
-    //void hts221_init(void);
-    //i = hts221.begin();  
-    //if(!i) {
-    //    WARN(RED "HTS221 NOT DETECTED!!\n\r");
-    //}
+    humidity_sensor->read_id(&id);
+    printf("HTS221  humidity & temperature    = 0x%X\r\n", id);
+    pressure_sensor->read_id(&id);
+    printf("LPS25H  pressure & temperature    = 0x%X\r\n", id);
       
     // Setup SW3 button to falling edge interrupt
     INFO("Init interrupts...");
@@ -570,8 +582,9 @@
         }
         
         // Read sensor data
-        temperature = 24.5;
-        humidity = 60;
+        temp_sensor1->get_temperature(&iks01a1_temperature);
+        humidity_sensor->get_humidity(&iks01a1_humidity);
+        pressure_sensor->get_pressure(&iks01a1_pressure);
                                 
         INFO("\n=======================================================================================\n");             
         // Initialize JSON shadow document          
@@ -584,10 +597,11 @@
                 buttonOverride = false;
             }
                   
-            // Updates the 'reported' color/temp/humidity
-            rc = aws_iot_shadow_add_reported(JsonDocumentBuffer, sizeOfJsonDocumentBuffer, 3, &ledController,
+            // Updates the 'reported' color/temp/humidity/pressure
+            rc = aws_iot_shadow_add_reported(JsonDocumentBuffer, sizeOfJsonDocumentBuffer, 4, &ledController,
                                                                                               &temperatureHandler,
-                                                                                              &humidityHandler);
+                                                                                              &humidityHandler,
+                                                                                              &pressureHandler);
                  
             if (rc == NONE_ERROR) {               
                 rc = aws_iot_finalize_json_document(JsonDocumentBuffer, sizeOfJsonDocumentBuffer);