fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Committer:
gillwei7
Date:
Thu Sep 08 03:28:35 2016 +0000
Revision:
16:fb86721db53d
Parent:
13:7eaec228ad23
commit test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gillwei7 0:5c195ab2f696 1 /**
gillwei7 0:5c195ab2f696 2 * File: wifi-cli.c
gillwei7 0:5c195ab2f696 3 * Description: WIFI CLI commands used by all applications WIFI of profile.
gillwei7 0:5c195ab2f696 4 *
gillwei7 0:5c195ab2f696 5 * Copyright 2015 by CYNTEC Corporation. All rights reserved.
gillwei7 0:5c195ab2f696 6 * Author: Lester Lee
gillwei7 0:5c195ab2f696 7 */
gillwei7 3:38ec8ad317f4 8
gillwei7 0:5c195ab2f696 9 #include "wifi_cli.h"
gillwei7 0:5c195ab2f696 10
gillwei7 0:5c195ab2f696 11 #define AP_SSID_MAX_LEN 33
gillwei7 0:5c195ab2f696 12 #define AP_PW_MAX_LEN 64
gillwei7 0:5c195ab2f696 13 #define STATIC_IP_MAX_LEN 15
gillwei7 13:7eaec228ad23 14 #define TCP_SEND_MAX_LEN 1400
gillwei7 13:7eaec228ad23 15 #define UDP_SEND_MAX_LEN 1400
gillwei7 5:ee474e3133eb 16 //#define DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 17 #define WIFI_MAX_AP_NUMBER 15
gillwei7 3:38ec8ad317f4 18 // WiFI_API_32kRAM ver. 8
gillwei7 3:38ec8ad317f4 19 #define MAX_MEM_WRITE_LENGTH 0x3FFFF
gillwei7 3:38ec8ad317f4 20 #define MAX_MEM_ERASE_ADDR 0x3F000
gillwei7 3:38ec8ad317f4 21 #define MAX_DATA_LENGTH 256
gillwei7 0:5c195ab2f696 22
gillwei7 9:ff3ccba5dc16 23 // General configuration parameters
gillwei7 0:5c195ab2f696 24 WIFIDevice wifiDevice;
gillwei7 0:5c195ab2f696 25 TCPSocketConnection tcpConnect;
gillwei7 0:5c195ab2f696 26 UDPSocket udpSocket;
gillwei7 0:5c195ab2f696 27 Endpoint cliEndpoint;
gillwei7 0:5c195ab2f696 28 TCPSocketServer tcpServer;
gillwei7 9:ff3ccba5dc16 29 //extern uint8_t isValidGPIO(uint8_t); // from ble_cli.cpp
gillwei7 9:ff3ccba5dc16 30 uint8_t static_ip[STATIC_IP_MAX_LEN] = "192.168.1.100";
gillwei7 9:ff3ccba5dc16 31 extern Serial console;
gillwei7 9:ff3ccba5dc16 32 //Serial console(p25,p23);
gillwei7 9:ff3ccba5dc16 33 extern const char* cyntecCommandErrorNames[];
gillwei7 0:5c195ab2f696 34
gillwei7 0:5c195ab2f696 35 static uint8_t is_Listen = false;
gillwei7 3:38ec8ad317f4 36 static uint8_t apInd;
gillwei7 3:38ec8ad317f4 37 static unsigned char *preSSID;
gillwei7 3:38ec8ad317f4 38 static unsigned char *newSSID;
gillwei7 3:38ec8ad317f4 39 static scanApInfo saveAP[WIFI_MAX_AP_NUMBER];
gillwei7 9:ff3ccba5dc16 40 static bool wifiIniState = false;
gillwei7 10:5f1fa331d07c 41 static bool wifiDataInt = false; // wifi receive callback flag
gillwei7 9:ff3ccba5dc16 42
gillwei7 9:ff3ccba5dc16 43 typedef struct deviceNetwork_s {
gillwei7 9:ff3ccba5dc16 44 char ap_ssid[AP_SSID_MAX_LEN+1];
gillwei7 9:ff3ccba5dc16 45 char ap_pw[AP_PW_MAX_LEN+1];
gillwei7 9:ff3ccba5dc16 46 } deviceNetwork_t;
gillwei7 9:ff3ccba5dc16 47 deviceNetwork_t devNetwork[4]; // 0-2 for setNetwork, 3 for set_ap
gillwei7 12:a91455702763 48 DigitalOut wifiWriteInt(p30);
gillwei7 0:5c195ab2f696 49
gillwei7 0:5c195ab2f696 50 static uint8_t cyntecIsValidIP(uint8_t *startIdx, uint8_t totalLen)
gillwei7 0:5c195ab2f696 51 {
gillwei7 3:38ec8ad317f4 52 uint8_t *ipIdx = startIdx;
gillwei7 3:38ec8ad317f4 53 uint8_t *tempIdx = ipIdx;
gillwei7 3:38ec8ad317f4 54 uint8_t IPAddr[3];
gillwei7 3:38ec8ad317f4 55 //uint8_t IPTokenLen = 0;
gillwei7 3:38ec8ad317f4 56 int16_t ipToken;
gillwei7 3:38ec8ad317f4 57 while ( (tempIdx - startIdx) <= totalLen ) {
gillwei7 3:38ec8ad317f4 58 if (*tempIdx == '.' || ((tempIdx - startIdx) == totalLen)) {
gillwei7 3:38ec8ad317f4 59 memset( IPAddr, 0, 3);
gillwei7 3:38ec8ad317f4 60 memcpy( IPAddr, ipIdx, (tempIdx - ipIdx));
gillwei7 3:38ec8ad317f4 61
gillwei7 3:38ec8ad317f4 62 ipToken = atoi((const char *)IPAddr);
gillwei7 3:38ec8ad317f4 63 if (ipToken > 255 || ipToken < 0)
gillwei7 3:38ec8ad317f4 64 return 1;
gillwei7 3:38ec8ad317f4 65
gillwei7 3:38ec8ad317f4 66 ipIdx = tempIdx + 1;
gillwei7 3:38ec8ad317f4 67 }
gillwei7 3:38ec8ad317f4 68 tempIdx++;
gillwei7 3:38ec8ad317f4 69 }
gillwei7 3:38ec8ad317f4 70 return 0;
gillwei7 0:5c195ab2f696 71 }
gillwei7 0:5c195ab2f696 72
gillwei7 0:5c195ab2f696 73 static void cyntecPrintOk(void)
gillwei7 0:5c195ab2f696 74 {
gillwei7 3:38ec8ad317f4 75 console.printf("\r\nOK\r\n\r\n");
gillwei7 0:5c195ab2f696 76 }
gillwei7 0:5c195ab2f696 77
gillwei7 0:5c195ab2f696 78 static void cyntecPrintError(uint8_t errIdx)
gillwei7 0:5c195ab2f696 79 {
gillwei7 3:38ec8ad317f4 80 console.printf("\r\nERROR;%s\r\n\r\n",cyntecCommandErrorNames[errIdx]);
gillwei7 3:38ec8ad317f4 81 }
gillwei7 3:38ec8ad317f4 82
gillwei7 0:5c195ab2f696 83 /////////**** WIFI Device Implement ****//////////
gillwei7 0:5c195ab2f696 84 static void cyn_wifi_device_sleep()
gillwei7 0:5c195ab2f696 85 {
gillwei7 5:ee474e3133eb 86 if (cyntecGetCommandTokenCnt() != 2) {
gillwei7 5:ee474e3133eb 87 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 5:ee474e3133eb 88 return;
gillwei7 5:ee474e3133eb 89 }
gillwei7 5:ee474e3133eb 90 uint8_t err_code = wifiDevice.sleep();
gillwei7 5:ee474e3133eb 91 if (err_code == 0)
gillwei7 5:ee474e3133eb 92 cyntecPrintOk();
gillwei7 5:ee474e3133eb 93 else {
gillwei7 5:ee474e3133eb 94 console.printf("ERROR;%d\r\n",err_code);
gillwei7 5:ee474e3133eb 95 return;
gillwei7 5:ee474e3133eb 96 }
gillwei7 0:5c195ab2f696 97 }
gillwei7 3:38ec8ad317f4 98
gillwei7 3:38ec8ad317f4 99 static void cyn_wifi_device_coex()
gillwei7 0:5c195ab2f696 100 {
gillwei7 5:ee474e3133eb 101 if (cyntecGetCommandTokenCnt() != 2) {
gillwei7 5:ee474e3133eb 102 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 5:ee474e3133eb 103 return;
gillwei7 5:ee474e3133eb 104 }
gillwei7 5:ee474e3133eb 105 uint8_t err_code = wifiDevice.enableCoexistance();
gillwei7 5:ee474e3133eb 106 if (err_code == 0)
gillwei7 5:ee474e3133eb 107 cyntecPrintOk();
gillwei7 5:ee474e3133eb 108 else {
gillwei7 5:ee474e3133eb 109 console.printf("ERROR;%d\r\n",err_code);
gillwei7 5:ee474e3133eb 110 return;
gillwei7 5:ee474e3133eb 111 }
gillwei7 0:5c195ab2f696 112 }
gillwei7 3:38ec8ad317f4 113
gillwei7 0:5c195ab2f696 114 static void cyn_wifi_device_network()
gillwei7 0:5c195ab2f696 115 {
gillwei7 9:ff3ccba5dc16 116 if (wifiIniState== true) {
gillwei7 5:ee474e3133eb 117 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_CMD_ORDER);
gillwei7 5:ee474e3133eb 118 return;
gillwei7 5:ee474e3133eb 119 }
gillwei7 3:38ec8ad317f4 120 if (cyntecGetCommandTokenCnt() == 5) {
gillwei7 3:38ec8ad317f4 121 uint8_t argLen = 0;
gillwei7 3:38ec8ad317f4 122 uint8_t *argSSID;
gillwei7 3:38ec8ad317f4 123 uint8_t *argPW;
gillwei7 3:38ec8ad317f4 124 uint8_t *argPriority;
gillwei7 3:38ec8ad317f4 125 /* 0~2, 0 is highest */
gillwei7 3:38ec8ad317f4 126 uint8_t priority = 0;
gillwei7 3:38ec8ad317f4 127
gillwei7 3:38ec8ad317f4 128 /* handle priority */
gillwei7 3:38ec8ad317f4 129 argPriority = cyntecGetCommandArgument(2, NULL);
gillwei7 3:38ec8ad317f4 130 switch(*argPriority) {
gillwei7 3:38ec8ad317f4 131 case '0':
gillwei7 3:38ec8ad317f4 132 priority = 0;
gillwei7 3:38ec8ad317f4 133 break;
gillwei7 3:38ec8ad317f4 134 case '1':
gillwei7 3:38ec8ad317f4 135 priority = 1;
gillwei7 3:38ec8ad317f4 136 break;
gillwei7 3:38ec8ad317f4 137 case '2':
gillwei7 3:38ec8ad317f4 138 priority = 2;
gillwei7 3:38ec8ad317f4 139 break;
gillwei7 3:38ec8ad317f4 140 default:
gillwei7 3:38ec8ad317f4 141 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 142 return;
gillwei7 3:38ec8ad317f4 143 }
gillwei7 3:38ec8ad317f4 144
gillwei7 3:38ec8ad317f4 145 /* handle SSID */
gillwei7 3:38ec8ad317f4 146 argSSID = cyntecGetCommandArgument(0, &argLen);
gillwei7 3:38ec8ad317f4 147 if ( argLen > AP_SSID_MAX_LEN ) {
gillwei7 3:38ec8ad317f4 148 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 149 return;
gillwei7 3:38ec8ad317f4 150 }
gillwei7 3:38ec8ad317f4 151 memset( devNetwork[priority].ap_ssid , 0, AP_SSID_MAX_LEN+1);
gillwei7 3:38ec8ad317f4 152 memcpy( devNetwork[priority].ap_ssid, argSSID, argLen);
gillwei7 3:38ec8ad317f4 153
gillwei7 3:38ec8ad317f4 154 /* handle Password */
gillwei7 3:38ec8ad317f4 155 argPW = cyntecGetCommandArgument(1, &argLen);
gillwei7 3:38ec8ad317f4 156 if ( argLen > AP_PW_MAX_LEN ) {
gillwei7 3:38ec8ad317f4 157 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 158 return;
gillwei7 3:38ec8ad317f4 159 }
gillwei7 3:38ec8ad317f4 160 memset( devNetwork[priority].ap_pw, 0, AP_PW_MAX_LEN+1);
gillwei7 3:38ec8ad317f4 161 memcpy( devNetwork[priority].ap_pw, argPW, argLen);
gillwei7 3:38ec8ad317f4 162
gillwei7 3:38ec8ad317f4 163 /* call setup API */
gillwei7 3:38ec8ad317f4 164 wifiDevice.setNetwork(devNetwork[priority].ap_ssid, devNetwork[priority].ap_pw, priority);
gillwei7 3:38ec8ad317f4 165 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 166 } else {
gillwei7 3:38ec8ad317f4 167 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 168 }
gillwei7 3:38ec8ad317f4 169 }
gillwei7 3:38ec8ad317f4 170
gillwei7 3:38ec8ad317f4 171 // gill 20150910
gillwei7 3:38ec8ad317f4 172 // Comply to WIFI_API_32kRAM version 8
gillwei7 5:ee474e3133eb 173 static void cyn_wifi_read_sp_version()
gillwei7 3:38ec8ad317f4 174 {
gillwei7 3:38ec8ad317f4 175 wifiSpInfo version = wifiDevice.read_WIFI_SP_version();
gillwei7 3:38ec8ad317f4 176 cyntecPrintOk();
gillwei7 5:ee474e3133eb 177 console.printf("%X;", version.chipID);
gillwei7 5:ee474e3133eb 178 console.printf("%i;", version.imgStaID);
gillwei7 3:38ec8ad317f4 179 console.printf("%i\r\n", version.imgApID);
gillwei7 3:38ec8ad317f4 180 }
gillwei7 3:38ec8ad317f4 181
gillwei7 3:38ec8ad317f4 182 void scanCallback(scanApInfo result)
gillwei7 3:38ec8ad317f4 183 {
gillwei7 3:38ec8ad317f4 184 newSSID = result.ssid.ssid;
gillwei7 12:a91455702763 185 // Check if SSID repeated
gillwei7 3:38ec8ad317f4 186 if (memcmp(newSSID,preSSID,result.ssid.ssid_len)) {
gillwei7 3:38ec8ad317f4 187 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 188 console.printf("SSID repeat\r\n");
gillwei7 3:38ec8ad317f4 189 #endif
gillwei7 3:38ec8ad317f4 190 } else {
gillwei7 3:38ec8ad317f4 191 console.printf("%i,", apInd);
gillwei7 3:38ec8ad317f4 192 console.printf("%s,", result.ssid.ssid);
gillwei7 3:38ec8ad317f4 193 //console.printf("%i,", result.ssid.ssid_len);
gillwei7 3:38ec8ad317f4 194 console.printf("%i,", result.ApRssi);
gillwei7 3:38ec8ad317f4 195 console.printf("%i,", result.channelNo);
gillwei7 3:38ec8ad317f4 196 console.printf("%i\r\n", result.secType);
gillwei7 3:38ec8ad317f4 197 apInd++;
gillwei7 3:38ec8ad317f4 198 }
gillwei7 3:38ec8ad317f4 199 preSSID = result.ssid.ssid;
gillwei7 3:38ec8ad317f4 200 }
gillwei7 3:38ec8ad317f4 201
gillwei7 3:38ec8ad317f4 202 static void cyn_wifi_device_ap_scan()
gillwei7 3:38ec8ad317f4 203 {
gillwei7 9:ff3ccba5dc16 204 if (wifiIniState== false) {
gillwei7 5:ee474e3133eb 205 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_CMD_ORDER);
gillwei7 5:ee474e3133eb 206 return;
gillwei7 3:38ec8ad317f4 207 }
gillwei7 3:38ec8ad317f4 208 memset(saveAP,0,sizeof(saveAP));
gillwei7 3:38ec8ad317f4 209 apInd = 1;
gillwei7 5:ee474e3133eb 210 int scanResult = wifiDevice.apScan(scanCallback);
gillwei7 12:a91455702763 211 if (scanResult >= 0) {
gillwei7 12:a91455702763 212 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 213 console.printf("scan AP number:%d\r\n",scanResult);
gillwei7 12:a91455702763 214 #endif
gillwei7 12:a91455702763 215 cyntecPrintOk();
gillwei7 12:a91455702763 216 return;
gillwei7 12:a91455702763 217 } else {
gillwei7 5:ee474e3133eb 218 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 12:a91455702763 219 return;
gillwei7 12:a91455702763 220 }
gillwei7 3:38ec8ad317f4 221 }
gillwei7 3:38ec8ad317f4 222
gillwei7 3:38ec8ad317f4 223 static void cyn_wifi_set_ap()
gillwei7 3:38ec8ad317f4 224 {
gillwei7 4:b52035367aee 225 if (cyntecGetCommandTokenCnt() != 6) {
gillwei7 5:ee474e3133eb 226 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 5:ee474e3133eb 227 }
gillwei7 5:ee474e3133eb 228 uint8_t argLen = 0;
gillwei7 5:ee474e3133eb 229 uint8_t * argSSID;
gillwei7 5:ee474e3133eb 230 uint8_t * argPW;
gillwei7 5:ee474e3133eb 231 uint8_t * argSEC;
gillwei7 5:ee474e3133eb 232 uint8_t * argCH;
gillwei7 5:ee474e3133eb 233
gillwei7 5:ee474e3133eb 234 /* handle SSID */
gillwei7 5:ee474e3133eb 235 argSSID = cyntecGetCommandArgument(0, &argLen);
gillwei7 5:ee474e3133eb 236 if ( argLen > AP_SSID_MAX_LEN ) {
gillwei7 5:ee474e3133eb 237 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 5:ee474e3133eb 238 return;
gillwei7 5:ee474e3133eb 239 }
gillwei7 5:ee474e3133eb 240 memset( devNetwork[3].ap_ssid , 0, AP_SSID_MAX_LEN+1);
gillwei7 5:ee474e3133eb 241 memcpy( devNetwork[3].ap_ssid, argSSID, argLen);
gillwei7 3:38ec8ad317f4 242
gillwei7 5:ee474e3133eb 243 /* handle Password */
gillwei7 5:ee474e3133eb 244 argPW = cyntecGetCommandArgument(1, &argLen);
gillwei7 5:ee474e3133eb 245 if ( argLen > AP_PW_MAX_LEN ) {
gillwei7 5:ee474e3133eb 246 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 5:ee474e3133eb 247 return;
gillwei7 5:ee474e3133eb 248 }
gillwei7 5:ee474e3133eb 249 memset( devNetwork[3].ap_pw, 0, AP_PW_MAX_LEN+1);
gillwei7 5:ee474e3133eb 250 memcpy( devNetwork[3].ap_pw, argPW, argLen);
gillwei7 5:ee474e3133eb 251
gillwei7 5:ee474e3133eb 252 /* handle Security */
gillwei7 5:ee474e3133eb 253 security_t setSec = SECURITY_WPA2_AES_PSK;
gillwei7 5:ee474e3133eb 254 argSEC = cyntecGetCommandArgument(2, &argLen);
gillwei7 5:ee474e3133eb 255 char numSec[argLen];
gillwei7 5:ee474e3133eb 256 memcpy( numSec, argSEC, argLen);
gillwei7 5:ee474e3133eb 257 uint8_t sec = atoi(numSec);
gillwei7 5:ee474e3133eb 258 //uint8_t numSec = atoi((const char *)arg);
gillwei7 4:b52035367aee 259
gillwei7 5:ee474e3133eb 260 if ( (int)sec > 7 || (int)sec < 0) {
gillwei7 5:ee474e3133eb 261 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 5:ee474e3133eb 262 return;
gillwei7 5:ee474e3133eb 263 }
gillwei7 5:ee474e3133eb 264 security_t arrySec[8]= {SECURITY_OPEN,
gillwei7 5:ee474e3133eb 265 SECURITY_WEP_PSK,
gillwei7 5:ee474e3133eb 266 SECURITY_WEP_SHARED,
gillwei7 5:ee474e3133eb 267 SECURITY_WPA_TKIP_PSK,
gillwei7 5:ee474e3133eb 268 SECURITY_WPA_AES_PSK,
gillwei7 5:ee474e3133eb 269 SECURITY_WPA2_AES_PSK,
gillwei7 5:ee474e3133eb 270 SECURITY_WPA2_TKIP_PSK,
gillwei7 5:ee474e3133eb 271 SECURITY_WPA2_MIXED_PSK
gillwei7 5:ee474e3133eb 272 };
gillwei7 5:ee474e3133eb 273 for (uint8_t i=0; i<8; i++) {
gillwei7 5:ee474e3133eb 274 if(sec==i)
gillwei7 5:ee474e3133eb 275 setSec = arrySec[i];
gillwei7 5:ee474e3133eb 276 }
gillwei7 3:38ec8ad317f4 277
gillwei7 5:ee474e3133eb 278 /* handle Channel */
gillwei7 5:ee474e3133eb 279 argCH = cyntecGetCommandArgument(3, &argLen);
gillwei7 5:ee474e3133eb 280 uint8_t setChan = atoi((char *)argCH);
gillwei7 5:ee474e3133eb 281
gillwei7 5:ee474e3133eb 282 if ( (int)setChan > 14 || (int)setChan < 1) {
gillwei7 5:ee474e3133eb 283 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 5:ee474e3133eb 284 return;
gillwei7 5:ee474e3133eb 285 }
gillwei7 5:ee474e3133eb 286 #ifdef DELTA_WIFI_DEBUG
gillwei7 5:ee474e3133eb 287 console.printf("argSSID:%s\r\n",devNetwork[3].ap_ssid);
gillwei7 5:ee474e3133eb 288 console.printf("argPW:%s\r\n",devNetwork[3].ap_pw);
gillwei7 5:ee474e3133eb 289 console.printf("sec:%i\r\n",sec);
gillwei7 5:ee474e3133eb 290 console.printf("setChan:%i\r\n",setChan);
gillwei7 5:ee474e3133eb 291 #endif
gillwei7 5:ee474e3133eb 292
gillwei7 5:ee474e3133eb 293 /* call setup API */
gillwei7 5:ee474e3133eb 294 wifiDevice.setAccessPoint(devNetwork[3].ap_ssid, devNetwork[3].ap_pw, setSec, setChan);
gillwei7 5:ee474e3133eb 295 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 296
gillwei7 3:38ec8ad317f4 297 }
gillwei7 3:38ec8ad317f4 298
gillwei7 3:38ec8ad317f4 299 static void cyn_wifi_mem_erase4k()
gillwei7 3:38ec8ad317f4 300 {
gillwei7 5:ee474e3133eb 301 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 5:ee474e3133eb 302 uint8_t argLen = 0;
gillwei7 5:ee474e3133eb 303 uint8_t *arg;
gillwei7 5:ee474e3133eb 304 uint32_t setAddr;
gillwei7 5:ee474e3133eb 305 arg = cyntecGetCommandArgument(0, &argLen);
gillwei7 5:ee474e3133eb 306 if (arg[0] != '0' || arg[1] != 'x') {
gillwei7 5:ee474e3133eb 307 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
gillwei7 5:ee474e3133eb 308 return;
gillwei7 5:ee474e3133eb 309 }
gillwei7 5:ee474e3133eb 310 setAddr = cyntecHexToUint32(arg+2,argLen-2);
gillwei7 5:ee474e3133eb 311 if (setAddr % 0x1000 != 0 || setAddr > MAX_MEM_ERASE_ADDR) {
gillwei7 5:ee474e3133eb 312 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 5:ee474e3133eb 313 return;
gillwei7 5:ee474e3133eb 314 }
gillwei7 3:38ec8ad317f4 315 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 316 console.printf("setAddr:%08X\r\n",setAddr);
gillwei7 3:38ec8ad317f4 317 #endif
gillwei7 3:38ec8ad317f4 318 int err_code = wifiDevice.storage_erase4KB(setAddr);
gillwei7 3:38ec8ad317f4 319 if (err_code == 0)
gillwei7 3:38ec8ad317f4 320 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 321 else
gillwei7 5:ee474e3133eb 322 console.printf("ERROR;\r\n");
gillwei7 5:ee474e3133eb 323 } else {
gillwei7 5:ee474e3133eb 324 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 5:ee474e3133eb 325 }
gillwei7 3:38ec8ad317f4 326 }
gillwei7 3:38ec8ad317f4 327
gillwei7 3:38ec8ad317f4 328 static void cyn_wifi_mem_write()
gillwei7 3:38ec8ad317f4 329 {
gillwei7 5:ee474e3133eb 330 uint8_t argLen = 0;
gillwei7 3:38ec8ad317f4 331 uint8_t *arg;
gillwei7 3:38ec8ad317f4 332 uint32_t setAddr;
gillwei7 3:38ec8ad317f4 333 uint8_t setData[MAX_DATA_LENGTH] = {0};
gillwei7 3:38ec8ad317f4 334 uint16_t writeLen;
gillwei7 3:38ec8ad317f4 335 arg = cyntecGetCommandArgument(0, &argLen);
gillwei7 3:38ec8ad317f4 336 if (arg[0] != '0' || arg[1] != 'x') {
gillwei7 5:ee474e3133eb 337 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
gillwei7 3:38ec8ad317f4 338 return;
gillwei7 3:38ec8ad317f4 339 }
gillwei7 3:38ec8ad317f4 340 setAddr = cyntecHexToUint32(arg+2,argLen-2);
gillwei7 3:38ec8ad317f4 341 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 342 console.printf("%08X\r\n",setAddr);
gillwei7 3:38ec8ad317f4 343 #endif
gillwei7 5:ee474e3133eb 344 if (setAddr > MAX_MEM_WRITE_LENGTH) {
gillwei7 5:ee474e3133eb 345 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 346 return;
gillwei7 3:38ec8ad317f4 347 }
gillwei7 3:38ec8ad317f4 348 arg = cyntecGetCommandArgument(1, &argLen);
gillwei7 3:38ec8ad317f4 349 if (arg[0]!='0' || arg[1]!='x' || (argLen-2)%2!=0) {
gillwei7 5:ee474e3133eb 350 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
gillwei7 3:38ec8ad317f4 351 return;
gillwei7 3:38ec8ad317f4 352 }
gillwei7 5:ee474e3133eb 353 //memset(setData,0,(argLen-2)/2);
gillwei7 5:ee474e3133eb 354 for (int i=0 ; i < (argLen-2)/2; i++) {
gillwei7 5:ee474e3133eb 355 setData[i] = cyntecArgToUint8(arg+2*(i+1), 2);
gillwei7 3:38ec8ad317f4 356 #ifdef DELTA_WIFI_DEBUG
gillwei7 5:ee474e3133eb 357 console.printf("%02X",setData[i]);
gillwei7 3:38ec8ad317f4 358 #endif
gillwei7 5:ee474e3133eb 359 }
gillwei7 5:ee474e3133eb 360 writeLen = (argLen-2)/2;
gillwei7 5:ee474e3133eb 361 // gill need confirm
gillwei7 5:ee474e3133eb 362 if (writeLen > MAX_MEM_WRITE_LENGTH) {
gillwei7 5:ee474e3133eb 363 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 364 return;
gillwei7 3:38ec8ad317f4 365 }
gillwei7 3:38ec8ad317f4 366 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 367 console.printf("\r\nwriteLen:%i\r\n",writeLen);
gillwei7 3:38ec8ad317f4 368 #endif
gillwei7 5:ee474e3133eb 369 int err_code = wifiDevice.storage_write(setAddr,setData,writeLen);
gillwei7 5:ee474e3133eb 370 if (err_code == 0)
gillwei7 5:ee474e3133eb 371 cyntecPrintOk();
gillwei7 5:ee474e3133eb 372 else
gillwei7 5:ee474e3133eb 373 console.printf("ERROR;%d\r\n",err_code);
gillwei7 3:38ec8ad317f4 374 }
gillwei7 3:38ec8ad317f4 375
gillwei7 3:38ec8ad317f4 376 static void cyn_wifi_mem_read()
gillwei7 3:38ec8ad317f4 377 {
gillwei7 5:ee474e3133eb 378 uint8_t argLen = 0;
gillwei7 3:38ec8ad317f4 379 uint8_t *arg;
gillwei7 3:38ec8ad317f4 380 uint32_t setAddr;
gillwei7 3:38ec8ad317f4 381 uint8_t setData[MAX_DATA_LENGTH] = {0};
gillwei7 3:38ec8ad317f4 382 uint16_t readLen;
gillwei7 3:38ec8ad317f4 383 arg = cyntecGetCommandArgument(0, &argLen);
gillwei7 3:38ec8ad317f4 384 if (arg[0] != '0' || arg[1] != 'x') {
gillwei7 5:ee474e3133eb 385 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
gillwei7 3:38ec8ad317f4 386 return;
gillwei7 3:38ec8ad317f4 387 }
gillwei7 3:38ec8ad317f4 388 setAddr = cyntecHexToUint32(arg+2,argLen-2);
gillwei7 3:38ec8ad317f4 389 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 390 console.printf("%08X\r\n",setAddr);
gillwei7 3:38ec8ad317f4 391 #endif
gillwei7 5:ee474e3133eb 392 if (setAddr > MAX_MEM_WRITE_LENGTH) {
gillwei7 5:ee474e3133eb 393 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 394 return;
gillwei7 3:38ec8ad317f4 395 }
gillwei7 3:38ec8ad317f4 396 arg = cyntecGetCommandArgument(1, &argLen);
gillwei7 5:ee474e3133eb 397
gillwei7 5:ee474e3133eb 398 readLen = cyntecAtoiUint16(arg,argLen);
gillwei7 5:ee474e3133eb 399
gillwei7 3:38ec8ad317f4 400 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 401 console.printf("\r\nreadLen:%04X\r\n",readLen);
gillwei7 3:38ec8ad317f4 402 #endif
gillwei7 5:ee474e3133eb 403
gillwei7 5:ee474e3133eb 404 int err_code = wifiDevice.storage_read(setAddr,setData,readLen);
gillwei7 5:ee474e3133eb 405 if (err_code == 0) {
gillwei7 5:ee474e3133eb 406 cyntecPrintOk();
gillwei7 5:ee474e3133eb 407 for (int i=0; i<readLen; i++) {
gillwei7 5:ee474e3133eb 408 console.printf("%02X",setData[i]);
gillwei7 5:ee474e3133eb 409 }
gillwei7 5:ee474e3133eb 410 console.printf("\r\n");
gillwei7 5:ee474e3133eb 411 } else
gillwei7 5:ee474e3133eb 412 console.printf("ERROR;%d\r\n",err_code);
gillwei7 0:5c195ab2f696 413 }
gillwei7 3:38ec8ad317f4 414
gillwei7 0:5c195ab2f696 415 /////////**** WIFI Ethernet Implement ****//////////
gillwei7 0:5c195ab2f696 416 static void cyn_wifi_ethernet_init()
gillwei7 0:5c195ab2f696 417 {
gillwei7 3:38ec8ad317f4 418 uint8_t argLen = 0;
gillwei7 3:38ec8ad317f4 419 uint8_t *argIP;
gillwei7 3:38ec8ad317f4 420 EthernetInterface ethInterface;
gillwei7 12:a91455702763 421 uint8_t result;
gillwei7 3:38ec8ad317f4 422 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 423 /* use DHCP to get IP */
gillwei7 12:a91455702763 424 result = ethInterface.init();
gillwei7 12:a91455702763 425 if ( result == 0 ) {
gillwei7 3:38ec8ad317f4 426 cyntecPrintOk();
gillwei7 9:ff3ccba5dc16 427 wifiIniState = true;
gillwei7 12:a91455702763 428 } else {
gillwei7 12:a91455702763 429 console.printf("function err:%d\r\n",result);
gillwei7 3:38ec8ad317f4 430 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 12:a91455702763 431 }
gillwei7 3:38ec8ad317f4 432
gillwei7 3:38ec8ad317f4 433 } else if ( cyntecGetCommandTokenCnt() == 3 ) {
gillwei7 3:38ec8ad317f4 434 /* use static to get IP */
gillwei7 3:38ec8ad317f4 435 argIP = cyntecGetCommandArgument(0, &argLen);
gillwei7 0:5c195ab2f696 436
gillwei7 3:38ec8ad317f4 437 if ( cyntecIsValidIP(argIP,argLen) != 0) {
gillwei7 3:38ec8ad317f4 438 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 439 return;
gillwei7 3:38ec8ad317f4 440 }
gillwei7 3:38ec8ad317f4 441
gillwei7 3:38ec8ad317f4 442 memset( static_ip, 0, STATIC_IP_MAX_LEN);
gillwei7 3:38ec8ad317f4 443 memcpy( static_ip, argIP, argLen);
gillwei7 3:38ec8ad317f4 444 if ( ethInterface.init((const char *)static_ip, NULL, NULL) == 0) {
gillwei7 3:38ec8ad317f4 445 cyntecPrintOk();
gillwei7 9:ff3ccba5dc16 446 wifiIniState = true;
gillwei7 5:ee474e3133eb 447 } else
gillwei7 3:38ec8ad317f4 448 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 449 } else {
gillwei7 3:38ec8ad317f4 450 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 451 }
gillwei7 3:38ec8ad317f4 452
gillwei7 3:38ec8ad317f4 453 return;
gillwei7 0:5c195ab2f696 454 }
gillwei7 0:5c195ab2f696 455 static void cyn_wifi_ethernet_connect()
gillwei7 0:5c195ab2f696 456 {
gillwei7 3:38ec8ad317f4 457 int timeout_ms = 35000;
gillwei7 3:38ec8ad317f4 458 uint8_t *argTimeout;
gillwei7 3:38ec8ad317f4 459 EthernetInterface ethInterface;
gillwei7 10:5f1fa331d07c 460 if (cyntecGetCommandTokenCnt() != 2 & cyntecGetCommandTokenCnt() != 3)
gillwei7 10:5f1fa331d07c 461 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 462 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 463 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 464 console.printf("\r\n");
gillwei7 3:38ec8ad317f4 465 console.printf("Connecting..., Waiting for 35000 ms...");
gillwei7 3:38ec8ad317f4 466 console.printf("\r\n\r\n");
gillwei7 3:38ec8ad317f4 467 #endif
gillwei7 3:38ec8ad317f4 468 if ( ethInterface.connect() == 0 )
gillwei7 3:38ec8ad317f4 469 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 470 else
gillwei7 3:38ec8ad317f4 471 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 5:ee474e3133eb 472 }
gillwei7 5:ee474e3133eb 473 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 474 argTimeout = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 475 timeout_ms = atoi((const char*)argTimeout);
gillwei7 3:38ec8ad317f4 476
gillwei7 3:38ec8ad317f4 477 if (timeout_ms < 0) {
gillwei7 3:38ec8ad317f4 478 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 479 return;
gillwei7 3:38ec8ad317f4 480 }
gillwei7 3:38ec8ad317f4 481 #ifdef DELTA_WIFI_DEBUG
gillwei7 3:38ec8ad317f4 482 console.printf("\r\nConnecting..., Waiting for ");
gillwei7 3:38ec8ad317f4 483 console.printf((char*)argTimeout);
gillwei7 3:38ec8ad317f4 484 console.printf(" ms...\r\n\r\n");
gillwei7 3:38ec8ad317f4 485 #endif
gillwei7 3:38ec8ad317f4 486 if ( ethInterface.connect(timeout_ms) == 0 )
gillwei7 3:38ec8ad317f4 487 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 488 else
gillwei7 3:38ec8ad317f4 489 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 490 }
gillwei7 3:38ec8ad317f4 491 return;
gillwei7 0:5c195ab2f696 492 }
gillwei7 0:5c195ab2f696 493 static void cyn_wifi_ethernet_disconnect()
gillwei7 0:5c195ab2f696 494 {
gillwei7 3:38ec8ad317f4 495 EthernetInterface ethInterface;
gillwei7 3:38ec8ad317f4 496
gillwei7 3:38ec8ad317f4 497 ethInterface.disconnect();
gillwei7 3:38ec8ad317f4 498 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 499 return;
gillwei7 0:5c195ab2f696 500 }
gillwei7 0:5c195ab2f696 501 static void cyn_wifi_ethernet_mac()
gillwei7 0:5c195ab2f696 502 {
gillwei7 3:38ec8ad317f4 503 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 504
gillwei7 3:38ec8ad317f4 505 char mac_addr[19];
gillwei7 3:38ec8ad317f4 506 memset(mac_addr, 0, 19);
gillwei7 3:38ec8ad317f4 507 memcpy(mac_addr, ethInterface.getMACAddress(), 19);
gillwei7 3:38ec8ad317f4 508
gillwei7 3:38ec8ad317f4 509 console.printf("\r\nOK;%s\r\n\r\n",mac_addr);
gillwei7 3:38ec8ad317f4 510
gillwei7 3:38ec8ad317f4 511 return;
gillwei7 0:5c195ab2f696 512 }
gillwei7 0:5c195ab2f696 513 static void cyn_wifi_ethernet_ip()
gillwei7 0:5c195ab2f696 514 {
gillwei7 3:38ec8ad317f4 515 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 516
gillwei7 3:38ec8ad317f4 517 char ip_addr[15] = "\0";
gillwei7 3:38ec8ad317f4 518 memset(ip_addr, 0, 15);
gillwei7 3:38ec8ad317f4 519 memcpy(ip_addr, ethInterface.getIPAddress(), 15);
gillwei7 3:38ec8ad317f4 520
gillwei7 3:38ec8ad317f4 521 console.printf("\r\nOK;%s\r\n\r\n",ip_addr);
gillwei7 3:38ec8ad317f4 522
gillwei7 3:38ec8ad317f4 523 return;
gillwei7 0:5c195ab2f696 524 }
gillwei7 0:5c195ab2f696 525 /* not implement yet... */
gillwei7 0:5c195ab2f696 526 ////static void cyn_wifi_ethernet_gateway(){}
gillwei7 0:5c195ab2f696 527 ////static void cyn_wifi_ethernet_mask(){}
gillwei7 0:5c195ab2f696 528 /* not implement yet... */
gillwei7 0:5c195ab2f696 529
gillwei7 0:5c195ab2f696 530 /////////**** WIFI TCP Socket Server Implement ****//////////
gillwei7 0:5c195ab2f696 531 static void cyn_wifi_tcp_server_bind()
gillwei7 0:5c195ab2f696 532 {
gillwei7 0:5c195ab2f696 533 // TCPSocketServer tcpServer;
gillwei7 3:38ec8ad317f4 534
gillwei7 3:38ec8ad317f4 535 int port = 1;
gillwei7 3:38ec8ad317f4 536 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 537 if ( tcpServer.bind(port) == 0 )
gillwei7 3:38ec8ad317f4 538 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 539 else
gillwei7 3:38ec8ad317f4 540 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 541
gillwei7 3:38ec8ad317f4 542 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 543 port = atoi((const char*)(cyntecGetCommandArgument(0, NULL)));
gillwei7 9:ff3ccba5dc16 544 #ifdef DELTA_WIFI_DEBUG
gillwei7 9:ff3ccba5dc16 545 console.printf("port:%i\r\n",port);
gillwei7 9:ff3ccba5dc16 546 #endif
gillwei7 3:38ec8ad317f4 547 if (port < 0) {
gillwei7 3:38ec8ad317f4 548 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 549 return;
gillwei7 3:38ec8ad317f4 550 }
gillwei7 3:38ec8ad317f4 551
gillwei7 3:38ec8ad317f4 552 if ( tcpServer.bind(port) == 0 )
gillwei7 3:38ec8ad317f4 553 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 554 else
gillwei7 3:38ec8ad317f4 555 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 556
gillwei7 3:38ec8ad317f4 557 } else {
gillwei7 3:38ec8ad317f4 558 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 559 }
gillwei7 0:5c195ab2f696 560 }
gillwei7 0:5c195ab2f696 561 static void cyn_wifi_tcp_server_listen()
gillwei7 0:5c195ab2f696 562 {
gillwei7 0:5c195ab2f696 563 // TCPSocketServer tcpServer;
gillwei7 3:38ec8ad317f4 564
gillwei7 3:38ec8ad317f4 565 int backlog = 1;
gillwei7 3:38ec8ad317f4 566 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 567 if ( tcpServer.listen(backlog) == 0 ) {
gillwei7 3:38ec8ad317f4 568 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 569 is_Listen = true;
gillwei7 3:38ec8ad317f4 570 } else
gillwei7 3:38ec8ad317f4 571 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 572 } else {
gillwei7 3:38ec8ad317f4 573 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 574 }
gillwei7 0:5c195ab2f696 575 }
gillwei7 0:5c195ab2f696 576 static void cyn_wifi_tcp_server_accept()
gillwei7 0:5c195ab2f696 577 {
gillwei7 0:5c195ab2f696 578 // TCPSocketServer tcpServer;
gillwei7 3:38ec8ad317f4 579
gillwei7 3:38ec8ad317f4 580 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 581 if (is_Listen == false) {
gillwei7 3:38ec8ad317f4 582 cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
gillwei7 3:38ec8ad317f4 583 return;
gillwei7 3:38ec8ad317f4 584 }
gillwei7 3:38ec8ad317f4 585
gillwei7 3:38ec8ad317f4 586 if ( tcpServer.accept(tcpConnect) == 0 ) {
gillwei7 3:38ec8ad317f4 587 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 588 is_Listen = false;
gillwei7 3:38ec8ad317f4 589 } else
gillwei7 3:38ec8ad317f4 590 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 591
gillwei7 3:38ec8ad317f4 592 } else {
gillwei7 3:38ec8ad317f4 593 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 594 }
gillwei7 0:5c195ab2f696 595 }
gillwei7 0:5c195ab2f696 596 static void cyn_wifi_tcp_server_blocking()
gillwei7 0:5c195ab2f696 597 {
gillwei7 0:5c195ab2f696 598 // TCPSocketServer tcpServer;
gillwei7 3:38ec8ad317f4 599
gillwei7 3:38ec8ad317f4 600 bool blocking = false;
gillwei7 3:38ec8ad317f4 601 unsigned int timeout;
gillwei7 3:38ec8ad317f4 602
gillwei7 3:38ec8ad317f4 603 uint8_t *arg;
gillwei7 0:5c195ab2f696 604
gillwei7 3:38ec8ad317f4 605 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 606
gillwei7 3:38ec8ad317f4 607 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 608 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 609 blocking = true;
gillwei7 3:38ec8ad317f4 610
gillwei7 3:38ec8ad317f4 611 tcpServer.set_blocking(blocking, 1500);
gillwei7 3:38ec8ad317f4 612 cyntecPrintOk();
gillwei7 0:5c195ab2f696 613
gillwei7 3:38ec8ad317f4 614 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 3:38ec8ad317f4 615
gillwei7 3:38ec8ad317f4 616 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 617 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 618 blocking = true;
gillwei7 3:38ec8ad317f4 619
gillwei7 3:38ec8ad317f4 620 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 3:38ec8ad317f4 621 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 3:38ec8ad317f4 622
gillwei7 3:38ec8ad317f4 623 tcpServer.set_blocking(blocking, timeout);
gillwei7 3:38ec8ad317f4 624 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 625
gillwei7 3:38ec8ad317f4 626 } else {
gillwei7 3:38ec8ad317f4 627 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 628 }
gillwei7 0:5c195ab2f696 629 }
gillwei7 0:5c195ab2f696 630 static void cyn_wifi_tcp_server_close()
gillwei7 0:5c195ab2f696 631 {
gillwei7 0:5c195ab2f696 632 // TCPSocketServer tcpServer;
gillwei7 3:38ec8ad317f4 633
gillwei7 3:38ec8ad317f4 634 bool shutdown = true;
gillwei7 3:38ec8ad317f4 635 uint8_t *arg;
gillwei7 3:38ec8ad317f4 636
gillwei7 3:38ec8ad317f4 637 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 638 if ( tcpServer.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 639 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 640 else
gillwei7 3:38ec8ad317f4 641 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 642
gillwei7 3:38ec8ad317f4 643 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 644 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 645 if (arg[0] == '0')
gillwei7 3:38ec8ad317f4 646 shutdown = false;
gillwei7 3:38ec8ad317f4 647
gillwei7 3:38ec8ad317f4 648 if ( tcpServer.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 649 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 650 else
gillwei7 3:38ec8ad317f4 651 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 652
gillwei7 3:38ec8ad317f4 653 } else {
gillwei7 3:38ec8ad317f4 654 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 655 }
gillwei7 0:5c195ab2f696 656 }
gillwei7 0:5c195ab2f696 657 /////////**** WIFI TCP Socket Connection ****//////////
gillwei7 0:5c195ab2f696 658 static void cyn_wifi_tcp_connection_connect()
gillwei7 0:5c195ab2f696 659 {
gillwei7 3:38ec8ad317f4 660 uint8_t connect_ip[STATIC_IP_MAX_LEN];
gillwei7 3:38ec8ad317f4 661 int port;
gillwei7 3:38ec8ad317f4 662
gillwei7 3:38ec8ad317f4 663 uint8_t argLen = 0;
gillwei7 3:38ec8ad317f4 664 uint8_t *argIP;
gillwei7 3:38ec8ad317f4 665
gillwei7 3:38ec8ad317f4 666 if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 3:38ec8ad317f4 667 /* handle IP arg */
gillwei7 3:38ec8ad317f4 668 argIP = cyntecGetCommandArgument(0, &argLen);
gillwei7 3:38ec8ad317f4 669 memset( connect_ip, 0, STATIC_IP_MAX_LEN);
gillwei7 3:38ec8ad317f4 670 memcpy( connect_ip, argIP, argLen);
gillwei7 3:38ec8ad317f4 671
gillwei7 3:38ec8ad317f4 672 /* handle Port arg */
gillwei7 3:38ec8ad317f4 673 port = atoi((const char *)cyntecGetCommandArgument(1, NULL));
gillwei7 3:38ec8ad317f4 674
gillwei7 3:38ec8ad317f4 675 if ( tcpConnect.connect((const char *)connect_ip, port) == 0 )
gillwei7 3:38ec8ad317f4 676 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 677 else
gillwei7 3:38ec8ad317f4 678 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 679
gillwei7 3:38ec8ad317f4 680 } else {
gillwei7 3:38ec8ad317f4 681 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 682 }
gillwei7 0:5c195ab2f696 683 }
gillwei7 0:5c195ab2f696 684 static void cyn_wifi_tcp_connection_is_connected()
gillwei7 0:5c195ab2f696 685 {
gillwei7 3:38ec8ad317f4 686 bool is_connected = false;
gillwei7 3:38ec8ad317f4 687 is_connected = tcpConnect.is_connected();
gillwei7 3:38ec8ad317f4 688
gillwei7 3:38ec8ad317f4 689 if (is_connected == true)
gillwei7 3:38ec8ad317f4 690 console.printf("\r\nOK;TRUE\r\n\r\n");
gillwei7 3:38ec8ad317f4 691 else
gillwei7 3:38ec8ad317f4 692 console.printf("\r\nOK;FALSE\r\n\r\n");
gillwei7 0:5c195ab2f696 693 }
gillwei7 12:a91455702763 694
gillwei7 0:5c195ab2f696 695 static void cyn_wifi_tcp_connection_send()
gillwei7 0:5c195ab2f696 696 {
gillwei7 0:5c195ab2f696 697 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 3:38ec8ad317f4 698 int sendData;
gillwei7 12:a91455702763 699 uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
gillwei7 13:7eaec228ad23 700 int sendLen = 0; // Maximum 1400
gillwei7 13:7eaec228ad23 701 uint8_t sendLenCharNum = 0; // Maximum 4
gillwei7 13:7eaec228ad23 702 uint8_t *argLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
gillwei7 13:7eaec228ad23 703 sendLen = cyntecAtoInt(argLeng,sendLenCharNum);
gillwei7 13:7eaec228ad23 704 if (sendLen > TCP_SEND_MAX_LEN || sendLen < 0) {
gillwei7 12:a91455702763 705 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 12:a91455702763 706 return;
gillwei7 12:a91455702763 707 }
gillwei7 12:a91455702763 708 if (cyntecGetCommandTokenCnt() <4 ) {
gillwei7 12:a91455702763 709 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 12:a91455702763 710 return;
gillwei7 12:a91455702763 711 }
gillwei7 12:a91455702763 712 if (cyntecGetCommandTokenCnt() >= 4) {
gillwei7 3:38ec8ad317f4 713 if ( tcpConnect.is_connected() == false ) {
gillwei7 3:38ec8ad317f4 714 cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
gillwei7 3:38ec8ad317f4 715 return;
gillwei7 3:38ec8ad317f4 716 }
gillwei7 3:38ec8ad317f4 717
gillwei7 3:38ec8ad317f4 718 /* handle Message arg */
gillwei7 12:a91455702763 719 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 720 console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[26+sendLenCharNum],cyntecGetTotalIndex());
gillwei7 12:a91455702763 721 #endif
gillwei7 3:38ec8ad317f4 722 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 12:a91455702763 723 for (uint8_t i=0; i<sendLen; i++)
gillwei7 12:a91455702763 724 msg[i] = argAllBuf[26+sendLenCharNum+i];
gillwei7 12:a91455702763 725 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 726 console.printf("msg:%s\r\n",msg);
gillwei7 12:a91455702763 727 #endif
gillwei7 12:a91455702763 728 sendData = tcpConnect.send(msg, sendLen);
gillwei7 5:ee474e3133eb 729 if ( sendData >= 0 ) {
gillwei7 3:38ec8ad317f4 730 console.printf("\r\nOK;");
gillwei7 3:38ec8ad317f4 731 console.printf("%i\r\n\r\n",sendData);
gillwei7 5:ee474e3133eb 732 } else
gillwei7 3:38ec8ad317f4 733 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 734 }
gillwei7 0:5c195ab2f696 735 }
gillwei7 12:a91455702763 736
gillwei7 0:5c195ab2f696 737 static void cyn_wifi_tcp_connection_send_all()
gillwei7 0:5c195ab2f696 738 {
gillwei7 0:5c195ab2f696 739 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 12:a91455702763 740 int sendData;
gillwei7 12:a91455702763 741 uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
gillwei7 13:7eaec228ad23 742 int sendLen = 0; // Maximum 1400
gillwei7 13:7eaec228ad23 743 uint8_t sendLenCharNum = 0; // Maximum 4
gillwei7 13:7eaec228ad23 744 uint8_t *argLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
gillwei7 13:7eaec228ad23 745 sendLen = cyntecAtoi(argLeng,sendLenCharNum);
gillwei7 12:a91455702763 746 if (sendLen > TCP_SEND_MAX_LEN) {
gillwei7 12:a91455702763 747 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 12:a91455702763 748 return;
gillwei7 12:a91455702763 749 }
gillwei7 12:a91455702763 750 if (cyntecGetCommandTokenCnt() <4 ) {
gillwei7 12:a91455702763 751 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 12:a91455702763 752 return;
gillwei7 12:a91455702763 753 }
gillwei7 12:a91455702763 754 if (cyntecGetCommandTokenCnt() >= 4) {
gillwei7 12:a91455702763 755 if ( tcpConnect.is_connected() == false ) {
gillwei7 12:a91455702763 756 cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
gillwei7 3:38ec8ad317f4 757 return;
gillwei7 3:38ec8ad317f4 758 }
gillwei7 3:38ec8ad317f4 759
gillwei7 12:a91455702763 760 /* handle Message arg */
gillwei7 12:a91455702763 761 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 762 console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[30+sendLenCharNum],cyntecGetTotalIndex());
gillwei7 12:a91455702763 763 #endif
gillwei7 3:38ec8ad317f4 764 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 12:a91455702763 765 for (uint8_t i=0; i<sendLen; i++)
gillwei7 12:a91455702763 766 msg[i] = argAllBuf[30+sendLenCharNum+i];
gillwei7 12:a91455702763 767 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 768 console.printf("msg:%s\r\n",msg);
gillwei7 12:a91455702763 769 #endif
gillwei7 12:a91455702763 770 sendData = tcpConnect.send_all(msg, sendLen);
gillwei7 12:a91455702763 771 if ( sendData >= 0 ) {
gillwei7 12:a91455702763 772 console.printf("\r\nOK;");
gillwei7 12:a91455702763 773 console.printf("%i\r\n\r\n",sendData);
gillwei7 12:a91455702763 774 } else
gillwei7 3:38ec8ad317f4 775 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 776 }
gillwei7 0:5c195ab2f696 777 }
gillwei7 12:a91455702763 778
gillwei7 0:5c195ab2f696 779 static void cyn_wifi_tcp_connection_receive()
gillwei7 0:5c195ab2f696 780 {
gillwei7 0:5c195ab2f696 781 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 3:38ec8ad317f4 782 int argLen = 0;
gillwei7 3:38ec8ad317f4 783
gillwei7 3:38ec8ad317f4 784 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 785 /* handle Message arg */
gillwei7 3:38ec8ad317f4 786 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 12:a91455702763 787 //console.printf("argLen:%d\r\n",argLen);
gillwei7 3:38ec8ad317f4 788 if (argLen > TCP_SEND_MAX_LEN || argLen < 0) {
gillwei7 3:38ec8ad317f4 789 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 790 return;
gillwei7 3:38ec8ad317f4 791 }
gillwei7 0:5c195ab2f696 792
gillwei7 3:38ec8ad317f4 793 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 3:38ec8ad317f4 794
gillwei7 3:38ec8ad317f4 795 if ( tcpConnect.receive(msg, argLen) >= 0 ) {
gillwei7 3:38ec8ad317f4 796 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 3:38ec8ad317f4 797 } else
gillwei7 3:38ec8ad317f4 798 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 799
gillwei7 3:38ec8ad317f4 800 } else {
gillwei7 3:38ec8ad317f4 801 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 802 }
gillwei7 0:5c195ab2f696 803 }
gillwei7 0:5c195ab2f696 804 static void cyn_wifi_tcp_connection_receive_all()
gillwei7 0:5c195ab2f696 805 {
gillwei7 0:5c195ab2f696 806 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 3:38ec8ad317f4 807 int argLen = 0;
gillwei7 3:38ec8ad317f4 808
gillwei7 3:38ec8ad317f4 809 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 810 /* handle Message arg */
gillwei7 3:38ec8ad317f4 811 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 3:38ec8ad317f4 812
gillwei7 3:38ec8ad317f4 813 if (argLen > TCP_SEND_MAX_LEN || argLen < 0) {
gillwei7 3:38ec8ad317f4 814 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 815 return;
gillwei7 3:38ec8ad317f4 816 }
gillwei7 0:5c195ab2f696 817
gillwei7 3:38ec8ad317f4 818 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 3:38ec8ad317f4 819
gillwei7 3:38ec8ad317f4 820 if ( tcpConnect.receive_all(msg, argLen) >= 0 ) {
gillwei7 3:38ec8ad317f4 821 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 3:38ec8ad317f4 822 } else
gillwei7 3:38ec8ad317f4 823 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 824
gillwei7 3:38ec8ad317f4 825 } else {
gillwei7 3:38ec8ad317f4 826 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 827 }
gillwei7 0:5c195ab2f696 828 }
gillwei7 12:a91455702763 829
gillwei7 0:5c195ab2f696 830 static void cyn_wifi_tcp_connection_blocking()
gillwei7 0:5c195ab2f696 831 {
gillwei7 3:38ec8ad317f4 832 bool blocking = false;
gillwei7 3:38ec8ad317f4 833 unsigned int timeout;
gillwei7 3:38ec8ad317f4 834
gillwei7 3:38ec8ad317f4 835 uint8_t *arg;
gillwei7 3:38ec8ad317f4 836
gillwei7 3:38ec8ad317f4 837 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 838
gillwei7 3:38ec8ad317f4 839 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 840 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 841 blocking = true;
gillwei7 3:38ec8ad317f4 842
gillwei7 3:38ec8ad317f4 843 tcpConnect.set_blocking(blocking, 1500);
gillwei7 3:38ec8ad317f4 844 cyntecPrintOk();
gillwei7 0:5c195ab2f696 845
gillwei7 3:38ec8ad317f4 846 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 3:38ec8ad317f4 847 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 848 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 849 blocking = true;
gillwei7 3:38ec8ad317f4 850
gillwei7 3:38ec8ad317f4 851 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 3:38ec8ad317f4 852 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 3:38ec8ad317f4 853
gillwei7 3:38ec8ad317f4 854 tcpConnect.set_blocking(blocking, timeout);
gillwei7 3:38ec8ad317f4 855 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 856
gillwei7 3:38ec8ad317f4 857 } else {
gillwei7 3:38ec8ad317f4 858 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 859 }
gillwei7 0:5c195ab2f696 860 }
gillwei7 12:a91455702763 861
gillwei7 0:5c195ab2f696 862 static void cyn_wifi_tcp_connection_close()
gillwei7 0:5c195ab2f696 863 {
gillwei7 3:38ec8ad317f4 864 bool shutdown = true;
gillwei7 3:38ec8ad317f4 865 uint8_t *arg;
gillwei7 3:38ec8ad317f4 866
gillwei7 3:38ec8ad317f4 867 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 868 if ( tcpConnect.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 869 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 870 else
gillwei7 3:38ec8ad317f4 871 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 872
gillwei7 3:38ec8ad317f4 873 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 874 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 875 if (arg[0] == '0')
gillwei7 3:38ec8ad317f4 876 shutdown = false;
gillwei7 3:38ec8ad317f4 877
gillwei7 3:38ec8ad317f4 878 if ( tcpConnect.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 879 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 880 else
gillwei7 3:38ec8ad317f4 881 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 882
gillwei7 3:38ec8ad317f4 883 } else {
gillwei7 3:38ec8ad317f4 884 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 885 }
gillwei7 0:5c195ab2f696 886 }
gillwei7 0:5c195ab2f696 887 //static void cyn_wifi_tcp_connection_reset_address(){}
gillwei7 0:5c195ab2f696 888 //static void cyn_wifi_tcp_connection_set_address(){}
gillwei7 0:5c195ab2f696 889 //static void cyn_wifi_tcp_connection_address(){}
gillwei7 3:38ec8ad317f4 890 //static void cyn_wifi_tcp_connection_port(){}
gillwei7 3:38ec8ad317f4 891
gillwei7 0:5c195ab2f696 892
gillwei7 3:38ec8ad317f4 893
gillwei7 3:38ec8ad317f4 894 /////////**** WIFI UDP Socket Implement ****//////////
gillwei7 0:5c195ab2f696 895 static void cyn_wifi_udp_init()
gillwei7 3:38ec8ad317f4 896 {
gillwei7 3:38ec8ad317f4 897 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 898 if ( udpSocket.init() == 0 )
gillwei7 3:38ec8ad317f4 899 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 900 else
gillwei7 3:38ec8ad317f4 901 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 902
gillwei7 3:38ec8ad317f4 903 } else {
gillwei7 3:38ec8ad317f4 904 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 905 }
gillwei7 3:38ec8ad317f4 906 }
gillwei7 0:5c195ab2f696 907 static void cyn_wifi_udp_bind()
gillwei7 0:5c195ab2f696 908 {
gillwei7 3:38ec8ad317f4 909 int port = 1;
gillwei7 3:38ec8ad317f4 910 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 911 udpSocket.bind(port);
gillwei7 3:38ec8ad317f4 912 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 913 // if ( udpSocket.bind(port) == 0 )
gillwei7 3:38ec8ad317f4 914 // cyntecPrintOk();
gillwei7 3:38ec8ad317f4 915 // else
gillwei7 3:38ec8ad317f4 916 // cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 917
gillwei7 3:38ec8ad317f4 918 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 919 port = atoi((const char*)(cyntecGetCommandArgument(0, NULL)));
gillwei7 3:38ec8ad317f4 920
gillwei7 3:38ec8ad317f4 921 if (port < 0) {
gillwei7 3:38ec8ad317f4 922 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 923 return;
gillwei7 3:38ec8ad317f4 924 }
gillwei7 3:38ec8ad317f4 925
gillwei7 3:38ec8ad317f4 926 udpSocket.bind(port);
gillwei7 3:38ec8ad317f4 927 cyntecPrintOk();
gillwei7 0:5c195ab2f696 928 // if ( udpSocket.bind(port) == 0 )
gillwei7 0:5c195ab2f696 929 // cyntecPrintOk();
gillwei7 0:5c195ab2f696 930 // else
gillwei7 0:5c195ab2f696 931 // cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 932
gillwei7 3:38ec8ad317f4 933 } else {
gillwei7 3:38ec8ad317f4 934 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 935 }
gillwei7 3:38ec8ad317f4 936 }
gillwei7 0:5c195ab2f696 937 static void cyn_wifi_udp_set_broadcasting()
gillwei7 0:5c195ab2f696 938 {
gillwei7 3:38ec8ad317f4 939 bool broadcast = true;
gillwei7 3:38ec8ad317f4 940 uint8_t *arg;
gillwei7 3:38ec8ad317f4 941
gillwei7 3:38ec8ad317f4 942 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 943 if ( udpSocket.set_broadcasting(broadcast) == 0 )
gillwei7 3:38ec8ad317f4 944 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 945 else
gillwei7 3:38ec8ad317f4 946 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 947
gillwei7 3:38ec8ad317f4 948 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 949 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 950 if (arg[0] == '0')
gillwei7 3:38ec8ad317f4 951 broadcast = false;
gillwei7 3:38ec8ad317f4 952
gillwei7 3:38ec8ad317f4 953 if ( udpSocket.set_broadcasting(broadcast) == 0 )
gillwei7 3:38ec8ad317f4 954 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 955 else
gillwei7 3:38ec8ad317f4 956 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 957
gillwei7 3:38ec8ad317f4 958 } else {
gillwei7 3:38ec8ad317f4 959 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 960 }
gillwei7 3:38ec8ad317f4 961 }
gillwei7 12:a91455702763 962 //static void cyn_wifi_udp_send_to()
gillwei7 12:a91455702763 963 //{
gillwei7 12:a91455702763 964 // char msg[UDP_SEND_MAX_LEN+1];
gillwei7 12:a91455702763 965 //
gillwei7 12:a91455702763 966 // uint8_t *arg;
gillwei7 12:a91455702763 967 // int argLen = 0;
gillwei7 12:a91455702763 968 //
gillwei7 12:a91455702763 969 // if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 12:a91455702763 970 // /* handle Message arg */
gillwei7 12:a91455702763 971 // arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
gillwei7 12:a91455702763 972 //
gillwei7 12:a91455702763 973 // if (argLen > UDP_SEND_MAX_LEN || argLen < 0) {
gillwei7 12:a91455702763 974 // cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 12:a91455702763 975 // return;
gillwei7 12:a91455702763 976 // }
gillwei7 12:a91455702763 977 //
gillwei7 12:a91455702763 978 // memset( msg, 0, UDP_SEND_MAX_LEN+1);
gillwei7 12:a91455702763 979 // memcpy( msg, arg, argLen);
gillwei7 12:a91455702763 980 //
gillwei7 12:a91455702763 981 // if ( udpSocket.sendTo(cliEndpoint, msg, argLen) >= 0 )
gillwei7 12:a91455702763 982 // cyntecPrintOk();
gillwei7 12:a91455702763 983 // else
gillwei7 12:a91455702763 984 // cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 12:a91455702763 985 //
gillwei7 12:a91455702763 986 // } else {
gillwei7 12:a91455702763 987 // cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 12:a91455702763 988 // }
gillwei7 12:a91455702763 989 //}
gillwei7 0:5c195ab2f696 990 static void cyn_wifi_udp_send_to()
gillwei7 0:5c195ab2f696 991 {
gillwei7 0:5c195ab2f696 992 char msg[UDP_SEND_MAX_LEN+1];
gillwei7 12:a91455702763 993 int sendData;
gillwei7 12:a91455702763 994 uint8_t * argAllBuf = cyntecGetCommandTotalBuffer();
gillwei7 13:7eaec228ad23 995 int sendLen = 0; // Maximum 1400, need to be integer
gillwei7 13:7eaec228ad23 996 uint8_t sendLenCharNum = 0; // Maximum 4
gillwei7 13:7eaec228ad23 997 uint8_t *argLeng = cyntecGetCommandArgument(0,&sendLenCharNum);
gillwei7 13:7eaec228ad23 998 sendLen = cyntecAtoInt(argLeng,sendLenCharNum);
gillwei7 13:7eaec228ad23 999 if (sendLen > UDP_SEND_MAX_LEN || sendLen < 0) {
gillwei7 12:a91455702763 1000 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 12:a91455702763 1001 return;
gillwei7 12:a91455702763 1002 }
gillwei7 12:a91455702763 1003 if (cyntecGetCommandTokenCnt() <4 ) {
gillwei7 12:a91455702763 1004 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 12:a91455702763 1005 return;
gillwei7 12:a91455702763 1006 }
gillwei7 12:a91455702763 1007 if (cyntecGetCommandTokenCnt() >= 4) {
gillwei7 3:38ec8ad317f4 1008
gillwei7 12:a91455702763 1009 /* handle Message arg */
gillwei7 12:a91455702763 1010 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 1011 console.printf("sendLen:%i,Buf:%s,Index:%i\r\n",sendLen,&argAllBuf[18+sendLenCharNum],cyntecGetTotalIndex());
gillwei7 12:a91455702763 1012 #endif
gillwei7 3:38ec8ad317f4 1013 memset( msg, 0, UDP_SEND_MAX_LEN+1);
gillwei7 13:7eaec228ad23 1014 for (int i=0; i<sendLen; i++)
gillwei7 12:a91455702763 1015 msg[i] = argAllBuf[18+sendLenCharNum+i];
gillwei7 12:a91455702763 1016 #ifdef DELTA_WIFI_DEBUG
gillwei7 12:a91455702763 1017 console.printf("msg:%s\r\n",msg);
gillwei7 12:a91455702763 1018 #endif
gillwei7 12:a91455702763 1019 sendData = udpSocket.sendTo(cliEndpoint, msg, sendLen);
gillwei7 12:a91455702763 1020 if ( sendData >= 0 ) {
gillwei7 12:a91455702763 1021 console.printf("\r\nOK;");
gillwei7 12:a91455702763 1022 console.printf("%i\r\n\r\n",sendData);
gillwei7 12:a91455702763 1023 } else
gillwei7 3:38ec8ad317f4 1024 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 1025 }
gillwei7 3:38ec8ad317f4 1026 }
gillwei7 12:a91455702763 1027
gillwei7 0:5c195ab2f696 1028 static void cyn_wifi_udp_received_from()
gillwei7 0:5c195ab2f696 1029 {
gillwei7 0:5c195ab2f696 1030 char msg[UDP_SEND_MAX_LEN+1];
gillwei7 3:38ec8ad317f4 1031 int argLen = 0;
gillwei7 3:38ec8ad317f4 1032
gillwei7 3:38ec8ad317f4 1033 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 1034 /* handle Message arg */
gillwei7 3:38ec8ad317f4 1035 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 3:38ec8ad317f4 1036
gillwei7 3:38ec8ad317f4 1037 if (argLen > UDP_SEND_MAX_LEN || argLen < 0) {
gillwei7 3:38ec8ad317f4 1038 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 1039 return;
gillwei7 3:38ec8ad317f4 1040 }
gillwei7 0:5c195ab2f696 1041
gillwei7 3:38ec8ad317f4 1042 memset( msg, 0, UDP_SEND_MAX_LEN+1);
gillwei7 3:38ec8ad317f4 1043
gillwei7 3:38ec8ad317f4 1044 if ( udpSocket.receiveFrom(cliEndpoint, msg, argLen) >= 0 ) {
gillwei7 3:38ec8ad317f4 1045 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 3:38ec8ad317f4 1046 } else
gillwei7 3:38ec8ad317f4 1047 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 1048
gillwei7 3:38ec8ad317f4 1049 } else {
gillwei7 3:38ec8ad317f4 1050 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 1051 }
gillwei7 0:5c195ab2f696 1052 }
gillwei7 0:5c195ab2f696 1053 static void cyn_wifi_udp_blocking()
gillwei7 0:5c195ab2f696 1054 {
gillwei7 3:38ec8ad317f4 1055 bool blocking = false;
gillwei7 3:38ec8ad317f4 1056 unsigned int timeout;
gillwei7 3:38ec8ad317f4 1057
gillwei7 3:38ec8ad317f4 1058 uint8_t *arg;
gillwei7 3:38ec8ad317f4 1059 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 1060
gillwei7 3:38ec8ad317f4 1061 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 1062 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 1063 blocking = true;
gillwei7 3:38ec8ad317f4 1064
gillwei7 3:38ec8ad317f4 1065 udpSocket.set_blocking(blocking, 1500);
gillwei7 3:38ec8ad317f4 1066 cyntecPrintOk();
gillwei7 0:5c195ab2f696 1067
gillwei7 3:38ec8ad317f4 1068 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 3:38ec8ad317f4 1069 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 1070 if (arg[0] == '1')
gillwei7 3:38ec8ad317f4 1071 blocking = true;
gillwei7 3:38ec8ad317f4 1072
gillwei7 3:38ec8ad317f4 1073 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 3:38ec8ad317f4 1074 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 3:38ec8ad317f4 1075
gillwei7 3:38ec8ad317f4 1076 udpSocket.set_blocking(blocking, timeout);
gillwei7 3:38ec8ad317f4 1077 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 1078
gillwei7 3:38ec8ad317f4 1079 } else {
gillwei7 3:38ec8ad317f4 1080 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 1081 }
gillwei7 3:38ec8ad317f4 1082 }
gillwei7 0:5c195ab2f696 1083 static void cyn_wifi_udp_close()
gillwei7 0:5c195ab2f696 1084 {
gillwei7 3:38ec8ad317f4 1085 bool shutdown = true;
gillwei7 3:38ec8ad317f4 1086 uint8_t *arg;
gillwei7 3:38ec8ad317f4 1087
gillwei7 3:38ec8ad317f4 1088 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 1089 if ( udpSocket.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 1090 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 1091 else
gillwei7 3:38ec8ad317f4 1092 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 1093
gillwei7 3:38ec8ad317f4 1094 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 3:38ec8ad317f4 1095 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 3:38ec8ad317f4 1096 if (arg[0] == '0')
gillwei7 3:38ec8ad317f4 1097 shutdown = false;
gillwei7 3:38ec8ad317f4 1098
gillwei7 3:38ec8ad317f4 1099 if ( udpSocket.close(shutdown) == 0 )
gillwei7 3:38ec8ad317f4 1100 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 1101 else
gillwei7 3:38ec8ad317f4 1102 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 1103
gillwei7 3:38ec8ad317f4 1104 } else {
gillwei7 3:38ec8ad317f4 1105 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 1106 }
gillwei7 3:38ec8ad317f4 1107 }
gillwei7 3:38ec8ad317f4 1108
gillwei7 3:38ec8ad317f4 1109
gillwei7 3:38ec8ad317f4 1110
gillwei7 3:38ec8ad317f4 1111 /////////**** WIFI UDP Endpoint Implement ****//////////
gillwei7 0:5c195ab2f696 1112 static void cyn_wifi_udp_endpoint_reset_address()
gillwei7 0:5c195ab2f696 1113 {
gillwei7 3:38ec8ad317f4 1114 if (cyntecGetCommandTokenCnt() == 2) {
gillwei7 3:38ec8ad317f4 1115 cliEndpoint.reset_address();
gillwei7 3:38ec8ad317f4 1116 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 1117 } else {
gillwei7 3:38ec8ad317f4 1118 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 3:38ec8ad317f4 1119 }
gillwei7 3:38ec8ad317f4 1120 }
gillwei7 0:5c195ab2f696 1121 static void cyn_wifi_udp_endpoint_address()
gillwei7 0:5c195ab2f696 1122 {
gillwei7 3:38ec8ad317f4 1123 uint8_t argHost[STATIC_IP_MAX_LEN];
gillwei7 3:38ec8ad317f4 1124 int port;
gillwei7 3:38ec8ad317f4 1125
gillwei7 3:38ec8ad317f4 1126 uint8_t *arg;
gillwei7 3:38ec8ad317f4 1127 uint8_t argLen;
gillwei7 3:38ec8ad317f4 1128
gillwei7 3:38ec8ad317f4 1129 if ( cyntecGetCommandTokenCnt() == 4 ) {
gillwei7 3:38ec8ad317f4 1130 /* handle Host addr */
gillwei7 3:38ec8ad317f4 1131 arg = cyntecGetCommandArgument(0, &argLen);
gillwei7 3:38ec8ad317f4 1132
gillwei7 3:38ec8ad317f4 1133 if ( cyntecIsValidIP(arg,argLen) != 0) {
gillwei7 3:38ec8ad317f4 1134 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 1135 return;
gillwei7 3:38ec8ad317f4 1136 }
gillwei7 3:38ec8ad317f4 1137
gillwei7 3:38ec8ad317f4 1138 memset( argHost, 0, STATIC_IP_MAX_LEN);
gillwei7 3:38ec8ad317f4 1139 memcpy( argHost, arg, argLen);
gillwei7 3:38ec8ad317f4 1140
gillwei7 3:38ec8ad317f4 1141 /* Handle Port */
gillwei7 3:38ec8ad317f4 1142 port = atoi((const char *)(cyntecGetCommandArgument(1, NULL)));
gillwei7 3:38ec8ad317f4 1143 if (port < 0) {
gillwei7 3:38ec8ad317f4 1144 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 3:38ec8ad317f4 1145 return;
gillwei7 3:38ec8ad317f4 1146 }
gillwei7 3:38ec8ad317f4 1147
gillwei7 3:38ec8ad317f4 1148 if ( cliEndpoint.set_address((const char *)argHost, (const int)port) == 0)
gillwei7 3:38ec8ad317f4 1149 cyntecPrintOk();
gillwei7 3:38ec8ad317f4 1150 else
gillwei7 3:38ec8ad317f4 1151 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 3:38ec8ad317f4 1152
gillwei7 3:38ec8ad317f4 1153 } else {
gillwei7 3:38ec8ad317f4 1154 console.printf("\r\nOK;%s\r\n\r\n",cliEndpoint.get_address());
gillwei7 3:38ec8ad317f4 1155 }
gillwei7 3:38ec8ad317f4 1156 }
gillwei7 3:38ec8ad317f4 1157 //static void cyn_wifi_udp_endpoint_get_address(){}
gillwei7 12:a91455702763 1158 static void cyn_wifi_udp_endpoint_port() // 2015/1/20: Lester add
gillwei7 0:5c195ab2f696 1159 {
gillwei7 3:38ec8ad317f4 1160 console.printf("\r\nOK;%d\r\n\r\n",cliEndpoint.get_port());
gillwei7 3:38ec8ad317f4 1161 }
gillwei7 0:5c195ab2f696 1162
gillwei7 10:5f1fa331d07c 1163 static void cyn_wifi_enint()
gillwei7 10:5f1fa331d07c 1164 {
gillwei7 10:5f1fa331d07c 1165 wifiDataInt = true;
gillwei7 10:5f1fa331d07c 1166 cyntecPrintOk();
gillwei7 10:5f1fa331d07c 1167 }
gillwei7 10:5f1fa331d07c 1168
gillwei7 10:5f1fa331d07c 1169 static void cyn_wifi_disint()
gillwei7 10:5f1fa331d07c 1170 {
gillwei7 10:5f1fa331d07c 1171 wifiDataInt = false;
gillwei7 10:5f1fa331d07c 1172 cyntecPrintOk();
gillwei7 10:5f1fa331d07c 1173 }
gillwei7 10:5f1fa331d07c 1174
gillwei7 10:5f1fa331d07c 1175
gillwei7 9:ff3ccba5dc16 1176 int wifi_receive_UDP_callback(uint8_t *data, int size, char* ipaddr, int port)
gillwei7 9:ff3ccba5dc16 1177 {
gillwei7 10:5f1fa331d07c 1178 // Do nothing until flag on
gillwei7 10:5f1fa331d07c 1179 if(wifiDataInt) {
gillwei7 12:a91455702763 1180 wifiWriteInt = !wifiWriteInt;
gillwei7 12:a91455702763 1181 wifiWriteInt = !wifiWriteInt;
gillwei7 9:ff3ccba5dc16 1182 #ifdef DELTA_WIFI_DEBUG
gillwei7 10:5f1fa331d07c 1183 console.printf("wifi_receive_UDP_callback:");
gillwei7 9:ff3ccba5dc16 1184 #endif
gillwei7 10:5f1fa331d07c 1185 console.printf("rUDP;%s,%i,%s,%d;\r\n",data, size, ipaddr, port);
gillwei7 10:5f1fa331d07c 1186 }
gillwei7 9:ff3ccba5dc16 1187 }
gillwei7 10:5f1fa331d07c 1188 // Gill note: port number may different from original
gillwei7 9:ff3ccba5dc16 1189
gillwei7 9:ff3ccba5dc16 1190 int wifi_receive_TCP_callback(uint8_t *data, int size, char* ipaddr, int port)
gillwei7 9:ff3ccba5dc16 1191 {
gillwei7 10:5f1fa331d07c 1192 // Do nothing until flag on
gillwei7 10:5f1fa331d07c 1193 if(wifiDataInt) {
gillwei7 12:a91455702763 1194 wifiWriteInt = !wifiWriteInt;
gillwei7 12:a91455702763 1195 wifiWriteInt = !wifiWriteInt;
gillwei7 9:ff3ccba5dc16 1196 #ifdef DELTA_WIFI_DEBUG
gillwei7 10:5f1fa331d07c 1197 console.printf("wifi_receive_TCP_callback\r\n");
gillwei7 9:ff3ccba5dc16 1198 #endif
gillwei7 10:5f1fa331d07c 1199 console.printf("rTCP;%s,%i,%s,%d;\r\n",data, size, ipaddr, port);
gillwei7 12:a91455702763 1200 }
gillwei7 9:ff3ccba5dc16 1201 }
gillwei7 10:5f1fa331d07c 1202 // Gill note: port number may different from original
gillwei7 0:5c195ab2f696 1203
gillwei7 0:5c195ab2f696 1204 CyntecCommandEntry wifiCommandSets[] = {
gillwei7 5:ee474e3133eb 1205 #if SIMPLE_CMD_NAME
gillwei7 5:ee474e3133eb 1206 /////////**** WIFI Device ****//////////
gillwei7 5:ee474e3133eb 1207 {"DSLP", cyn_wifi_device_sleep, NULL, "Set WIFI module to sleep mode"},
gillwei7 5:ee474e3133eb 1208 {"DCOE", cyn_wifi_device_coex, NULL, "Set/Get device switch for WIFI module"},
gillwei7 5:ee474e3133eb 1209 {"DNWK", cyn_wifi_device_network, NULL, " <SSID> <PASSWORD> <PRIORITY> Set SSID and PASSWORD for WIFI module"},
gillwei7 5:ee474e3133eb 1210 //gill
gillwei7 5:ee474e3133eb 1211 {"DRSV",cyn_wifi_read_sp_version, NULL, "Set network connection in priority"},
gillwei7 5:ee474e3133eb 1212 {"DASN", cyn_wifi_device_ap_scan, NULL, "Scan for available access point on all channels"},
gillwei7 5:ee474e3133eb 1213 {"DSAP",cyn_wifi_set_ap, NULL, " <SSID> <PASSWORD> <SECURITY> <CHANNEL>Set Access Point in given configuration"},
gillwei7 5:ee474e3133eb 1214 {"DME4",cyn_wifi_mem_erase4k, NULL, " <MEMADDR> Erase a 4KB sector of embedded flash"},
gillwei7 5:ee474e3133eb 1215 {"DMRD",cyn_wifi_mem_read, NULL, " <MEMADDR> <LEN> Read data from embeeded flash"},
gillwei7 5:ee474e3133eb 1216 {"DMWT",cyn_wifi_mem_write, NULL, " <MEMADDR> <DATA> Write data into embeeded flash"},
gillwei7 10:5f1fa331d07c 1217 {"DEDI",cyn_wifi_enint, NULL, " Enable Wifi data interrupt, print data whenever received."},
gillwei7 10:5f1fa331d07c 1218 {"DDDI",cyn_wifi_disint, NULL, " Disable Wifi interrupt."},
gillwei7 12:a91455702763 1219
gillwei7 5:ee474e3133eb 1220 /////////**** WIFI Ethernet ****//////////
gillwei7 5:ee474e3133eb 1221 {"EINT", cyn_wifi_ethernet_init, NULL, " <STATIC IP> Initialize the interface to use DHCP"},
gillwei7 5:ee474e3133eb 1222 {"ECON", cyn_wifi_ethernet_connect, NULL, "<TIMEOUT MS> Bring up the WiFi connection"},
gillwei7 5:ee474e3133eb 1223 {"EDCN", cyn_wifi_ethernet_disconnect, NULL, "Bring the interface down"},
gillwei7 5:ee474e3133eb 1224 {"EMAC", cyn_wifi_ethernet_mac, NULL, "Get MAC addr of Ehternet Interface"},
gillwei7 5:ee474e3133eb 1225 {"EGIP", cyn_wifi_ethernet_ip, NULL, "Get IP addr of Ehternet Interface"},
gillwei7 5:ee474e3133eb 1226
gillwei7 5:ee474e3133eb 1227 /////////**** WIFI TCP Socket Server ****//////////
gillwei7 5:ee474e3133eb 1228 {"TSBD", cyn_wifi_tcp_server_bind, NULL, " <PORT> Bind a socket to a port"},
gillwei7 5:ee474e3133eb 1229 {"TSLN", cyn_wifi_tcp_server_listen, NULL, "Start listening for incomming connections"},
gillwei7 5:ee474e3133eb 1230 {"TSAC", cyn_wifi_tcp_server_accept, NULL, "Accept a new connection"},
gillwei7 5:ee474e3133eb 1231 {"TSBL", cyn_wifi_tcp_server_blocking, NULL, " <SETTING> <TIMEOUT MS> Set blocking mode and timeout"},
gillwei7 5:ee474e3133eb 1232 {"TSCL", cyn_wifi_tcp_server_close, NULL, " <SHUTDOWN> Close the socket"},
gillwei7 5:ee474e3133eb 1233
gillwei7 5:ee474e3133eb 1234 /////////**** WIFI TCP Socket Connection ****//////////
gillwei7 5:ee474e3133eb 1235 {"TCCN", cyn_wifi_tcp_connection_connect, NULL, " <IPADDR> <PORT> Connects TCP socket to the server"},
gillwei7 5:ee474e3133eb 1236 {"TCIC", cyn_wifi_tcp_connection_is_connected, NULL, "Check if the socket is connected"},
gillwei7 5:ee474e3133eb 1237 {"TCSE", cyn_wifi_tcp_connection_send, NULL, " <DATA> Send data to the remote host"},
gillwei7 5:ee474e3133eb 1238 {"TCSA", cyn_wifi_tcp_connection_send_all, NULL, " <DATA> Send all the data to the remote host"},
gillwei7 5:ee474e3133eb 1239 {"TCRC", cyn_wifi_tcp_connection_receive, NULL, " <DATALEN> Receive data from the remote host"},
gillwei7 5:ee474e3133eb 1240 {"TCRA", cyn_wifi_tcp_connection_receive_all, NULL, "<DATALEN> Receive all the data from the remote host"},
gillwei7 5:ee474e3133eb 1241 {"TCBL ", cyn_wifi_tcp_connection_blocking, NULL, "<SETTING> <TIMEOUT MS> Set blocking mode and timeout"},
gillwei7 5:ee474e3133eb 1242 {"TCCL", cyn_wifi_tcp_connection_close, NULL, "<SHUTDOWN> Close the connection"},
gillwei7 5:ee474e3133eb 1243
gillwei7 5:ee474e3133eb 1244 /////////**** WIFI UDP Socket ****//////////
gillwei7 5:ee474e3133eb 1245 {"UCIN", cyn_wifi_udp_init, NULL, "Init UDP Client Socket"},
gillwei7 5:ee474e3133eb 1246 {"UCBI", cyn_wifi_udp_bind, NULL, " <PORT> Bind UDP Server Socket to a port"},
gillwei7 5:ee474e3133eb 1247 {"UCSB", cyn_wifi_udp_set_broadcasting, NULL, " <IS_BROADCAST> Set socket in broadcasting"},
gillwei7 5:ee474e3133eb 1248 {"UCSE", cyn_wifi_udp_send_to, NULL, " <DATA> Send a packet to a remote endpoint"},
gillwei7 5:ee474e3133eb 1249 {"UCRC", cyn_wifi_udp_received_from, NULL, " <DATALEN> Receive a packet from a remote endpont"},
gillwei7 5:ee474e3133eb 1250 {"UCBL", cyn_wifi_udp_blocking, NULL, " <DATALEN> Set blocking mode and timeout"},
gillwei7 5:ee474e3133eb 1251 {"UCCL", cyn_wifi_udp_close, NULL, " <SHUTDOWN> Close the socket"},
gillwei7 5:ee474e3133eb 1252
gillwei7 5:ee474e3133eb 1253 /////////**** WIFI UDP Endpoint ****//////////
gillwei7 5:ee474e3133eb 1254 {"UERS", cyn_wifi_udp_endpoint_reset_address, NULL, "Reset the address of this endpoint"},
gillwei7 5:ee474e3133eb 1255 {"UEAD", cyn_wifi_udp_endpoint_address, NULL, " <IPADDR> <PORT> Set/Get the address of this endpoint"},
gillwei7 5:ee474e3133eb 1256 {"UEPT", cyn_wifi_udp_endpoint_port, NULL, "Get the port of this endpoint"},
gillwei7 12:a91455702763 1257
gillwei7 5:ee474e3133eb 1258 {NULL, NULL, NULL, NULL},
gillwei7 5:ee474e3133eb 1259 #else
gillwei7 3:38ec8ad317f4 1260 /////////**** WIFI Device ****//////////
gillwei7 3:38ec8ad317f4 1261 {"device_sleep", cyn_wifi_device_sleep, NULL, "Set WIFI module to sleep mode"},
gillwei7 3:38ec8ad317f4 1262 {"device_coex", cyn_wifi_device_coex, NULL, "Set/Get device switch for WIFI module"},
gillwei7 3:38ec8ad317f4 1263 {"device_network", cyn_wifi_device_network, NULL, " <SSID> <PASSWORD> <PRIORITY> Set SSID and PASSWORD for WIFI module"},
gillwei7 3:38ec8ad317f4 1264 //gill
gillwei7 5:ee474e3133eb 1265 {"device_read_version",cyn_wifi_read_sp_version, NULL, "Read WIFI Service Pack version"},
gillwei7 5:ee474e3133eb 1266 {"device_apscan", cyn_wifi_device_ap_scan, NULL, "Scan for available access point on all channels."},
gillwei7 4:b52035367aee 1267 {"device_setap",cyn_wifi_set_ap, NULL, " <SSID> <PASSWORD> <SECURITY> <CHANNEL>Set Access Point in given configuration"},
gillwei7 5:ee474e3133eb 1268 {"device_mem_erase4k",cyn_wifi_mem_erase4k, NULL, " <MEMADDR> Erase a 4KB sector of embedded flash"},
gillwei7 5:ee474e3133eb 1269 {"device_mem_read",cyn_wifi_mem_read, NULL, " <MEMADDR> <LEN> Read data from embeeded flash"},
gillwei7 5:ee474e3133eb 1270 {"device_mem_write",cyn_wifi_mem_write, NULL, " <MEMADDR> <DATA> Write data into embeeded flash"},
gillwei7 10:5f1fa331d07c 1271 {"device_enint",cyn_wifi_enint, NULL, " Enable Wifi data interrupt, print data whenever received."},
gillwei7 10:5f1fa331d07c 1272 {"device_disint",cyn_wifi_disint, NULL, " Disable Wifi interrupt."},
gillwei7 12:a91455702763 1273
gillwei7 5:ee474e3133eb 1274
gillwei7 3:38ec8ad317f4 1275 /////////**** WIFI Ethernet ****//////////
gillwei7 3:38ec8ad317f4 1276 {"ethernet_init", cyn_wifi_ethernet_init, NULL, " <STATIC IP> Initialize the interface to use DHCP"},
gillwei7 3:38ec8ad317f4 1277 {"ethernet_connect", cyn_wifi_ethernet_connect, NULL, "<TIMEOUT MS> Bring up the WiFi connection"},
gillwei7 3:38ec8ad317f4 1278 {"ethernet_disconnect", cyn_wifi_ethernet_disconnect, NULL, "Bring the interface down"},
gillwei7 5:ee474e3133eb 1279 {"ethernet_mac", cyn_wifi_ethernet_mac, NULL, "Get MAC addr of Ethernet Interface"},
gillwei7 3:38ec8ad317f4 1280 {"ethernet_ip", cyn_wifi_ethernet_ip, NULL, "Get IP addr of Ehternet Interface"},
gillwei7 3:38ec8ad317f4 1281 /* not implement yet... */
gillwei7 3:38ec8ad317f4 1282 ////{"ethernet_gateway", cyn_wifi_ethernet_gateway, NULL, "........."},
gillwei7 3:38ec8ad317f4 1283 ////{"ethernet_mask", cyn_wifi_ethernet_mask, NULL, "........."},
gillwei7 3:38ec8ad317f4 1284 /* not implement yet... */
gillwei7 3:38ec8ad317f4 1285
gillwei7 3:38ec8ad317f4 1286 /////////**** WIFI TCP Socket Server ****//////////
gillwei7 3:38ec8ad317f4 1287 {"tcp_server_bind", cyn_wifi_tcp_server_bind, NULL, " <PORT> Bind a socket to a port"},
gillwei7 3:38ec8ad317f4 1288 {"tcp_server_listen", cyn_wifi_tcp_server_listen, NULL, "Start listening for incomming connections"},
gillwei7 3:38ec8ad317f4 1289 {"tcp_server_accept", cyn_wifi_tcp_server_accept, NULL, "Accept a new connection"},
gillwei7 3:38ec8ad317f4 1290 {"tcp_server_blocking", cyn_wifi_tcp_server_blocking, NULL, " <SETTING> <TIMEOUT MS> Set blocking mode and timeout"},
gillwei7 3:38ec8ad317f4 1291 {"tcp_server_close", cyn_wifi_tcp_server_close, NULL, " <SHUTDOWN> Close the socket"},
gillwei7 3:38ec8ad317f4 1292
gillwei7 3:38ec8ad317f4 1293 /////////**** WIFI TCP Socket Connection ****//////////
gillwei7 3:38ec8ad317f4 1294 {"tcp_connection_connect", cyn_wifi_tcp_connection_connect, NULL, " <IPADDR> <PORT> Connects TCP socket to the server"},
gillwei7 3:38ec8ad317f4 1295 {"tcp_connection_is_connect", cyn_wifi_tcp_connection_is_connected, NULL, "Check if the socket is connected"},
gillwei7 3:38ec8ad317f4 1296 {"tcp_connection_send", cyn_wifi_tcp_connection_send, NULL, " <DATA> Send data to the remote host"},
gillwei7 3:38ec8ad317f4 1297 {"tcp_connection_send_all", cyn_wifi_tcp_connection_send_all, NULL, " <DATA> Send all the data to the remote host"},
gillwei7 3:38ec8ad317f4 1298 {"tcp_connection_receive", cyn_wifi_tcp_connection_receive, NULL, " <DATALEN> Receive data from the remote host"},
gillwei7 3:38ec8ad317f4 1299 {"tcp_connection_receive_all", cyn_wifi_tcp_connection_receive_all, NULL, "<DATALEN> Receive all the data from the remote host"},
gillwei7 10:5f1fa331d07c 1300 {"tcp_connection_blocking", cyn_wifi_tcp_connection_blocking, NULL, "<SETTING> <TIMEOUT MS> Set blocking mode and timeout"},
gillwei7 3:38ec8ad317f4 1301 {"tcp_connection_close", cyn_wifi_tcp_connection_close, NULL, "<SHUTDOWN> Close the connection"},
gillwei7 0:5c195ab2f696 1302 // {"tcp_connection_reset_address", cyn_wifi_tcp_connection_reset_address, NULL, "........."},
gillwei7 0:5c195ab2f696 1303 // {"tcp_connection_address", cyn_wifi_tcp_connection_address, NULL, "........."},
gillwei7 0:5c195ab2f696 1304 // {"tcp_connection_port", cyn_wifi_tcp_connection_port, NULL, "........."},
gillwei7 3:38ec8ad317f4 1305
gillwei7 3:38ec8ad317f4 1306 /////////**** WIFI UDP Socket ****//////////
gillwei7 3:38ec8ad317f4 1307 {"udp_init", cyn_wifi_udp_init, NULL, "Init UDP Client Socket"},
gillwei7 3:38ec8ad317f4 1308 {"udp_bind", cyn_wifi_udp_bind, NULL, " <PORT> Bind UDP Server Socket to a port"},
gillwei7 3:38ec8ad317f4 1309 {"udp_set_broadcasting", cyn_wifi_udp_set_broadcasting, NULL, " <IS_BROADCAST> Set socket in broadcasting"},
gillwei7 3:38ec8ad317f4 1310 {"udp_send_to", cyn_wifi_udp_send_to, NULL, " <DATA> Send a packet to a remote endpoint"},
gillwei7 3:38ec8ad317f4 1311 {"udp_received_from", cyn_wifi_udp_received_from, NULL, " <DATALEN> Receive a packet from a remote endpont"},
gillwei7 3:38ec8ad317f4 1312 {"udp_blocking", cyn_wifi_udp_blocking, NULL, " <DATALEN> Set blocking mode and timeout"},
gillwei7 3:38ec8ad317f4 1313 {"udp_close", cyn_wifi_udp_close, NULL, " <SHUTDOWN> Close the socket"},
gillwei7 3:38ec8ad317f4 1314
gillwei7 3:38ec8ad317f4 1315 /////////**** WIFI UDP Endpoint ****//////////
gillwei7 3:38ec8ad317f4 1316 {"udp_endpoint_reset", cyn_wifi_udp_endpoint_reset_address, NULL, "Reset the address of this endpoint"},
gillwei7 3:38ec8ad317f4 1317 {"udp_endpoint_address", cyn_wifi_udp_endpoint_address, NULL, " <IPADDR> <PORT> Set/Get the address of this endpoint"},
gillwei7 3:38ec8ad317f4 1318 {"udp_endpoint_port", cyn_wifi_udp_endpoint_port, NULL, "Get the port of this endpoint"},
gillwei7 3:38ec8ad317f4 1319
gillwei7 3:38ec8ad317f4 1320 {NULL, NULL, NULL, NULL},
gillwei7 5:ee474e3133eb 1321 #endif
gillwei7 0:5c195ab2f696 1322 };
gillwei7 0:5c195ab2f696 1323
gillwei7 0:5c195ab2f696 1324
gillwei7 3:38ec8ad317f4 1325