fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Committer:
gillwei7
Date:
Tue Jan 26 09:31:06 2016 +0000
Revision:
10:5f1fa331d07c
Parent:
9:ff3ccba5dc16
Child:
12:a91455702763
Add Wifi data interrupt enable/disable command

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