Sailesh Timilsena / Mbed OS Z_IOT_ResearchWork

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Revision:
33:cfd9430e7d1e
Parent:
32:2871fbeb627d
Child:
34:a5724eeaaf9d
diff -r 2871fbeb627d -r cfd9430e7d1e main.cpp
--- a/main.cpp	Tue Mar 26 15:56:37 2019 +0000
+++ b/main.cpp	Wed Mar 27 17:47:34 2019 +0000
@@ -15,12 +15,39 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 // ----------------------------------------------------------------------------
-
 #ifndef MBED_TEST_MODE
 
 #include "mbed.h"
 #include "simple-mbed-cloud-client.h"
 #include "LittleFileSystem.h"
+
+// Default network interface object. Don't forget to change the WiFi SSID/password in mbed_app.json if you're using WiFi.
+NetworkInterface *net;
+
+// Default block device available on the target board
+BlockDevice* bd = BlockDevice::get_default_instance();
+SlicingBlockDevice sd(bd, 0, 2*1024*1024);
+
+#if COMPONENT_SD || COMPONENT_NUSD
+// Use FATFileSystem for SD card type blockdevices
+FATFileSystem fs("fs");
+#else
+// Use LittleFileSystem for non-SD block devices to enable wear leveling and other functions
+LittleFileSystem fs("fs");
+#endif
+
+// Default User button for GET example and for resetting the storage
+InterruptIn button(BUTTON1);
+// Default LED to use for PUT/POST example
+DigitalOut led(LED1, 1);
+
+// How often to fetch sensor data (in seconds)
+#define SENSORS_POLL_INTERVAL 3.0
+
+// Send all sensor data or just limited (useful for when running out of memory)
+#define SEND_ALL_SENSORS
+
+// Sensors related includes and initialization
 #include "HTS221Sensor.h"
 #include "LPS22HBSensor.h"
 #include "LSM6DSLSensor.h"
@@ -34,42 +61,19 @@
 static LIS3MDL sen_mag(&devI2c);
 static DigitalOut shutdown_pin(PC_6);
 static VL53L0X sen_distance(&devI2c, &shutdown_pin, PC_7);
-
-#define SENSORS_POLL_INTERVAL 3.0
-#define SEND_ALL_SENSORS
-
-// An event queue is a very useful structure to debounce information between contexts (e.g. ISR and normal threads)
-// This is great because things such as network operations are illegal in ISR, so updating a resource in a button's fall() function is not allowed
-EventQueue eventQueue;
-
-// Default network interface object. Don't forget to change the WiFi SSID/password in mbed_app.json if you're using WiFi.
-NetworkInterface *net;
-
-// Default block device
-BlockDevice* bd = BlockDevice::get_default_instance();
-SlicingBlockDevice sd(bd, 0, 2*1024*1024);
-LittleFileSystem fs("fs");
-
-// Default User button for GET example
-InterruptIn button(BUTTON1);
-// Default LED to use for PUT/POST example
-DigitalOut led(LED1);
+// Temperature reading from microcontroller
+AnalogIn adc_temp(ADC_TEMP);
+// Voltage reference reading from microcontroller
+AnalogIn adc_vref(ADC_VREF);
 
 // Declaring pointers for access to Pelion Client resources outside of main()
 MbedCloudClientResource *res_button;
 MbedCloudClientResource *res_led;
 
+// Additional resources for sensor readings
 #ifdef SEND_ALL_SENSORS
-// Temperature reading from microcontroller
-AnalogIn adc_temp(ADC_TEMP);
-// Voltage reference reading from microcontroller
-AnalogIn adc_vref(ADC_VREF);
-#endif
-
-// Additional resources for sensor readings
 MbedCloudClientResource *res_humidity;
 MbedCloudClientResource *res_temperature;
-#ifdef SEND_ALL_SENSORS
 MbedCloudClientResource *res_pressure;
 MbedCloudClientResource *res_temperature2;
 MbedCloudClientResource *res_magnometer_x;
@@ -86,6 +90,10 @@
 MbedCloudClientResource *res_adc_voltage;
 #endif /* SEND_ALL_SENSORS */
 
+// An event queue is a very useful structure to debounce information between contexts (e.g. ISR and normal threads)
+// This is great because things such as network operations are illegal in ISR, so updating a resource in a button's fall() function is not allowed
+EventQueue eventQueue;
+
 // When the device is registered, this variable will be used to access various useful information, like device ID etc.
 static const ConnectorClientEndpointInfo* endpointInfo;
 
@@ -215,9 +223,9 @@
     printf("\r\033[8A");
 
     if (endpointInfo) {
+#ifdef SEND_ALL_SENSORS
         res_humidity->set_value(humid_value);
         res_temperature->set_value(temp1_value);
-#ifdef SEND_ALL_SENSORS
         res_pressure->set_value(pressure_value);
         res_temperature2->set_value(temp2_value);
         res_magnometer_x->set_value(mag_x);
@@ -303,6 +311,12 @@
     res_button->observable(true);
     res_button->attach_notification_callback(button_callback);
 
+    res_led = client.create_resource("3201/0/5853", "LED State");
+    res_led->set_value(1);
+    res_led->methods(M2MMethod::GET | M2MMethod::PUT);
+    res_led->attach_put_callback(put_callback);
+
+#ifdef SEND_ALL_SENSORS
     // Sensor resources
     res_temperature = client.create_resource("3303/0/5700", "Temperature HTS221 (C)");
     res_temperature->set_value(0);
@@ -314,7 +328,6 @@
     res_humidity->methods(M2MMethod::GET);
     res_humidity->observable(true);
 
-#ifdef SEND_ALL_SENSORS
     res_temperature2 = client.create_resource("3303/1/5700", "Temperature LPS22HB (C)");
     res_temperature2->set_value(0);
     res_temperature2->methods(M2MMethod::GET);
@@ -384,11 +397,6 @@
     res_distance->set_value((float)999.9);
     res_distance->methods(M2MMethod::GET);
     res_distance->observable(true);
-
-    res_led = client.create_resource("3201/0/5853", "LED State");
-    res_led->set_value(1);
-    res_led->methods(M2MMethod::GET | M2MMethod::PUT);
-    res_led->attach_put_callback(put_callback);
 #endif /* SEND_ALL_SENSORS */
 
     printf("Initialized Pelion Client. Registering...\n");