fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Revision:
12:a91455702763
Parent:
10:5f1fa331d07c
Child:
13:7eaec228ad23
--- a/CLI_Source/wifi_cli.cpp	Tue Jan 26 09:36:28 2016 +0000
+++ b/CLI_Source/wifi_cli.cpp	Thu Feb 18 07:59:26 2016 +0000
@@ -45,7 +45,7 @@
     char ap_pw[AP_PW_MAX_LEN+1];
 } deviceNetwork_t;
 deviceNetwork_t devNetwork[4]; // 0-2 for setNetwork, 3 for set_ap
-DigitalOut wifiWriteInt(p30); 
+DigitalOut wifiWriteInt(p30);
 
 static uint8_t cyntecIsValidIP(uint8_t *startIdx, uint8_t totalLen)
 {
@@ -182,6 +182,7 @@
 void scanCallback(scanApInfo result)
 {
     newSSID = result.ssid.ssid;
+    // Check if SSID repeated
     if (memcmp(newSSID,preSSID,result.ssid.ssid_len)) {
 #ifdef DELTA_WIFI_DEBUG
         console.printf("SSID repeat\r\n");
@@ -205,12 +206,18 @@
         return;
     }
     memset(saveAP,0,sizeof(saveAP));
-    cyntecPrintOk();
     apInd = 1;
     int scanResult = wifiDevice.apScan(scanCallback);
-    if (scanResult<0)
+    if (scanResult >= 0) {
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("scan AP number:%d\r\n",scanResult);
+#endif
+        cyntecPrintOk();
+        return;
+    } else {
         cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
-    return;
+        return;
+    }
 }
 
 static void cyn_wifi_set_ap()
@@ -411,14 +418,17 @@
     uint8_t argLen = 0;
     uint8_t *argIP;
     EthernetInterface ethInterface;
-
+    uint8_t result;
     if (cyntecGetCommandTokenCnt() == 2) {
         /* use DHCP to get IP */
-        if ( ethInterface.init() == 0 ) {
+        result = ethInterface.init();
+        if ( result == 0 ) {
             cyntecPrintOk();
             wifiIniState = true;
-        } else
+        } else {
+            console.printf("function err:%d\r\n",result);
             cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
+        }
 
     } else if ( cyntecGetCommandTokenCnt() == 3 ) {
         /* use static to get IP */
@@ -681,69 +691,91 @@
     else
         console.printf("\r\nOK;FALSE\r\n\r\n");
 }
+
 static void cyn_wifi_tcp_connection_send()
 {
     char msg[TCP_SEND_MAX_LEN+1];
-
-    uint8_t *arg;
-    int argLen = 0;
     int sendData;
-
-    if (cyntecGetCommandTokenCnt() == 3) {
+    uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
+    uint8_t sendLen = 0;
+    uint8_t sendLenCharNum = 0;
+    uint8_t *sendLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
+    sendLen = cyntecAtoi(sendLeng,sendLenCharNum);
+    if (sendLen > TCP_SEND_MAX_LEN) {
+        cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() <4 ) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() >= 4) {
         if ( tcpConnect.is_connected() == false ) {
             cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
             return;
         }
 
         /* handle Message arg */
-        arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
-
-        if (argLen > TCP_SEND_MAX_LEN) {
-            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
-            return;
-        }
-
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[26+sendLenCharNum],cyntecGetTotalIndex());
+#endif
         memset( msg, 0, TCP_SEND_MAX_LEN+1);
-        memcpy( msg, arg, argLen);
-        sendData = tcpConnect.send(msg, argLen);
+        for (uint8_t i=0; i<sendLen; i++)
+            msg[i] = argAllBuf[26+sendLenCharNum+i];
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("msg:%s\r\n",msg);
+#endif
+        sendData = tcpConnect.send(msg, sendLen);
         if ( sendData >= 0 ) {
             console.printf("\r\nOK;");
             console.printf("%i\r\n\r\n",sendData);
         } else
             cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
-
-    }	else {
-        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+
 static void cyn_wifi_tcp_connection_send_all()
 {
     char msg[TCP_SEND_MAX_LEN+1];
-
-    uint8_t *arg;
-    int argLen = 0;
-
-    if (cyntecGetCommandTokenCnt() == 3) {
-        /* handle Message arg */
-        arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
-
-        if (argLen > TCP_SEND_MAX_LEN) {
-            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+    int sendData;
+    uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
+    uint8_t sendLen = 0;
+    uint8_t sendLenCharNum = 0;
+    uint8_t *sendLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
+    sendLen = cyntecAtoi(sendLeng,sendLenCharNum);
+    if (sendLen > TCP_SEND_MAX_LEN) {
+        cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() <4 ) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() >= 4) {
+        if ( tcpConnect.is_connected() == false ) {
+            cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
             return;
         }
 
+        /* handle Message arg */
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[30+sendLenCharNum],cyntecGetTotalIndex());
+#endif
         memset( msg, 0, TCP_SEND_MAX_LEN+1);
-        memcpy( msg, arg, argLen);
-
-        if ( tcpConnect.send_all(msg, argLen) >= 0 )
-            cyntecPrintOk();
-        else
+        for (uint8_t i=0; i<sendLen; i++)
+            msg[i] = argAllBuf[30+sendLenCharNum+i];
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("msg:%s\r\n",msg);
+#endif
+        sendData = tcpConnect.send_all(msg, sendLen);
+        if ( sendData >= 0 ) {
+            console.printf("\r\nOK;");
+            console.printf("%i\r\n\r\n",sendData);
+        } else
             cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
-
-    }	else {
-        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+
 static void cyn_wifi_tcp_connection_receive()
 {
     char msg[TCP_SEND_MAX_LEN+1];
@@ -752,7 +784,7 @@
     if (cyntecGetCommandTokenCnt() == 3) {
         /* handle Message arg */
         argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
-		//console.printf("argLen:%d\r\n",argLen);
+        //console.printf("argLen:%d\r\n",argLen);
         if (argLen > TCP_SEND_MAX_LEN || argLen < 0) {
             cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
             return;
@@ -794,6 +826,7 @@
         cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+
 static void cyn_wifi_tcp_connection_blocking()
 {
     bool blocking = false;
@@ -825,6 +858,7 @@
         cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+
 static void cyn_wifi_tcp_connection_close()
 {
     bool shutdown = true;
@@ -925,34 +959,72 @@
         cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+//static void cyn_wifi_udp_send_to()
+//{
+//    char msg[UDP_SEND_MAX_LEN+1];
+//
+//    uint8_t *arg;
+//    int argLen = 0;
+//
+//    if (cyntecGetCommandTokenCnt() == 3) {
+//        /* handle Message arg */
+//        arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
+//
+//        if (argLen > UDP_SEND_MAX_LEN || argLen < 0) {
+//            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+//            return;
+//        }
+//
+//        memset( msg, 0, UDP_SEND_MAX_LEN+1);
+//        memcpy( msg, arg, argLen);
+//
+//        if ( udpSocket.sendTo(cliEndpoint, msg, argLen) >= 0 )
+//            cyntecPrintOk();
+//        else
+//            cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
+//
+//    }	else {
+//        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+//    }
+//}
 static void cyn_wifi_udp_send_to()
 {
     char msg[UDP_SEND_MAX_LEN+1];
-
-    uint8_t *arg;
-    int argLen = 0;
-
-    if (cyntecGetCommandTokenCnt() == 3) {
-        /* handle Message arg */
-        arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
+    int sendData;
+    uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
+    uint8_t sendLen = 0;
+    uint8_t sendLenCharNum = 0;
+    uint8_t *sendLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
+    sendLen = cyntecAtoi(sendLeng,sendLenCharNum);
+    if (sendLen > UDP_SEND_MAX_LEN) {
+        cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() <4 ) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    }
+    if (cyntecGetCommandTokenCnt() >= 4) {
 
-        if (argLen > UDP_SEND_MAX_LEN || argLen < 0) {
-            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
-            return;
-        }
-
+        /* handle Message arg */
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[18+sendLenCharNum],cyntecGetTotalIndex());
+#endif
         memset( msg, 0, UDP_SEND_MAX_LEN+1);
-        memcpy( msg, arg, argLen);
-
-        if ( udpSocket.sendTo(cliEndpoint, msg, argLen) >= 0 )
-            cyntecPrintOk();
-        else
+        for (uint8_t i=0; i<sendLen; i++)
+            msg[i] = argAllBuf[18+sendLenCharNum+i];
+#ifdef DELTA_WIFI_DEBUG
+        console.printf("msg:%s\r\n",msg);
+#endif
+        sendData = udpSocket.sendTo(cliEndpoint, msg, sendLen);
+        if ( sendData >= 0 ) {
+            console.printf("\r\nOK;");
+            console.printf("%i\r\n\r\n",sendData);
+        } else
             cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
-
-    }	else {
-        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
     }
 }
+
 static void cyn_wifi_udp_received_from()
 {
     char msg[UDP_SEND_MAX_LEN+1];
@@ -1083,7 +1155,7 @@
     }
 }
 //static void cyn_wifi_udp_endpoint_get_address(){}
-static void cyn_wifi_udp_endpoint_port()  // 2015/1/20: Lester add
+static void cyn_wifi_udp_endpoint_port()   // 2015/1/20: Lester add
 {
     console.printf("\r\nOK;%d\r\n\r\n",cliEndpoint.get_port());
 }
@@ -1105,8 +1177,8 @@
 {
     // Do nothing until flag on
     if(wifiDataInt) {
-    	wifiWriteInt = !wifiWriteInt;
-    	wifiWriteInt = !wifiWriteInt;
+        wifiWriteInt = !wifiWriteInt;
+        wifiWriteInt = !wifiWriteInt;
 #ifdef DELTA_WIFI_DEBUG
         console.printf("wifi_receive_UDP_callback:");
 #endif
@@ -1119,13 +1191,13 @@
 {
     // Do nothing until flag on
     if(wifiDataInt) {
-    	wifiWriteInt = !wifiWriteInt;
-    	wifiWriteInt = !wifiWriteInt;
+        wifiWriteInt = !wifiWriteInt;
+        wifiWriteInt = !wifiWriteInt;
 #ifdef DELTA_WIFI_DEBUG
         console.printf("wifi_receive_TCP_callback\r\n");
 #endif
         console.printf("rTCP;%s,%i,%s,%d;\r\n",data, size, ipaddr, port);
-    } 
+    }
 }
 // Gill note: port number may different from original
 
@@ -1144,7 +1216,7 @@
     {"DMWT",cyn_wifi_mem_write, NULL, " <MEMADDR> <DATA> Write data into embeeded flash"},
     {"DEDI",cyn_wifi_enint, NULL, " Enable Wifi data interrupt, print data whenever received."},
     {"DDDI",cyn_wifi_disint, NULL, " Disable Wifi interrupt."},
-    
+
     /////////**** WIFI Ethernet ****//////////
     {"EINT", cyn_wifi_ethernet_init, NULL, " <STATIC IP> Initialize the interface to use DHCP"},
     {"ECON", cyn_wifi_ethernet_connect, NULL, "<TIMEOUT MS> Bring up the WiFi connection"},
@@ -1182,7 +1254,7 @@
     {"UERS", cyn_wifi_udp_endpoint_reset_address, NULL, "Reset the address of this endpoint"},
     {"UEAD", cyn_wifi_udp_endpoint_address, NULL, " <IPADDR> <PORT> Set/Get the address of this endpoint"},
     {"UEPT", cyn_wifi_udp_endpoint_port, NULL, "Get the port of this endpoint"},
-    
+
     {NULL, NULL, NULL, NULL},
 #else
     /////////**** WIFI Device ****//////////
@@ -1198,7 +1270,7 @@
     {"device_mem_write",cyn_wifi_mem_write, NULL, " <MEMADDR> <DATA> Write data into embeeded flash"},
     {"device_enint",cyn_wifi_enint, NULL, " Enable Wifi data interrupt, print data whenever received."},
     {"device_disint",cyn_wifi_disint, NULL, " Disable Wifi interrupt."},
-    
+
 
     /////////**** WIFI Ethernet ****//////////
     {"ethernet_init", cyn_wifi_ethernet_init, NULL, " <STATIC IP> Initialize the interface to use DHCP"},