mini code pour xbee

Dependencies:   mbed ConfigFile EthernetInterface WebSocketClient mbed-rtos

Fork of app4Coordo by APP Team

Revision:
4:7d7d6e4b6810
Parent:
3:85025db3fbd1
Child:
5:bf1d3d99cfe9
--- a/main.cpp	Mon Feb 24 18:57:38 2014 +0000
+++ b/main.cpp	Mon Feb 24 23:25:17 2014 +0000
@@ -1,21 +1,36 @@
 #include "mbed.h"
 #include <string>
 #include "ConfigFile.h"
+#include "EthernetInterface.h"
+#include "Websocket.h"
 
+// Pins
 DigitalOut myled(LED1);
 DigitalOut myled2(LED2);
 DigitalOut reset(p8);
+
+// Serial COMs
 Serial pc(USBTX, USBRX);
 Serial xbee(p13, p14);
 
+// Variables
 string test;
 bool trame_ready;
 
+// Ethernet interface
+EthernetInterface eth;
+
+// view @ http://sockets.mbed.org/demo/viewer
+Websocket ws("ws://89.16.167.192:443/ws/trixrabbit/wo");
+
+// Configuration file
 LocalFileSystem local("local");
 ConfigFile cfg;
 
+// State machine ENUM
 enum {STEP_START, STEP_LENGTH, STEP_TYPE, STEP_MAC, STEP_NET, STEP_OPT, STEP_DATA, STEP_CHECK};
 
+
 void configInit()
 {
     char *key1 = "PANID";
@@ -33,15 +48,37 @@
      */
     if (cfg.getValue(key1, &value[0], sizeof(value))) 
     {
-        printf("'%s'='%s'\n", key1, value);
+        pc.printf("'%s'='%s'\n", key1, value);
     }
     
     if (cfg.getValue(key2, &value[0], sizeof(value))) 
     {
-        printf("'%s'='%s'\n", key2, value);
+        pc.printf("'%s'='%s'\n", key2, value);
     }
 }
 
+void eth_init()
+{
+    eth.init();
+    eth.connect();
+    
+    pc.printf("IP Address is %s\n", eth.getIPAddress());
+    
+    wait(2);
+
+    if(!ws.connect())
+    {
+         error("Failure establish connection to the WebSocket.\n");
+    }
+     
+    /*while(1) {
+            ws.send("CAFE CAFE CFAE");
+            wait(1.0);
+    }*/
+
+    
+}
+
 void xbee_init()
 {
     reset = 0;
@@ -51,7 +88,6 @@
 
 void xbee_receive()
 {
-    // TODO: analyze trame before sending to PC (or WebSocket)
     static int state = STEP_START;
     
     char data = xbee.getc();
@@ -134,9 +170,7 @@
                             
         case STEP_CHECK:    //check CS
                             state = STEP_START;
-                            break;
-                               
-                               
+                            break;                            
     }
   
 }
@@ -145,6 +179,7 @@
 {
     
     configInit();
+    eth_init();
     xbee_init();
 
     
@@ -158,9 +193,6 @@
         if(xbee.readable())
         {
             xbee_receive();
-            
-            //pc.printf("%x ", xbee.getc());
-            //pc.putc(xbee.getc()); 
             myled2 = ! myled2;
         }
         
@@ -172,8 +204,19 @@
         
         if(trame_ready == true)
         {
+            //test = "TESTESTESTESTEST";
             pc.printf(test.c_str());
+            
+            char *buffer =new char[test.size()+1];
+            buffer[test.size()]=0;
+            memcpy(buffer,test.c_str(),test.size());
+            
+            ws.send(buffer);
+            
             trame_ready = false;
         }
     }
+    
+    //ws.close();
+   // eth.disconnect();
 }