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
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");