private fork

Fork of GSwifiInterface by gs fan

Revision:
12:057089026a20
Parent:
11:71d67fea5ace
Child:
16:105b56570533
--- a/GSwifi/GSwifi_sock.cpp	Fri Nov 15 04:20:14 2013 +0000
+++ b/GSwifi/GSwifi_sock.cpp	Fri Nov 22 14:03:07 2013 +0000
@@ -22,7 +22,7 @@
 {
     int i, flg = 0;
 
-    if (!isConnected() && _state.status == STAT_READY) return -1;
+    if (!isAssociated() || _state.status != STAT_READY) return -1;
 
     for (i = 0; i < strlen(host); i ++) {
         if ((host[i] < '0' || host[i] > '9') && host[i] != '.') {
@@ -44,10 +44,10 @@
     return 0;
 }
 
-int GSwifi::open (Protocol proto, const char *ip, int port, int src) {
+int GSwifi::open (Protocol proto, const char *ip, int port, int src, void(*func)(int)) {
     int cid;
 
-    if (!isConnected() && _state.status == STAT_READY) return -1;
+    if (!isAssociated() || _state.status != STAT_READY) return -1;
 
     _state.cid = -1;
     if (proto == PROTO_TCP) {
@@ -59,13 +59,14 @@
     cid = _state.cid;
     _con[cid].protocol = proto;
     _con[cid].type = TYPE_CLIENT;
+    _con[cid].func = func;
     return cid;
 }
 
-int GSwifi::listen (Protocol proto, int port) {
+int GSwifi::listen (Protocol proto, int port, void(*func)(int)) {
     int cid;
 
-    if (!isConnected() && _state.status == STAT_READY) return -1;
+    if (!isAssociated() || _state.status != STAT_READY) return -1;
 
     _state.cid = -1;
     if (proto == PROTO_TCP) {
@@ -77,6 +78,7 @@
     cid = _state.cid;
     _con[cid].protocol = proto;
     _con[cid].type = TYPE_SERVER;
+    _con[cid].func = func;
     return cid;
 }
 
@@ -185,3 +187,15 @@
     *port = _con[cid].port;
     return 0;
 }
+
+void GSwifi::initCon (int cid, bool connected) {
+    _con[cid].parent = -1;
+    _con[cid].func = NULL;
+    _con[cid].accept = false;
+    if (_con[cid].buf == NULL) {
+        _con[cid].buf = new CircBuffer<char>(CFG_DATA_SIZE);
+        if (_con[cid].buf == NULL) error("Can't allocate memory");
+    }
+    _con[cid].buf->flush();
+    _con[cid].connected = connected;
+}