ssssss
Diff: CushionSock.cpp
- Revision:
- 0:01a2e92d2924
- Child:
- 1:e6addce35f93
diff -r 000000000000 -r 01a2e92d2924 CushionSock.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CushionSock.cpp Sat Dec 17 09:13:37 2016 +0000 @@ -0,0 +1,86 @@ +#include "CushionSock.h" + +CushionSock::CushionSock(char * hostAndPort){ + eth = new EthernetNetIf(); + EthernetErr ethErr = eth->setup(); + if (ethErr) { + printf("\r\nERROR %d in setup.\r\n", ethErr); + } + 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"); + int failcount=0; + + while(! ws->connect()) { + failcount++; + if(failcount>10){ + printf("cannot connect failed.\n"); + break; + } + 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]; + MbedJSONValue json; + json["name"]=name.c_str(); + json["value"]=msg; + ws->send((char*)json.serialize().c_str()); + 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]; + return type; + }else{ + return -1; + } +} + +bool CushionSock::is_connected(){ + return ws->connected(); +} + +bool CushionSock::close(){ + return ws->close(); +} \ No newline at end of file