Rick McConney / Mbed 2 deprecated WNCProximityMqtt

Dependencies:   MQTT-JMF WNCInterface mbed-rtos mbed

Fork of WNCInterface_MQTT_hivemq by Avnet

Revision:
1:1b516e98444f
Parent:
0:73334e2a82be
--- a/main.cpp	Wed Sep 21 17:32:51 2016 +0000
+++ b/main.cpp	Tue Sep 27 15:47:49 2016 +0000
@@ -8,16 +8,18 @@
 #include "MQTTWNCInterface.h"
 #include "rtos.h"
 #include "k64f.h"
+#include "Proximity.h"
 
 
 // connect options for MQTT broker
-#define BROKER "broker.hivemq.com"   // MQTT broker URL
-#define PORT 1883                           // MQTT broker port number
+#define BROKER "iot.foundry.att.com"   // MQTT broker URL
+#define PORT 1880                           // MQTT broker port number
 #define CLIENTID "96430312d8f7"                         // use K64F MAC address without colons
 #define USERNAME ""                         // not required for MQTT Dashboard public broker 
 #define PASSWORD ""                         // not required for MQTT Dashboard public broker
-#define TOPIC "jmf/Test1"                            // MQTT topic
+#define TOPIC "proximity"                            // MQTT topic
 
+Proximity proximityStrip;
 Queue<uint32_t, 6> messageQ;
 
 struct rcvd_errs{
@@ -108,8 +110,9 @@
     int rc, good = 0;
     Timer tmr;
     char* topic = TOPIC;
+    int count = 0;
     // turn off LED  
-    controlLED(blue);
+    controlLED(red);
     
     // set SW2 and SW3 to generate interrupt on falling edge 
     switch2.fall(&sw2_ISR);
@@ -195,25 +198,79 @@
             }
         }
     }        
-    
+    controlLED(blue);   
     MQTT::Message message;
-    char buf[100];
+    char buf[512];
     message.qos = MQTT::QOS0;
     message.retained = false;
     message.dup = false;
     message.payload = (void*)buf;
     message.payloadlen = strlen(buf)+1;
     
+    sprintf(buf, "[\"Hi\"]");
+    message.payloadlen = strlen(buf)+1;
+    rc = client.publish(topic, message);
+    if( rc ) {
+        printf("Publish request failed! (%d)\r\n",rc);
+    }
+    else {
+        printf("Publish successful!\r\n");
+        client.yield(100); 
+    }
+ 
+    proximityStrip.init();  
+    proximityStrip.on();
+              
     while(true) {
+        count++;
+        if(count >= 30)
+        {
+            count = 0;
+            sprintf(buf, "wake");
+            message.payloadlen = strlen(buf)+1;
+            controlLED(red);
+            rc = client.publish(topic, message);
+            controlLED(off);
+            if( rc ) {
+                printf("Publish request failed! (%d)\r\n",rc);
+            }
+            else {
+                printf("Publish successful!\r\n");
+                client.yield(100);
+            }
+        }
+            
         osEvent switchEvent = messageQ.get(100);
-        
+        controlLED(green);
+        proximityStrip.scan();
+        controlLED(off);
+        if(proximityStrip.changed(50))
+        {
+            controlLED(blue);
+            char* data = proximityStrip.getDataStr();
+            printf("data:%s",data);
+            sprintf(buf, data);
+            //sprintf(buf, "[{\"s\":\"1\"},{\"s\":\"2\"}]");
+            message.payloadlen = strlen(buf)+1;
+            rc = client.publish(topic, message);
+            if( rc ) {
+                printf("Publish request failed! (%d)\r\n",rc);
+            }
+            else {
+                printf("Publish successful!\r\n"); 
+                count=0;           
+                client.yield(100);
+            }
+        }
         if (switchEvent.value.v == 22 || switchEvent.value.v == 33) {
             switch(switchEvent.value.v) {
                 case 22 :
                     sprintf(buf, "sw2");
+                    message.payloadlen = strlen(buf)+1;
                     break;
                 case 33 :
                     sprintf(buf, "sw3");
+                    message.payloadlen = strlen(buf)+1;
                     break;
             }
             printf("Publishing MQTT message: %s (%d)\r\n", (char*)message.payload,
@@ -223,7 +280,8 @@
                 printf("Publish request failed! (%d)\r\n",rc);
             }
             else {
-                printf("Publish successful!\r\n");            
+                printf("Publish successful!\r\n"); 
+                count=0;           
             client.yield(100);
             }
         }