fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Committer:
gillwei7
Date:
Fri Sep 11 07:29:31 2015 +0000
Revision:
0:5c195ab2f696
Child:
3:38ec8ad317f4
Gill first commit 20150911 for NNN40_CLI Version 0; Merge mbed library to offline Keil Wifi/BLE CLI program

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 0:5c195ab2f696 8
gillwei7 0:5c195ab2f696 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 0:5c195ab2f696 23
gillwei7 0:5c195ab2f696 24 uint8_t static_ip[STATIC_IP_MAX_LEN] = "192.168.1.100";
gillwei7 0:5c195ab2f696 25
gillwei7 0:5c195ab2f696 26 WIFIDevice wifiDevice;
gillwei7 0:5c195ab2f696 27 extern Serial console;
gillwei7 0:5c195ab2f696 28 extern const char* cyntecCommandErrorNames[];
gillwei7 0:5c195ab2f696 29
gillwei7 0:5c195ab2f696 30 typedef struct deviceNetwork_s {
gillwei7 0:5c195ab2f696 31 char ap_ssid[AP_SSID_MAX_LEN+1];
gillwei7 0:5c195ab2f696 32 char ap_pw[AP_PW_MAX_LEN+1];
gillwei7 0:5c195ab2f696 33 } deviceNetwork_t;
gillwei7 0:5c195ab2f696 34
gillwei7 0:5c195ab2f696 35 deviceNetwork_t devNetwork[3];
gillwei7 0:5c195ab2f696 36
gillwei7 0:5c195ab2f696 37 TCPSocketConnection tcpConnect;
gillwei7 0:5c195ab2f696 38 UDPSocket udpSocket;
gillwei7 0:5c195ab2f696 39 Endpoint cliEndpoint;
gillwei7 0:5c195ab2f696 40 TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 41
gillwei7 0:5c195ab2f696 42 static uint8_t is_Listen = false;
gillwei7 0:5c195ab2f696 43
gillwei7 0:5c195ab2f696 44 static uint8_t cyntecIsValidIP(uint8_t *startIdx, uint8_t totalLen)
gillwei7 0:5c195ab2f696 45 {
gillwei7 0:5c195ab2f696 46 uint8_t *ipIdx = startIdx;
gillwei7 0:5c195ab2f696 47 uint8_t *tempIdx = ipIdx;
gillwei7 0:5c195ab2f696 48 uint8_t IPAddr[3];
gillwei7 0:5c195ab2f696 49 uint8_t IPTokenLen = 0;
gillwei7 0:5c195ab2f696 50 int16_t ipToken;
gillwei7 0:5c195ab2f696 51
gillwei7 0:5c195ab2f696 52 while ( (tempIdx - startIdx) <= totalLen )
gillwei7 0:5c195ab2f696 53 {
gillwei7 0:5c195ab2f696 54 if (*tempIdx == '.' || ((tempIdx - startIdx) == totalLen))
gillwei7 0:5c195ab2f696 55 {
gillwei7 0:5c195ab2f696 56 memset( IPAddr, 0, 3);
gillwei7 0:5c195ab2f696 57 memcpy( IPAddr, ipIdx, (tempIdx - ipIdx));
gillwei7 0:5c195ab2f696 58
gillwei7 0:5c195ab2f696 59 ipToken = atoi((const char *)IPAddr);
gillwei7 0:5c195ab2f696 60 if (ipToken > 255 || ipToken < 0)
gillwei7 0:5c195ab2f696 61 return 1;
gillwei7 0:5c195ab2f696 62
gillwei7 0:5c195ab2f696 63 ipIdx = tempIdx + 1;
gillwei7 0:5c195ab2f696 64 }
gillwei7 0:5c195ab2f696 65 tempIdx++;
gillwei7 0:5c195ab2f696 66 }
gillwei7 0:5c195ab2f696 67
gillwei7 0:5c195ab2f696 68
gillwei7 0:5c195ab2f696 69 return 0;
gillwei7 0:5c195ab2f696 70 }
gillwei7 0:5c195ab2f696 71
gillwei7 0:5c195ab2f696 72 static void cyntecPrintOk(void)
gillwei7 0:5c195ab2f696 73 {
gillwei7 0:5c195ab2f696 74 console.printf("\r\nOK\r\n\r\n");
gillwei7 0:5c195ab2f696 75 }
gillwei7 0:5c195ab2f696 76
gillwei7 0:5c195ab2f696 77 static void cyntecPrintError(uint8_t errIdx)
gillwei7 0:5c195ab2f696 78 {
gillwei7 0:5c195ab2f696 79 console.printf("\r\nERROR;%s\r\n\r\n",cyntecCommandErrorNames[errIdx]);
gillwei7 0:5c195ab2f696 80 }
gillwei7 0:5c195ab2f696 81
gillwei7 0:5c195ab2f696 82 /////////**** WIFI Device Implement ****//////////
gillwei7 0:5c195ab2f696 83 static void cyn_wifi_device_sleep()
gillwei7 0:5c195ab2f696 84 {
gillwei7 0:5c195ab2f696 85 cyntecPrintOk();
gillwei7 0:5c195ab2f696 86 wifiDevice.sleep();
gillwei7 0:5c195ab2f696 87 }
gillwei7 0:5c195ab2f696 88 static void cyn_wifi_device_switch()
gillwei7 0:5c195ab2f696 89 {
gillwei7 0:5c195ab2f696 90 //Set/Get device switch for BLE module
gillwei7 0:5c195ab2f696 91 /* BLE => devSwitched:0 , WIFI => devSwitched:1 */
gillwei7 0:5c195ab2f696 92 int devSwitched = 0;
gillwei7 0:5c195ab2f696 93 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 94 {
gillwei7 0:5c195ab2f696 95 uint8_t *arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 96 if (*arg == '1')
gillwei7 0:5c195ab2f696 97 {
gillwei7 0:5c195ab2f696 98 /* set switched to WIFI */
gillwei7 0:5c195ab2f696 99 if ( wifiDevice.setSwitch(1) == 0 )
gillwei7 0:5c195ab2f696 100 cyntecPrintOk();
gillwei7 0:5c195ab2f696 101 else
gillwei7 0:5c195ab2f696 102 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 103 } else if (*arg == '0') {
gillwei7 0:5c195ab2f696 104 /* set switched to BLE */
gillwei7 0:5c195ab2f696 105 if ( wifiDevice.setSwitch(0) == 0 )
gillwei7 0:5c195ab2f696 106 cyntecPrintOk();
gillwei7 0:5c195ab2f696 107 else
gillwei7 0:5c195ab2f696 108 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 109 } else {
gillwei7 0:5c195ab2f696 110 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 111 }
gillwei7 0:5c195ab2f696 112 } else {
gillwei7 0:5c195ab2f696 113 devSwitched = wifiDevice.getSwitch();
gillwei7 0:5c195ab2f696 114 console.printf("\r\nOK;");
gillwei7 0:5c195ab2f696 115 if ( devSwitched )
gillwei7 0:5c195ab2f696 116 console.printf("WIFI\r\n\r\n");
gillwei7 0:5c195ab2f696 117 else
gillwei7 0:5c195ab2f696 118 console.printf("BLE\r\n\r\n");
gillwei7 0:5c195ab2f696 119 }
gillwei7 0:5c195ab2f696 120 }
gillwei7 0:5c195ab2f696 121 static void cyn_wifi_device_network()
gillwei7 0:5c195ab2f696 122 {
gillwei7 0:5c195ab2f696 123 if (cyntecGetCommandTokenCnt() == 5)
gillwei7 0:5c195ab2f696 124 {
gillwei7 0:5c195ab2f696 125 uint8_t argLen = 0;
gillwei7 0:5c195ab2f696 126 uint8_t *argSSID;
gillwei7 0:5c195ab2f696 127 uint8_t *argPW;
gillwei7 0:5c195ab2f696 128 uint8_t *argPriority;
gillwei7 0:5c195ab2f696 129 /* 0~2, 0 is highest */
gillwei7 0:5c195ab2f696 130 uint8_t priority = 0;
gillwei7 0:5c195ab2f696 131
gillwei7 0:5c195ab2f696 132 /* handle priority */
gillwei7 0:5c195ab2f696 133 argPriority = cyntecGetCommandArgument(2, NULL);
gillwei7 0:5c195ab2f696 134 switch(*argPriority) {
gillwei7 0:5c195ab2f696 135 case '0':
gillwei7 0:5c195ab2f696 136 priority = 0;
gillwei7 0:5c195ab2f696 137 break;
gillwei7 0:5c195ab2f696 138 case '1':
gillwei7 0:5c195ab2f696 139 priority = 1;
gillwei7 0:5c195ab2f696 140 break;
gillwei7 0:5c195ab2f696 141 case '2':
gillwei7 0:5c195ab2f696 142 priority = 2;
gillwei7 0:5c195ab2f696 143 break;
gillwei7 0:5c195ab2f696 144 default:
gillwei7 0:5c195ab2f696 145 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 146 return;
gillwei7 0:5c195ab2f696 147 }
gillwei7 0:5c195ab2f696 148
gillwei7 0:5c195ab2f696 149 /* handle SSID */
gillwei7 0:5c195ab2f696 150 argSSID = cyntecGetCommandArgument(0, &argLen);
gillwei7 0:5c195ab2f696 151 if ( argLen > AP_SSID_MAX_LEN )
gillwei7 0:5c195ab2f696 152 {
gillwei7 0:5c195ab2f696 153 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 154 return;
gillwei7 0:5c195ab2f696 155 }
gillwei7 0:5c195ab2f696 156 memset( devNetwork[priority].ap_ssid , 0, AP_SSID_MAX_LEN+1);
gillwei7 0:5c195ab2f696 157 memcpy( devNetwork[priority].ap_ssid, argSSID, argLen);
gillwei7 0:5c195ab2f696 158
gillwei7 0:5c195ab2f696 159 /* handle Password */
gillwei7 0:5c195ab2f696 160 argPW = cyntecGetCommandArgument(1, &argLen);
gillwei7 0:5c195ab2f696 161 if ( argLen > AP_PW_MAX_LEN )
gillwei7 0:5c195ab2f696 162 {
gillwei7 0:5c195ab2f696 163 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 164 return;
gillwei7 0:5c195ab2f696 165 }
gillwei7 0:5c195ab2f696 166 memset( devNetwork[priority].ap_pw, 0, AP_PW_MAX_LEN+1);
gillwei7 0:5c195ab2f696 167 memcpy( devNetwork[priority].ap_pw, argPW, argLen);
gillwei7 0:5c195ab2f696 168
gillwei7 0:5c195ab2f696 169 /* call setup API */
gillwei7 0:5c195ab2f696 170 wifiDevice.setNetwork(devNetwork[priority].ap_ssid, devNetwork[priority].ap_pw, priority);
gillwei7 0:5c195ab2f696 171 cyntecPrintOk();
gillwei7 0:5c195ab2f696 172 } else {
gillwei7 0:5c195ab2f696 173 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 174 }
gillwei7 0:5c195ab2f696 175 }
gillwei7 0:5c195ab2f696 176 /////////**** WIFI Ethernet Implement ****//////////
gillwei7 0:5c195ab2f696 177 static void cyn_wifi_ethernet_init()
gillwei7 0:5c195ab2f696 178 {
gillwei7 0:5c195ab2f696 179 uint8_t argLen = 0;
gillwei7 0:5c195ab2f696 180 uint8_t *argIP;
gillwei7 0:5c195ab2f696 181 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 182
gillwei7 0:5c195ab2f696 183 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 184 {
gillwei7 0:5c195ab2f696 185 /* use DHCP to get IP */
gillwei7 0:5c195ab2f696 186 if ( ethInterface.init() == 0 )
gillwei7 0:5c195ab2f696 187 cyntecPrintOk();
gillwei7 0:5c195ab2f696 188 else
gillwei7 0:5c195ab2f696 189 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 190
gillwei7 0:5c195ab2f696 191 } else if ( cyntecGetCommandTokenCnt() == 3 ) {
gillwei7 0:5c195ab2f696 192 /* use static to get IP */
gillwei7 0:5c195ab2f696 193 argIP = cyntecGetCommandArgument(0, &argLen);
gillwei7 0:5c195ab2f696 194
gillwei7 0:5c195ab2f696 195 if ( cyntecIsValidIP(argIP,argLen) != 0) {
gillwei7 0:5c195ab2f696 196 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 197 return;
gillwei7 0:5c195ab2f696 198 }
gillwei7 0:5c195ab2f696 199
gillwei7 0:5c195ab2f696 200 memset( static_ip, 0, STATIC_IP_MAX_LEN);
gillwei7 0:5c195ab2f696 201 memcpy( static_ip, argIP, argLen);
gillwei7 0:5c195ab2f696 202 if ( ethInterface.init((const char *)static_ip, NULL, NULL) == 0)
gillwei7 0:5c195ab2f696 203 cyntecPrintOk();
gillwei7 0:5c195ab2f696 204 else
gillwei7 0:5c195ab2f696 205 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 206 } else {
gillwei7 0:5c195ab2f696 207 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 208 }
gillwei7 0:5c195ab2f696 209
gillwei7 0:5c195ab2f696 210 return;
gillwei7 0:5c195ab2f696 211 }
gillwei7 0:5c195ab2f696 212 static void cyn_wifi_ethernet_connect()
gillwei7 0:5c195ab2f696 213 {
gillwei7 0:5c195ab2f696 214 int timeout_ms = 35000;
gillwei7 0:5c195ab2f696 215 uint8_t *argTimeout;
gillwei7 0:5c195ab2f696 216 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 217
gillwei7 0:5c195ab2f696 218 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 219 {
gillwei7 0:5c195ab2f696 220 #ifdef DELTA_WIFI_DEBUG
gillwei7 0:5c195ab2f696 221 simple_uart_putstring((const uint8_t *)"\r\n");
gillwei7 0:5c195ab2f696 222 simple_uart_putstring((const uint8_t *)"Connecting..., Waiting for 35000 ms...");
gillwei7 0:5c195ab2f696 223 simple_uart_putstring((const uint8_t *)"\r\n\r\n");
gillwei7 0:5c195ab2f696 224 #endif
gillwei7 0:5c195ab2f696 225
gillwei7 0:5c195ab2f696 226 if ( ethInterface.connect() == 0 )
gillwei7 0:5c195ab2f696 227 cyntecPrintOk();
gillwei7 0:5c195ab2f696 228 else
gillwei7 0:5c195ab2f696 229 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 230
gillwei7 0:5c195ab2f696 231 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 232 argTimeout = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 233 timeout_ms = atoi((const char*)argTimeout);
gillwei7 0:5c195ab2f696 234
gillwei7 0:5c195ab2f696 235 if (timeout_ms < 0)
gillwei7 0:5c195ab2f696 236 {
gillwei7 0:5c195ab2f696 237 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 238 return;
gillwei7 0:5c195ab2f696 239 }
gillwei7 0:5c195ab2f696 240 #ifdef DELTA_WIFI_DEBUG
gillwei7 0:5c195ab2f696 241 simple_uart_putstring((const uint8_t *)"\r\nConnecting..., Waiting for ");
gillwei7 0:5c195ab2f696 242 simple_uart_putstring((const uint8_t *)argTimeout);
gillwei7 0:5c195ab2f696 243 simple_uart_putstring((const uint8_t *)" ms...\r\n\r\n");
gillwei7 0:5c195ab2f696 244 #endif
gillwei7 0:5c195ab2f696 245 if ( ethInterface.connect(timeout_ms) == 0 )
gillwei7 0:5c195ab2f696 246 cyntecPrintOk();
gillwei7 0:5c195ab2f696 247 else
gillwei7 0:5c195ab2f696 248 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 249
gillwei7 0:5c195ab2f696 250 } else {
gillwei7 0:5c195ab2f696 251 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 252 }
gillwei7 0:5c195ab2f696 253 return;
gillwei7 0:5c195ab2f696 254 }
gillwei7 0:5c195ab2f696 255 static void cyn_wifi_ethernet_disconnect()
gillwei7 0:5c195ab2f696 256 {
gillwei7 0:5c195ab2f696 257 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 258
gillwei7 0:5c195ab2f696 259 ethInterface.disconnect();
gillwei7 0:5c195ab2f696 260 cyntecPrintOk();
gillwei7 0:5c195ab2f696 261 return;
gillwei7 0:5c195ab2f696 262 }
gillwei7 0:5c195ab2f696 263 static void cyn_wifi_ethernet_mac()
gillwei7 0:5c195ab2f696 264 {
gillwei7 0:5c195ab2f696 265 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 266
gillwei7 0:5c195ab2f696 267 char mac_addr[19];
gillwei7 0:5c195ab2f696 268 memset(mac_addr, 0, 19);
gillwei7 0:5c195ab2f696 269 memcpy(mac_addr, ethInterface.getMACAddress(), 19);
gillwei7 0:5c195ab2f696 270
gillwei7 0:5c195ab2f696 271 console.printf("\r\nOK;%s\r\n\r\n",mac_addr);
gillwei7 0:5c195ab2f696 272
gillwei7 0:5c195ab2f696 273 return;
gillwei7 0:5c195ab2f696 274 }
gillwei7 0:5c195ab2f696 275 static void cyn_wifi_ethernet_ip()
gillwei7 0:5c195ab2f696 276 {
gillwei7 0:5c195ab2f696 277 EthernetInterface ethInterface;
gillwei7 0:5c195ab2f696 278
gillwei7 0:5c195ab2f696 279 char ip_addr[15] = "\0";
gillwei7 0:5c195ab2f696 280 memset(ip_addr, 0, 15);
gillwei7 0:5c195ab2f696 281 memcpy(ip_addr, ethInterface.getIPAddress(), 15);
gillwei7 0:5c195ab2f696 282
gillwei7 0:5c195ab2f696 283 console.printf("\r\nOK;%s\r\n\r\n",ip_addr);
gillwei7 0:5c195ab2f696 284
gillwei7 0:5c195ab2f696 285 return;
gillwei7 0:5c195ab2f696 286 }
gillwei7 0:5c195ab2f696 287 /* not implement yet... */
gillwei7 0:5c195ab2f696 288 ////static void cyn_wifi_ethernet_gateway(){}
gillwei7 0:5c195ab2f696 289 ////static void cyn_wifi_ethernet_mask(){}
gillwei7 0:5c195ab2f696 290 /* not implement yet... */
gillwei7 0:5c195ab2f696 291
gillwei7 0:5c195ab2f696 292 /////////**** WIFI TCP Socket Server Implement ****//////////
gillwei7 0:5c195ab2f696 293 static void cyn_wifi_tcp_server_bind()
gillwei7 0:5c195ab2f696 294 {
gillwei7 0:5c195ab2f696 295 // TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 296
gillwei7 0:5c195ab2f696 297 int port = 1;
gillwei7 0:5c195ab2f696 298 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 299 {
gillwei7 0:5c195ab2f696 300 if ( tcpServer.bind(port) == 0 )
gillwei7 0:5c195ab2f696 301 cyntecPrintOk();
gillwei7 0:5c195ab2f696 302 else
gillwei7 0:5c195ab2f696 303 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 304
gillwei7 0:5c195ab2f696 305 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 306 port = atoi((const char*)(cyntecGetCommandArgument(0, NULL)));
gillwei7 0:5c195ab2f696 307 if (port < 0)
gillwei7 0:5c195ab2f696 308 {
gillwei7 0:5c195ab2f696 309 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 310 return;
gillwei7 0:5c195ab2f696 311 }
gillwei7 0:5c195ab2f696 312
gillwei7 0:5c195ab2f696 313 if ( tcpServer.bind(port) == 0 )
gillwei7 0:5c195ab2f696 314 cyntecPrintOk();
gillwei7 0:5c195ab2f696 315 else
gillwei7 0:5c195ab2f696 316 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 317
gillwei7 0:5c195ab2f696 318 } else {
gillwei7 0:5c195ab2f696 319 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 320 }
gillwei7 0:5c195ab2f696 321 }
gillwei7 0:5c195ab2f696 322 static void cyn_wifi_tcp_server_listen()
gillwei7 0:5c195ab2f696 323 {
gillwei7 0:5c195ab2f696 324 // TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 325
gillwei7 0:5c195ab2f696 326 int backlog = 1;
gillwei7 0:5c195ab2f696 327 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 328 {
gillwei7 0:5c195ab2f696 329 if ( tcpServer.listen(backlog) == 0 )
gillwei7 0:5c195ab2f696 330 {
gillwei7 0:5c195ab2f696 331 cyntecPrintOk();
gillwei7 0:5c195ab2f696 332 is_Listen = true;
gillwei7 0:5c195ab2f696 333 } else
gillwei7 0:5c195ab2f696 334 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 335 } else {
gillwei7 0:5c195ab2f696 336 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 337 }
gillwei7 0:5c195ab2f696 338 }
gillwei7 0:5c195ab2f696 339 static void cyn_wifi_tcp_server_accept()
gillwei7 0:5c195ab2f696 340 {
gillwei7 0:5c195ab2f696 341 // TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 342
gillwei7 0:5c195ab2f696 343 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 344 {
gillwei7 0:5c195ab2f696 345 if (is_Listen == false)
gillwei7 0:5c195ab2f696 346 {
gillwei7 0:5c195ab2f696 347 cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
gillwei7 0:5c195ab2f696 348 return;
gillwei7 0:5c195ab2f696 349 }
gillwei7 0:5c195ab2f696 350
gillwei7 0:5c195ab2f696 351 if ( tcpServer.accept(tcpConnect) == 0 )
gillwei7 0:5c195ab2f696 352 {
gillwei7 0:5c195ab2f696 353 cyntecPrintOk();
gillwei7 0:5c195ab2f696 354 is_Listen = false;
gillwei7 0:5c195ab2f696 355 }
gillwei7 0:5c195ab2f696 356 else
gillwei7 0:5c195ab2f696 357 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 358
gillwei7 0:5c195ab2f696 359 } else {
gillwei7 0:5c195ab2f696 360 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 361 }
gillwei7 0:5c195ab2f696 362 }
gillwei7 0:5c195ab2f696 363 static void cyn_wifi_tcp_server_blocking()
gillwei7 0:5c195ab2f696 364 {
gillwei7 0:5c195ab2f696 365 // TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 366
gillwei7 0:5c195ab2f696 367 bool blocking = false;
gillwei7 0:5c195ab2f696 368 unsigned int timeout;
gillwei7 0:5c195ab2f696 369
gillwei7 0:5c195ab2f696 370 uint8_t *arg;
gillwei7 0:5c195ab2f696 371
gillwei7 0:5c195ab2f696 372 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 373
gillwei7 0:5c195ab2f696 374 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 375 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 376 blocking = true;
gillwei7 0:5c195ab2f696 377
gillwei7 0:5c195ab2f696 378 tcpServer.set_blocking(blocking, 1500);
gillwei7 0:5c195ab2f696 379 cyntecPrintOk();
gillwei7 0:5c195ab2f696 380
gillwei7 0:5c195ab2f696 381 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 0:5c195ab2f696 382
gillwei7 0:5c195ab2f696 383 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 384 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 385 blocking = true;
gillwei7 0:5c195ab2f696 386
gillwei7 0:5c195ab2f696 387 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 0:5c195ab2f696 388 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 0:5c195ab2f696 389
gillwei7 0:5c195ab2f696 390 tcpServer.set_blocking(blocking, timeout);
gillwei7 0:5c195ab2f696 391 cyntecPrintOk();
gillwei7 0:5c195ab2f696 392
gillwei7 0:5c195ab2f696 393 } else {
gillwei7 0:5c195ab2f696 394 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 395 }
gillwei7 0:5c195ab2f696 396 }
gillwei7 0:5c195ab2f696 397 static void cyn_wifi_tcp_server_close()
gillwei7 0:5c195ab2f696 398 {
gillwei7 0:5c195ab2f696 399 // TCPSocketServer tcpServer;
gillwei7 0:5c195ab2f696 400
gillwei7 0:5c195ab2f696 401 bool shutdown = true;
gillwei7 0:5c195ab2f696 402 uint8_t *arg;
gillwei7 0:5c195ab2f696 403
gillwei7 0:5c195ab2f696 404 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 405 {
gillwei7 0:5c195ab2f696 406 if ( tcpServer.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 407 cyntecPrintOk();
gillwei7 0:5c195ab2f696 408 else
gillwei7 0:5c195ab2f696 409 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 410
gillwei7 0:5c195ab2f696 411 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 412 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 413 if (arg[0] == '0')
gillwei7 0:5c195ab2f696 414 shutdown = false;
gillwei7 0:5c195ab2f696 415
gillwei7 0:5c195ab2f696 416 if ( tcpServer.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 417 cyntecPrintOk();
gillwei7 0:5c195ab2f696 418 else
gillwei7 0:5c195ab2f696 419 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 420
gillwei7 0:5c195ab2f696 421 } else {
gillwei7 0:5c195ab2f696 422 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 423 }
gillwei7 0:5c195ab2f696 424 }
gillwei7 0:5c195ab2f696 425 /////////**** WIFI TCP Socket Connection ****//////////
gillwei7 0:5c195ab2f696 426 static void cyn_wifi_tcp_connection_connect()
gillwei7 0:5c195ab2f696 427 {
gillwei7 0:5c195ab2f696 428 uint8_t connect_ip[STATIC_IP_MAX_LEN];
gillwei7 0:5c195ab2f696 429 int port;
gillwei7 0:5c195ab2f696 430
gillwei7 0:5c195ab2f696 431 uint8_t argLen = 0;
gillwei7 0:5c195ab2f696 432 uint8_t *argIP;
gillwei7 0:5c195ab2f696 433
gillwei7 0:5c195ab2f696 434 if (cyntecGetCommandTokenCnt() == 4)
gillwei7 0:5c195ab2f696 435 {
gillwei7 0:5c195ab2f696 436 /* handle IP arg */
gillwei7 0:5c195ab2f696 437 argIP = cyntecGetCommandArgument(0, &argLen);
gillwei7 0:5c195ab2f696 438 memset( connect_ip, 0, STATIC_IP_MAX_LEN);
gillwei7 0:5c195ab2f696 439 memcpy( connect_ip, argIP, argLen);
gillwei7 0:5c195ab2f696 440
gillwei7 0:5c195ab2f696 441 /* handle Port arg */
gillwei7 0:5c195ab2f696 442 port = atoi((const char *)cyntecGetCommandArgument(1, NULL));
gillwei7 0:5c195ab2f696 443
gillwei7 0:5c195ab2f696 444 if ( tcpConnect.connect((const char *)connect_ip, port) == 0 )
gillwei7 0:5c195ab2f696 445 cyntecPrintOk();
gillwei7 0:5c195ab2f696 446 else
gillwei7 0:5c195ab2f696 447 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 448
gillwei7 0:5c195ab2f696 449 } else {
gillwei7 0:5c195ab2f696 450 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 451 }
gillwei7 0:5c195ab2f696 452 }
gillwei7 0:5c195ab2f696 453 static void cyn_wifi_tcp_connection_is_connected()
gillwei7 0:5c195ab2f696 454 {
gillwei7 0:5c195ab2f696 455 bool is_connected = false;
gillwei7 0:5c195ab2f696 456 is_connected = tcpConnect.is_connected();
gillwei7 0:5c195ab2f696 457
gillwei7 0:5c195ab2f696 458 if (is_connected == true)
gillwei7 0:5c195ab2f696 459 console.printf("\r\nOK;TRUE\r\n\r\n");
gillwei7 0:5c195ab2f696 460 else
gillwei7 0:5c195ab2f696 461 console.printf("\r\nOK;FALSE\r\n\r\n");
gillwei7 0:5c195ab2f696 462 }
gillwei7 0:5c195ab2f696 463 static void cyn_wifi_tcp_connection_send()
gillwei7 0:5c195ab2f696 464 {
gillwei7 0:5c195ab2f696 465 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 466
gillwei7 0:5c195ab2f696 467 uint8_t *arg;
gillwei7 0:5c195ab2f696 468 int argLen = 0;
gillwei7 0:5c195ab2f696 469
gillwei7 0:5c195ab2f696 470 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 471 {
gillwei7 0:5c195ab2f696 472 if ( tcpConnect.is_connected() == false )
gillwei7 0:5c195ab2f696 473 {
gillwei7 0:5c195ab2f696 474 cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
gillwei7 0:5c195ab2f696 475 return;
gillwei7 0:5c195ab2f696 476 }
gillwei7 0:5c195ab2f696 477
gillwei7 0:5c195ab2f696 478 /* handle Message arg */
gillwei7 0:5c195ab2f696 479 arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
gillwei7 0:5c195ab2f696 480
gillwei7 0:5c195ab2f696 481 if (argLen > TCP_SEND_MAX_LEN)
gillwei7 0:5c195ab2f696 482 {
gillwei7 0:5c195ab2f696 483 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 484 return;
gillwei7 0:5c195ab2f696 485 }
gillwei7 0:5c195ab2f696 486
gillwei7 0:5c195ab2f696 487 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 488 memcpy( msg, arg, argLen);
gillwei7 0:5c195ab2f696 489
gillwei7 0:5c195ab2f696 490 if ( tcpConnect.send(msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 491 cyntecPrintOk();
gillwei7 0:5c195ab2f696 492 else
gillwei7 0:5c195ab2f696 493 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 494
gillwei7 0:5c195ab2f696 495 } else {
gillwei7 0:5c195ab2f696 496 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 497 }
gillwei7 0:5c195ab2f696 498 }
gillwei7 0:5c195ab2f696 499 static void cyn_wifi_tcp_connection_send_all()
gillwei7 0:5c195ab2f696 500 {
gillwei7 0:5c195ab2f696 501 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 502
gillwei7 0:5c195ab2f696 503 uint8_t *arg;
gillwei7 0:5c195ab2f696 504 int argLen = 0;
gillwei7 0:5c195ab2f696 505
gillwei7 0:5c195ab2f696 506 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 507 {
gillwei7 0:5c195ab2f696 508 /* handle Message arg */
gillwei7 0:5c195ab2f696 509 arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
gillwei7 0:5c195ab2f696 510
gillwei7 0:5c195ab2f696 511 if (argLen > TCP_SEND_MAX_LEN)
gillwei7 0:5c195ab2f696 512 {
gillwei7 0:5c195ab2f696 513 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 514 return;
gillwei7 0:5c195ab2f696 515 }
gillwei7 0:5c195ab2f696 516
gillwei7 0:5c195ab2f696 517 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 518 memcpy( msg, arg, argLen);
gillwei7 0:5c195ab2f696 519
gillwei7 0:5c195ab2f696 520 if ( tcpConnect.send_all(msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 521 cyntecPrintOk();
gillwei7 0:5c195ab2f696 522 else
gillwei7 0:5c195ab2f696 523 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 524
gillwei7 0:5c195ab2f696 525 } else {
gillwei7 0:5c195ab2f696 526 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 527 }
gillwei7 0:5c195ab2f696 528 }
gillwei7 0:5c195ab2f696 529 static void cyn_wifi_tcp_connection_receive()
gillwei7 0:5c195ab2f696 530 {
gillwei7 0:5c195ab2f696 531 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 532 int argLen = 0;
gillwei7 0:5c195ab2f696 533
gillwei7 0:5c195ab2f696 534 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 535 {
gillwei7 0:5c195ab2f696 536 /* handle Message arg */
gillwei7 0:5c195ab2f696 537 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 0:5c195ab2f696 538
gillwei7 0:5c195ab2f696 539 if (argLen > TCP_SEND_MAX_LEN || argLen < 0)
gillwei7 0:5c195ab2f696 540 {
gillwei7 0:5c195ab2f696 541 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 542 return;
gillwei7 0:5c195ab2f696 543 }
gillwei7 0:5c195ab2f696 544
gillwei7 0:5c195ab2f696 545 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 546
gillwei7 0:5c195ab2f696 547 if ( tcpConnect.receive(msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 548 {
gillwei7 0:5c195ab2f696 549 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 0:5c195ab2f696 550 }
gillwei7 0:5c195ab2f696 551 else
gillwei7 0:5c195ab2f696 552 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 553
gillwei7 0:5c195ab2f696 554 } else {
gillwei7 0:5c195ab2f696 555 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 556 }
gillwei7 0:5c195ab2f696 557 }
gillwei7 0:5c195ab2f696 558 static void cyn_wifi_tcp_connection_receive_all()
gillwei7 0:5c195ab2f696 559 {
gillwei7 0:5c195ab2f696 560 char msg[TCP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 561 int argLen = 0;
gillwei7 0:5c195ab2f696 562
gillwei7 0:5c195ab2f696 563 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 564 {
gillwei7 0:5c195ab2f696 565 /* handle Message arg */
gillwei7 0:5c195ab2f696 566 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 0:5c195ab2f696 567
gillwei7 0:5c195ab2f696 568 if (argLen > TCP_SEND_MAX_LEN || argLen < 0)
gillwei7 0:5c195ab2f696 569 {
gillwei7 0:5c195ab2f696 570 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 571 return;
gillwei7 0:5c195ab2f696 572 }
gillwei7 0:5c195ab2f696 573
gillwei7 0:5c195ab2f696 574 memset( msg, 0, TCP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 575
gillwei7 0:5c195ab2f696 576 if ( tcpConnect.receive_all(msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 577 {
gillwei7 0:5c195ab2f696 578 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 0:5c195ab2f696 579 }
gillwei7 0:5c195ab2f696 580 else
gillwei7 0:5c195ab2f696 581 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 582
gillwei7 0:5c195ab2f696 583 } else {
gillwei7 0:5c195ab2f696 584 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 585 }
gillwei7 0:5c195ab2f696 586 }
gillwei7 0:5c195ab2f696 587 static void cyn_wifi_tcp_connection_blocking()
gillwei7 0:5c195ab2f696 588 {
gillwei7 0:5c195ab2f696 589 bool blocking = false;
gillwei7 0:5c195ab2f696 590 unsigned int timeout;
gillwei7 0:5c195ab2f696 591
gillwei7 0:5c195ab2f696 592 uint8_t *arg;
gillwei7 0:5c195ab2f696 593
gillwei7 0:5c195ab2f696 594 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 595
gillwei7 0:5c195ab2f696 596 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 597 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 598 blocking = true;
gillwei7 0:5c195ab2f696 599
gillwei7 0:5c195ab2f696 600 tcpConnect.set_blocking(blocking, 1500);
gillwei7 0:5c195ab2f696 601 cyntecPrintOk();
gillwei7 0:5c195ab2f696 602
gillwei7 0:5c195ab2f696 603 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 0:5c195ab2f696 604 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 605 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 606 blocking = true;
gillwei7 0:5c195ab2f696 607
gillwei7 0:5c195ab2f696 608 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 0:5c195ab2f696 609 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 0:5c195ab2f696 610
gillwei7 0:5c195ab2f696 611 tcpConnect.set_blocking(blocking, timeout);
gillwei7 0:5c195ab2f696 612 cyntecPrintOk();
gillwei7 0:5c195ab2f696 613
gillwei7 0:5c195ab2f696 614 } else {
gillwei7 0:5c195ab2f696 615 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 616 }
gillwei7 0:5c195ab2f696 617 }
gillwei7 0:5c195ab2f696 618 static void cyn_wifi_tcp_connection_close()
gillwei7 0:5c195ab2f696 619 {
gillwei7 0:5c195ab2f696 620 bool shutdown = true;
gillwei7 0:5c195ab2f696 621 uint8_t *arg;
gillwei7 0:5c195ab2f696 622
gillwei7 0:5c195ab2f696 623 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 624 {
gillwei7 0:5c195ab2f696 625 if ( tcpConnect.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 626 cyntecPrintOk();
gillwei7 0:5c195ab2f696 627 else
gillwei7 0:5c195ab2f696 628 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 629
gillwei7 0:5c195ab2f696 630 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 631 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 632 if (arg[0] == '0')
gillwei7 0:5c195ab2f696 633 shutdown = false;
gillwei7 0:5c195ab2f696 634
gillwei7 0:5c195ab2f696 635 if ( tcpConnect.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 636 cyntecPrintOk();
gillwei7 0:5c195ab2f696 637 else
gillwei7 0:5c195ab2f696 638 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 639
gillwei7 0:5c195ab2f696 640 } else {
gillwei7 0:5c195ab2f696 641 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 642 }
gillwei7 0:5c195ab2f696 643 }
gillwei7 0:5c195ab2f696 644 //static void cyn_wifi_tcp_connection_reset_address(){}
gillwei7 0:5c195ab2f696 645 //static void cyn_wifi_tcp_connection_set_address(){}
gillwei7 0:5c195ab2f696 646 //static void cyn_wifi_tcp_connection_address(){}
gillwei7 0:5c195ab2f696 647 //static void cyn_wifi_tcp_connection_port(){}
gillwei7 0:5c195ab2f696 648
gillwei7 0:5c195ab2f696 649
gillwei7 0:5c195ab2f696 650
gillwei7 0:5c195ab2f696 651 /////////**** WIFI UDP Socket Implement ****//////////
gillwei7 0:5c195ab2f696 652 static void cyn_wifi_udp_init()
gillwei7 0:5c195ab2f696 653 {
gillwei7 0:5c195ab2f696 654 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 655 {
gillwei7 0:5c195ab2f696 656 if ( udpSocket.init() == 0 )
gillwei7 0:5c195ab2f696 657 cyntecPrintOk();
gillwei7 0:5c195ab2f696 658 else
gillwei7 0:5c195ab2f696 659 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 660
gillwei7 0:5c195ab2f696 661 } else {
gillwei7 0:5c195ab2f696 662 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 663 }
gillwei7 0:5c195ab2f696 664 }
gillwei7 0:5c195ab2f696 665 static void cyn_wifi_udp_bind()
gillwei7 0:5c195ab2f696 666 {
gillwei7 0:5c195ab2f696 667 int port = 1;
gillwei7 0:5c195ab2f696 668 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 669 {
gillwei7 0:5c195ab2f696 670 udpSocket.bind(port);
gillwei7 0:5c195ab2f696 671 cyntecPrintOk();
gillwei7 0:5c195ab2f696 672 // if ( udpSocket.bind(port) == 0 )
gillwei7 0:5c195ab2f696 673 // cyntecPrintOk();
gillwei7 0:5c195ab2f696 674 // else
gillwei7 0:5c195ab2f696 675 // cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 676
gillwei7 0:5c195ab2f696 677 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 678 port = atoi((const char*)(cyntecGetCommandArgument(0, NULL)));
gillwei7 0:5c195ab2f696 679
gillwei7 0:5c195ab2f696 680 if (port < 0)
gillwei7 0:5c195ab2f696 681 {
gillwei7 0:5c195ab2f696 682 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 683 return;
gillwei7 0:5c195ab2f696 684 }
gillwei7 0:5c195ab2f696 685
gillwei7 0:5c195ab2f696 686 udpSocket.bind(port);
gillwei7 0:5c195ab2f696 687 cyntecPrintOk();
gillwei7 0:5c195ab2f696 688 // if ( udpSocket.bind(port) == 0 )
gillwei7 0:5c195ab2f696 689 // cyntecPrintOk();
gillwei7 0:5c195ab2f696 690 // else
gillwei7 0:5c195ab2f696 691 // cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 692
gillwei7 0:5c195ab2f696 693 } else {
gillwei7 0:5c195ab2f696 694 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 695 }
gillwei7 0:5c195ab2f696 696 }
gillwei7 0:5c195ab2f696 697 static void cyn_wifi_udp_set_broadcasting()
gillwei7 0:5c195ab2f696 698 {
gillwei7 0:5c195ab2f696 699 bool broadcast = true;
gillwei7 0:5c195ab2f696 700 uint8_t *arg;
gillwei7 0:5c195ab2f696 701
gillwei7 0:5c195ab2f696 702 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 703 {
gillwei7 0:5c195ab2f696 704 if ( udpSocket.set_broadcasting(broadcast) == 0 )
gillwei7 0:5c195ab2f696 705 cyntecPrintOk();
gillwei7 0:5c195ab2f696 706 else
gillwei7 0:5c195ab2f696 707 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 708
gillwei7 0:5c195ab2f696 709 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 710 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 711 if (arg[0] == '0')
gillwei7 0:5c195ab2f696 712 broadcast = false;
gillwei7 0:5c195ab2f696 713
gillwei7 0:5c195ab2f696 714 if ( udpSocket.set_broadcasting(broadcast) == 0 )
gillwei7 0:5c195ab2f696 715 cyntecPrintOk();
gillwei7 0:5c195ab2f696 716 else
gillwei7 0:5c195ab2f696 717 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 718
gillwei7 0:5c195ab2f696 719 } else {
gillwei7 0:5c195ab2f696 720 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 721 }
gillwei7 0:5c195ab2f696 722 }
gillwei7 0:5c195ab2f696 723 static void cyn_wifi_udp_send_to()
gillwei7 0:5c195ab2f696 724 {
gillwei7 0:5c195ab2f696 725 char msg[UDP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 726
gillwei7 0:5c195ab2f696 727 uint8_t *arg;
gillwei7 0:5c195ab2f696 728 int argLen = 0;
gillwei7 0:5c195ab2f696 729
gillwei7 0:5c195ab2f696 730 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 731 {
gillwei7 0:5c195ab2f696 732 /* handle Message arg */
gillwei7 0:5c195ab2f696 733 arg = cyntecGetCommandArgument(0, (uint8_t *)&argLen);
gillwei7 0:5c195ab2f696 734
gillwei7 0:5c195ab2f696 735 if (argLen > UDP_SEND_MAX_LEN || argLen < 0)
gillwei7 0:5c195ab2f696 736 {
gillwei7 0:5c195ab2f696 737 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 738 return;
gillwei7 0:5c195ab2f696 739 }
gillwei7 0:5c195ab2f696 740
gillwei7 0:5c195ab2f696 741 memset( msg, 0, UDP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 742 memcpy( msg, arg, argLen);
gillwei7 0:5c195ab2f696 743
gillwei7 0:5c195ab2f696 744 if ( udpSocket.sendTo(cliEndpoint, msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 745 cyntecPrintOk();
gillwei7 0:5c195ab2f696 746 else
gillwei7 0:5c195ab2f696 747 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 748
gillwei7 0:5c195ab2f696 749 } else {
gillwei7 0:5c195ab2f696 750 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 751 }
gillwei7 0:5c195ab2f696 752 }
gillwei7 0:5c195ab2f696 753 static void cyn_wifi_udp_received_from()
gillwei7 0:5c195ab2f696 754 {
gillwei7 0:5c195ab2f696 755 char msg[UDP_SEND_MAX_LEN+1];
gillwei7 0:5c195ab2f696 756 int argLen = 0;
gillwei7 0:5c195ab2f696 757
gillwei7 0:5c195ab2f696 758 if (cyntecGetCommandTokenCnt() == 3)
gillwei7 0:5c195ab2f696 759 {
gillwei7 0:5c195ab2f696 760 /* handle Message arg */
gillwei7 0:5c195ab2f696 761 argLen = atoi((const char *)cyntecGetCommandArgument(0, NULL));
gillwei7 0:5c195ab2f696 762
gillwei7 0:5c195ab2f696 763 if (argLen > UDP_SEND_MAX_LEN || argLen < 0)
gillwei7 0:5c195ab2f696 764 {
gillwei7 0:5c195ab2f696 765 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 766 return;
gillwei7 0:5c195ab2f696 767 }
gillwei7 0:5c195ab2f696 768
gillwei7 0:5c195ab2f696 769 memset( msg, 0, UDP_SEND_MAX_LEN+1);
gillwei7 0:5c195ab2f696 770
gillwei7 0:5c195ab2f696 771 if ( udpSocket.receiveFrom(cliEndpoint, msg, argLen) >= 0 )
gillwei7 0:5c195ab2f696 772 {
gillwei7 0:5c195ab2f696 773 console.printf("\r\nOK;%s\r\n\r\n",msg);
gillwei7 0:5c195ab2f696 774 }
gillwei7 0:5c195ab2f696 775 else
gillwei7 0:5c195ab2f696 776 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 777
gillwei7 0:5c195ab2f696 778 } else {
gillwei7 0:5c195ab2f696 779 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 780 }
gillwei7 0:5c195ab2f696 781 }
gillwei7 0:5c195ab2f696 782 static void cyn_wifi_udp_blocking()
gillwei7 0:5c195ab2f696 783 {
gillwei7 0:5c195ab2f696 784 bool blocking = false;
gillwei7 0:5c195ab2f696 785 unsigned int timeout;
gillwei7 0:5c195ab2f696 786
gillwei7 0:5c195ab2f696 787 uint8_t *arg;
gillwei7 0:5c195ab2f696 788 if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 789
gillwei7 0:5c195ab2f696 790 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 791 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 792 blocking = true;
gillwei7 0:5c195ab2f696 793
gillwei7 0:5c195ab2f696 794 udpSocket.set_blocking(blocking, 1500);
gillwei7 0:5c195ab2f696 795 cyntecPrintOk();
gillwei7 0:5c195ab2f696 796
gillwei7 0:5c195ab2f696 797 } else if (cyntecGetCommandTokenCnt() == 4) {
gillwei7 0:5c195ab2f696 798 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 799 if (arg[0] == '1')
gillwei7 0:5c195ab2f696 800 blocking = true;
gillwei7 0:5c195ab2f696 801
gillwei7 0:5c195ab2f696 802 arg = cyntecGetCommandArgument(1, NULL);
gillwei7 0:5c195ab2f696 803 timeout = (unsigned int)atoi((const char *)arg);
gillwei7 0:5c195ab2f696 804
gillwei7 0:5c195ab2f696 805 udpSocket.set_blocking(blocking, timeout);
gillwei7 0:5c195ab2f696 806 cyntecPrintOk();
gillwei7 0:5c195ab2f696 807
gillwei7 0:5c195ab2f696 808 } else {
gillwei7 0:5c195ab2f696 809 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 810 }
gillwei7 0:5c195ab2f696 811 }
gillwei7 0:5c195ab2f696 812 static void cyn_wifi_udp_close()
gillwei7 0:5c195ab2f696 813 {
gillwei7 0:5c195ab2f696 814 bool shutdown = true;
gillwei7 0:5c195ab2f696 815 uint8_t *arg;
gillwei7 0:5c195ab2f696 816
gillwei7 0:5c195ab2f696 817 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 818 {
gillwei7 0:5c195ab2f696 819 if ( udpSocket.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 820 cyntecPrintOk();
gillwei7 0:5c195ab2f696 821 else
gillwei7 0:5c195ab2f696 822 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 823
gillwei7 0:5c195ab2f696 824 } else if (cyntecGetCommandTokenCnt() == 3) {
gillwei7 0:5c195ab2f696 825 arg = cyntecGetCommandArgument(0, NULL);
gillwei7 0:5c195ab2f696 826 if (arg[0] == '0')
gillwei7 0:5c195ab2f696 827 shutdown = false;
gillwei7 0:5c195ab2f696 828
gillwei7 0:5c195ab2f696 829 if ( udpSocket.close(shutdown) == 0 )
gillwei7 0:5c195ab2f696 830 cyntecPrintOk();
gillwei7 0:5c195ab2f696 831 else
gillwei7 0:5c195ab2f696 832 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 833
gillwei7 0:5c195ab2f696 834 } else {
gillwei7 0:5c195ab2f696 835 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 836 }
gillwei7 0:5c195ab2f696 837 }
gillwei7 0:5c195ab2f696 838
gillwei7 0:5c195ab2f696 839
gillwei7 0:5c195ab2f696 840
gillwei7 0:5c195ab2f696 841 /////////**** WIFI UDP Endpoint Implement ****//////////
gillwei7 0:5c195ab2f696 842 static void cyn_wifi_udp_endpoint_reset_address()
gillwei7 0:5c195ab2f696 843 {
gillwei7 0:5c195ab2f696 844 if (cyntecGetCommandTokenCnt() == 2)
gillwei7 0:5c195ab2f696 845 {
gillwei7 0:5c195ab2f696 846 cliEndpoint.reset_address();
gillwei7 0:5c195ab2f696 847 cyntecPrintOk();
gillwei7 0:5c195ab2f696 848 } else {
gillwei7 0:5c195ab2f696 849 cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
gillwei7 0:5c195ab2f696 850 }
gillwei7 0:5c195ab2f696 851 }
gillwei7 0:5c195ab2f696 852 static void cyn_wifi_udp_endpoint_address()
gillwei7 0:5c195ab2f696 853 {
gillwei7 0:5c195ab2f696 854 uint8_t argHost[STATIC_IP_MAX_LEN];
gillwei7 0:5c195ab2f696 855 int port;
gillwei7 0:5c195ab2f696 856
gillwei7 0:5c195ab2f696 857 uint8_t *arg;
gillwei7 0:5c195ab2f696 858 uint8_t argLen;
gillwei7 0:5c195ab2f696 859
gillwei7 0:5c195ab2f696 860 if ( cyntecGetCommandTokenCnt() == 4 ) {
gillwei7 0:5c195ab2f696 861 /* handle Host addr */
gillwei7 0:5c195ab2f696 862 arg = cyntecGetCommandArgument(0, &argLen);
gillwei7 0:5c195ab2f696 863
gillwei7 0:5c195ab2f696 864 if ( cyntecIsValidIP(arg,argLen) != 0) {
gillwei7 0:5c195ab2f696 865 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 866 return;
gillwei7 0:5c195ab2f696 867 }
gillwei7 0:5c195ab2f696 868
gillwei7 0:5c195ab2f696 869 memset( argHost, 0, STATIC_IP_MAX_LEN);
gillwei7 0:5c195ab2f696 870 memcpy( argHost, arg, argLen);
gillwei7 0:5c195ab2f696 871
gillwei7 0:5c195ab2f696 872 /* Handle Port */
gillwei7 0:5c195ab2f696 873 port = atoi((const char *)(cyntecGetCommandArgument(1, NULL)));
gillwei7 0:5c195ab2f696 874 if (port < 0) {
gillwei7 0:5c195ab2f696 875 cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
gillwei7 0:5c195ab2f696 876 return;
gillwei7 0:5c195ab2f696 877 }
gillwei7 0:5c195ab2f696 878
gillwei7 0:5c195ab2f696 879 if ( cliEndpoint.set_address((const char *)argHost, (const int)port) == 0)
gillwei7 0:5c195ab2f696 880 cyntecPrintOk();
gillwei7 0:5c195ab2f696 881 else
gillwei7 0:5c195ab2f696 882 cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL);
gillwei7 0:5c195ab2f696 883
gillwei7 0:5c195ab2f696 884 } else {
gillwei7 0:5c195ab2f696 885 console.printf("\r\nOK;%s\r\n\r\n",cliEndpoint.get_address());
gillwei7 0:5c195ab2f696 886 }
gillwei7 0:5c195ab2f696 887 }
gillwei7 0:5c195ab2f696 888 //static void cyn_wifi_udp_endpoint_get_address(){}
gillwei7 0:5c195ab2f696 889 static void cyn_wifi_udp_endpoint_port()
gillwei7 0:5c195ab2f696 890 {
gillwei7 0:5c195ab2f696 891 console.printf("\r\nOK;%d\r\n\r\n",cliEndpoint.get_port());
gillwei7 0:5c195ab2f696 892 }
gillwei7 0:5c195ab2f696 893
gillwei7 0:5c195ab2f696 894 // 2015/1/20: Lester add
gillwei7 0:5c195ab2f696 895
gillwei7 0:5c195ab2f696 896 CyntecCommandEntry wifiCommandSets[] = {
gillwei7 0:5c195ab2f696 897
gillwei7 0:5c195ab2f696 898 /////////**** WIFI Device ****//////////
gillwei7 0:5c195ab2f696 899 {"device_sleep", cyn_wifi_device_sleep, NULL, "Set WIFI module to sleep mode"},
gillwei7 0:5c195ab2f696 900 {"device_switch", cyn_wifi_device_switch, NULL, "Set/Get device switch for WIFI module"},
gillwei7 0:5c195ab2f696 901 {"device_network", cyn_wifi_device_network, NULL, "Set SSID and PASSWORD for WIFI module"},
gillwei7 0:5c195ab2f696 902
gillwei7 0:5c195ab2f696 903 /////////**** WIFI Ethernet ****//////////
gillwei7 0:5c195ab2f696 904 {"ethernet_init", cyn_wifi_ethernet_init, NULL, "Initialize the interface to use DHCP"},
gillwei7 0:5c195ab2f696 905 {"ethernet_connect", cyn_wifi_ethernet_connect, NULL, "Bring up the WiFi connection"},
gillwei7 0:5c195ab2f696 906 {"ethernet_disconnect", cyn_wifi_ethernet_disconnect, NULL, "Bring the interface down"},
gillwei7 0:5c195ab2f696 907 {"ethernet_mac", cyn_wifi_ethernet_mac, NULL, "Get MAC addr of Ehternet Interface"},
gillwei7 0:5c195ab2f696 908 {"ethernet_ip", cyn_wifi_ethernet_ip, NULL, "Get IP addr of Ehternet Interface"},
gillwei7 0:5c195ab2f696 909 /* not implement yet... */
gillwei7 0:5c195ab2f696 910 ////{"ethernet_gateway", cyn_wifi_ethernet_gateway, NULL, "........."},
gillwei7 0:5c195ab2f696 911 ////{"ethernet_mask", cyn_wifi_ethernet_mask, NULL, "........."},
gillwei7 0:5c195ab2f696 912 /* not implement yet... */
gillwei7 0:5c195ab2f696 913
gillwei7 0:5c195ab2f696 914 /////////**** WIFI TCP Socket Server ****//////////
gillwei7 0:5c195ab2f696 915 {"tcp_server_bind", cyn_wifi_tcp_server_bind, NULL, "Bind a socket to a port"},
gillwei7 0:5c195ab2f696 916 {"tcp_server_listen", cyn_wifi_tcp_server_listen, NULL, "Start listening for incomming connections"},
gillwei7 0:5c195ab2f696 917 {"tcp_server_accept", cyn_wifi_tcp_server_accept, NULL, "Accept a new connection"},
gillwei7 0:5c195ab2f696 918 {"tcp_server_blocking", cyn_wifi_tcp_server_blocking, NULL, "Set blocking mode and timeout"},
gillwei7 0:5c195ab2f696 919 {"tcp_server_close", cyn_wifi_tcp_server_close, NULL, "Close the socket"},
gillwei7 0:5c195ab2f696 920
gillwei7 0:5c195ab2f696 921 /////////**** WIFI TCP Socket Connection ****//////////
gillwei7 0:5c195ab2f696 922 {"tcp_connection_connect", cyn_wifi_tcp_connection_connect, NULL, "Connects TCP socket to the server"},
gillwei7 0:5c195ab2f696 923 {"tcp_connection_is_connect", cyn_wifi_tcp_connection_is_connected, NULL, "Check if the socket is connected"},
gillwei7 0:5c195ab2f696 924 {"tcp_connection_send", cyn_wifi_tcp_connection_send, NULL, "Send data to the remote host"},
gillwei7 0:5c195ab2f696 925 {"tcp_connection_send_all", cyn_wifi_tcp_connection_send_all, NULL, "Send all the data to the remote host"},
gillwei7 0:5c195ab2f696 926 {"tcp_connection_receive", cyn_wifi_tcp_connection_receive, NULL, "Receive data from the remote host"},
gillwei7 0:5c195ab2f696 927 {"tcp_connection_receive_all", cyn_wifi_tcp_connection_receive_all, NULL, "Receive all the data from the remote host"},
gillwei7 0:5c195ab2f696 928 {"tcp_connection_blocking", cyn_wifi_tcp_connection_blocking, NULL, "Set blocking mode and timeout"},
gillwei7 0:5c195ab2f696 929 {"tcp_connection_close", cyn_wifi_tcp_connection_close, NULL, "Close the connection"},
gillwei7 0:5c195ab2f696 930 // {"tcp_connection_reset_address", cyn_wifi_tcp_connection_reset_address, NULL, "........."},
gillwei7 0:5c195ab2f696 931 // {"tcp_connection_address", cyn_wifi_tcp_connection_address, NULL, "........."},
gillwei7 0:5c195ab2f696 932 // {"tcp_connection_port", cyn_wifi_tcp_connection_port, NULL, "........."},
gillwei7 0:5c195ab2f696 933
gillwei7 0:5c195ab2f696 934 /////////**** WIFI UDP Socket ****//////////
gillwei7 0:5c195ab2f696 935 {"udp_init", cyn_wifi_udp_init, NULL, "Init UDP Client Socket"},
gillwei7 0:5c195ab2f696 936 {"udp_bind", cyn_wifi_udp_bind, NULL, "Bind UDP Server Socket to a port"},
gillwei7 0:5c195ab2f696 937 {"udp_set_broadcasting", cyn_wifi_udp_set_broadcasting, NULL, "Set socket in broadcasting"},
gillwei7 0:5c195ab2f696 938 {"udp_send_to", cyn_wifi_udp_send_to, NULL, "Send a packet to a remote endpoint"},
gillwei7 0:5c195ab2f696 939 {"udp_received_from", cyn_wifi_udp_received_from, NULL, "Receive a packet from a remote endpont"},
gillwei7 0:5c195ab2f696 940 {"udp_blocking", cyn_wifi_udp_blocking, NULL, "Set blocking mode and timeout"},
gillwei7 0:5c195ab2f696 941 {"udp_close", cyn_wifi_udp_close, NULL, "Close the socket"},
gillwei7 0:5c195ab2f696 942
gillwei7 0:5c195ab2f696 943 /////////**** WIFI UDP Endpoint ****//////////
gillwei7 0:5c195ab2f696 944 {"udp_endpoint_reset", cyn_wifi_udp_endpoint_reset_address, NULL, "Reset the address of this endpoint"},
gillwei7 0:5c195ab2f696 945 {"udp_endpoint_address", cyn_wifi_udp_endpoint_address, NULL, "Set/Get the address of this endpoint"},
gillwei7 0:5c195ab2f696 946 {"udp_endpoint_port", cyn_wifi_udp_endpoint_port, NULL, "Get the port of this endpoint"},
gillwei7 0:5c195ab2f696 947
gillwei7 0:5c195ab2f696 948 {NULL, NULL, NULL, NULL},
gillwei7 0:5c195ab2f696 949
gillwei7 0:5c195ab2f696 950 };
gillwei7 0:5c195ab2f696 951
gillwei7 0:5c195ab2f696 952