fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

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