bug fix

Dependencies:   HTS221

Files at this revision

API Documentation at this revision

Comitter:
JimCarver
Date:
Fri Oct 19 02:01:38 2018 +0000
Parent:
0:6b753f761943
Commit message:
bug fix

Changed in this revision

HTS221.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
qspi-blockdevice/.git/index Show annotated file Show diff for this revision Revisions of this file
simple-mbed-cloud-client/.git/index Show annotated file Show diff for this revision Revisions of this file
simple-mbed-cloud-client/mbed-cloud-client/.git/index Show annotated file Show diff for this revision Revisions of this file
wifi-ism43362/.git/index Show annotated file Show diff for this revision Revisions of this file
--- /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