fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Committer:
gillwei7
Date:
Mon Jan 25 11:19:12 2016 +0000
Revision:
9:ff3ccba5dc16
Parent:
5:ee474e3133eb
Child:
10:5f1fa331d07c
Add BLE data interrupt command and Wi-Fi data receive interrupt

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