ssssss

Files at this revision

API Documentation at this revision

Comitter:
3116redtrain
Date:
Sat Dec 17 11:03:10 2016 +0000
Parent:
0:01a2e92d2924
Commit message:
first comp;

Changed in this revision

CushionSock.cpp Show annotated file Show diff for this revision Revisions of this file
CushionSock.h Show annotated file Show diff for this revision Revisions of this file
--- a/CushionSock.cpp	Sat Dec 17 09:13:37 2016 +0000
+++ b/CushionSock.cpp	Sat Dec 17 11:03:10 2016 +0000
@@ -1,6 +1,23 @@
 #include "CushionSock.h"
+#define STOP 0x01
+#define START 0x02
+#define SIT 0x11
+#define FRUST 0x12
+#define TEST 0x21
+#define TWEET 0x13
 
-CushionSock::CushionSock(char * hostAndPort){
+CushionSock::CushionSock(){
+    printf("begin\r\n");
+
+    MESS_STOP = 0x01;
+    MESS_START = 0x02;
+    MESS_SIT = 0x11;
+    MESS_FRUST = 0x12;
+    MESS_TEST =0x21;
+    MESS_TWEET = 0x13;
+}
+
+void CushionSock::init(char * hostAndPort){
     eth = new EthernetNetIf();
     EthernetErr ethErr = eth->setup();
     if (ethErr) {
@@ -9,68 +26,64 @@
     printf("hostandport %s\n", hostAndPort);
     
     ws = new Websocket(hostAndPort, eth);
-
-    printf("begin\r\n");
-
-    MESS_STOP = 0x01;
-    MESS_START = 0x02;
-    MESS_SIT = 0x11;
-    MESS_FRUST = 0x12;
-    MESS_TEST =0x21;
-    type_name[MESS_STOP]="stop";
-    type_name[MESS_START]="start";
-    type_name[MESS_SIT]="status_sit";
-    type_name[MESS_FRUST]="status_frust";
-    type_name[MESS_TEST]="test";
-    name_type["stop"]=MESS_STOP;
-    name_type["start"]=MESS_START;
-    name_type["status_sit"]=MESS_SIT;
-    name_type["status_frust"]=MESS_FRUST;
-    name_type["test"]=MESS_TEST;
+    printf("websock init\n");
+}
     
-    printf("websock init\n");
-     int failcount=0;
-     
-     while(! ws->connect()) {
+bool CushionSock::connect(){
+    printf("connecting...");
+    int failcount=0;
+    
+    while(! ws->connect()) {
         failcount++;
         if(failcount>10){
             printf("cannot connect failed.\n");
-            break;
+            return false;
         }
         printf("cannot connect websocket, retrying...\n");
         wait(2);
     }
-}
-
-    
-bool CushionSock::connect(){
-     
      return true;
 }
   
 int CushionSock::mess_send(int type, char * msg){
-    string name=type_name[type];
+    string name;
+    switch(type){
+        case TEST:
+            name="test";
+            break;
+        case STOP:
+            name="stop";
+            break;
+        case START:
+            name="start";
+            break;
+        case SIT:
+            name="status_sit";
+            break;
+        case FRUST:
+            name="status_frust";
+            break;
+        case TWEET:
+            name="status_tweet";
+        default:
+            name="null";
+    }
     MbedJSONValue json;
     json["name"]=name.c_str();
     json["value"]=msg;
     ws->send((char*)json.serialize().c_str());
+    printf("data send\n");
     return 1;
 } 
     
 int CushionSock::mess_recv(char * msg){
-    picojson::value v;
-    char recv[256];
-    if (ws->read(recv)) {
-        int type;
-        string name;
-        string sbuf(recv);
-        const char * crecv=sbuf.c_str();
-        string err = picojson::parse(v,crecv,crecv+strlen(crecv));
-        if(!err.empty())
-            return -1;
-        name=v.get("name").get<string>();
-        strncpy(msg,v.get("value").get<string>().c_str(),256);
-        type=name_type[name];
+    if (ws->read(msg)) {
+        int type=0;
+        printf("recieved msg : %s \n",msg);
+        if(strcmp(msg,"start")==0)
+            type=MESS_START;
+        if(strcmp(msg,"stop")==0)
+            type=MESS_STOP;
         return type;
     }else{
         return -1;
--- a/CushionSock.h	Sat Dec 17 09:13:37 2016 +0000
+++ b/CushionSock.h	Sat Dec 17 11:03:10 2016 +0000
@@ -4,7 +4,6 @@
 #include "mbed.h"
 #include "Websocket.h"
 #include "EthernetNetIf.h"
-#include "picojson.h"
 #include "MbedJSONValue.h"
 
 
@@ -16,13 +15,15 @@
     int MESS_SIT;
     int MESS_FRUST;
     int MESS_TEST;
+    int MESS_TWEET;
     
     /*
         Constructor
         @param hostAndport format : "hostname:port"        
     */
-    CushionSock(char * hostAndPort);  
+    CushionSock();  
     
+    void init(char * hostAndPort);
     /*
        connect to server
        @return true if the connection is established, false otherwise
@@ -55,8 +56,5 @@
     private:
     EthernetNetIf *eth;
     Websocket *ws;
-
-    std::map<int,string> type_name;
-    std::map<string,int> name_type;
 };
 #endif
\ No newline at end of file