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.
Revision 1:521604503e81, committed 2018-10-19
- Comitter:
- JimCarver
- Date:
- Fri Oct 19 02:01:38 2018 +0000
- Parent:
- 0:6b753f761943
- Commit message:
- bug fix
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HTS221.lib Fri Oct 19 02:01:38 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/ST/code/HTS221/#312ee2694a77
--- a/main.cpp Fri Oct 12 21:22:49 2018 +0000
+++ b/main.cpp Fri Oct 19 02:01:38 2018 +0000
@@ -37,7 +37,9 @@
+#include "HTS221/HTS221Sensor.h"
+
// 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;
@@ -56,14 +58,40 @@
// Declaring pointers for access to Mbed Cloud Client resources outside of main()
MbedCloudClientResource *button_res;
MbedCloudClientResource *pattern_res;
+MbedCloudClientResource *temperature_res;
+MbedCloudClientResource *humidity_res;
+static int v = 0;
// This function gets triggered by the timer. It's easy to replace it by an InterruptIn and fall() mode on a real button
void fake_button_press() {
- int v = button_res->get_value_int() + 1;
+
+ button_res->set_value(v++);
+ if(v > 1000) v = 0;
+ //printf("Simulated button clicked %d times\n", v);
+
+}
+
+// Manage the HST221 in an independent thread
+Thread HTS221Thread;
- button_res->set_value(v);
-
- printf("Simulated button clicked %d times\n", v);
+void HTS221Handler(void)
+{
+ uint8_t id;
+ float value1, value2;
+ static DevI2C devI2c(PB_11,PB_10); // This defines the processor port pins attached to the I2C bus
+ static HTS221Sensor hum_temp(&devI2c);
+ hum_temp.init(NULL);
+ hum_temp.read_id(&id); // Read the device ID
+ printf("\r\n\n\nHTS221 humidity & temperature = 0x%X\r\n", id);
+ hum_temp.enable();
+ while(1) {
+ wait(5); // Update every 5 seconds
+ // Update temperature and humidity resources
+ hum_temp.get_temperature(&value1);
+ hum_temp.get_humidity(&value2);
+ temperature_res->set_value(value1);
+ humidity_res->set_value(value2);
+ }
}
/**
@@ -82,6 +110,9 @@
* Note that the buffer is deallocated after leaving this function, so copy it if you need it longer.
* @param size Size of the body
*/
+
+
+
void blink_callback(MbedCloudClientResource *resource, const uint8_t *buffer, uint16_t size) {
printf("POST received. Going to blink LED pattern: %s\n", pattern_res->get_value().c_str());
@@ -111,7 +142,15 @@
* @param status The delivery status of the notification
*/
void button_callback(MbedCloudClientResource *resource, const NoticationDeliveryStatus status) {
- printf("Button notification, status %s (%d)\n", MbedCloudClientResource::delivery_status_to_string(status), status);
+ printf("Button %s (%d)\n", MbedCloudClientResource::delivery_status_to_string(status), status);
+}
+
+void temperature_callback(MbedCloudClientResource *resource, const NoticationDeliveryStatus status) {
+ printf("Temperature %s (%d)\n", MbedCloudClientResource::delivery_status_to_string(status), status);
+}
+
+void humidity_callback(MbedCloudClientResource *resource, const NoticationDeliveryStatus status) {
+ printf("Humidity %s (%d)\n", MbedCloudClientResource::delivery_status_to_string(status), status);
}
/**
@@ -123,6 +162,7 @@
}
int main(void) {
+
printf("Starting Simple Mbed Cloud Client example\n");
printf("Checking SDCard is Formatted\r\n");
@@ -144,7 +184,12 @@
// if (err < 0) {
// error("error: %s (%d)\n", strerror(-err), err);
// }
+
+ //
+ // Initalize temperature and humidity sensor
+ //
+
printf("Connecting to the network using Wifi...\n");
// Connect to the internet (DHCP is expected to be on)
@@ -180,7 +225,19 @@
MbedCloudClientResource *blink_res = client.create_resource("3201/0/5850", "blink_action");
blink_res->methods(M2MMethod::POST);
blink_res->attach_post_callback(blink_callback);
-
+
+ temperature_res = client.create_resource("3303/0/5700", "temperature");
+ temperature_res->set_value(0);
+ temperature_res->methods(M2MMethod::GET);
+ temperature_res->observable(true);
+ temperature_res->attach_notification_callback(temperature_callback);
+
+ humidity_res = client.create_resource("3304/0/5700", "humidity");
+ humidity_res->set_value(0);
+ humidity_res->methods(M2MMethod::GET);
+ humidity_res->observable(true);
+ humidity_res->attach_notification_callback(humidity_callback);
+
printf("Initialized Mbed Cloud Client. Registering...\n");
// Callback that fires when registering is complete
@@ -193,7 +250,8 @@
// The timer fires on an interrupt context, but debounces it to the eventqueue, so it's safe to do network operations
Ticker timer;
timer.attach(eventQueue.event(&fake_button_press), 5.0);
-
+ HTS221Thread.start(HTS221Handler);
+
// You can easily run the eventQueue in a separate thread if required
eventQueue.dispatch_forever();
}
Binary file qspi-blockdevice/.git/index has changed
Binary file simple-mbed-cloud-client/.git/index has changed
Binary file simple-mbed-cloud-client/mbed-cloud-client/.git/index has changed
Binary file wifi-ism43362/.git/index has changed