Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Diff: main.cpp
- Revision:
- 33:cfd9430e7d1e
- Parent:
- 32:2871fbeb627d
- Child:
- 34:a5724eeaaf9d
--- 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");