Skip to content

Commit 5e1624a

Browse files
committed
Add some console commands
1 parent 7791271 commit 5e1624a

File tree

6 files changed

+110
-53
lines changed

6 files changed

+110
-53
lines changed

wifiHD/src/ard_spi.c

Lines changed: 68 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,13 @@ int getSock(void * _ttcp)
189189
return -1;
190190
}
191191

192+
void setMapSock(uint8_t sock, void* _ttcp)
193+
{
194+
if (sock < MAX_SOCK_NUM)
195+
mapSockTCP[sock]=_ttcp;
196+
printk("Map [%d, %p]\n", sock, _ttcp);
197+
}
198+
192199
void clearMapSockTcp(uint8_t sock)
193200
{
194201
if (sock < MAX_SOCK_NUM)
@@ -197,7 +204,7 @@ void clearMapSockTcp(uint8_t sock)
197204

198205
void initMapSockTcp()
199206
{
200-
memset(mapSockTCP, 0, sizeof(void*)*MAX_SOCK_NUM);
207+
memset(mapSockTCP, 0, sizeof(mapSockTCP));
201208
}
202209

203210
/**
@@ -222,16 +229,16 @@ void showTTCPstatus()
222229
int i = 0;
223230
for (; i<MAX_SOCK_NUM; i++)
224231
{
225-
void* p = mapSockTCP[i];
232+
void* p = getTTCP(i);
226233
if (p)
227234
{
228235
ttcp_t* _ttcp = (ttcp_t* )p;
229236
printk("Socket n.:%d addr:0x%x port:%d\n", i, _ttcp->addr, _ttcp->port);
230237
if (_ttcp->tpcb){
231-
printk("[tpcp]-Status:%d\n", _ttcp->tpcb->state);
238+
printk("[tpcp-%p]-Status:%d\n", _ttcp->tpcb, _ttcp->tpcb->state);
232239
}
233240
if (_ttcp->lpcb){
234-
printk("[tlcp]-Status:%d\n", _ttcp->lpcb->state);
241+
printk("[tlcp-%p]-Status:%d\n", _ttcp->lpcb, _ttcp->lpcb->state);
235242
}
236243
ard_tcp_print_stats(_ttcp);
237244
}
@@ -594,37 +601,53 @@ void set_result_cmd(int err)
594601
extern int ttcp_start(struct ip_addr addr, uint16_t port, void *opaque,
595602
void *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose);
596603

604+
605+
int start_server_tcp(uint16_t port, uint8_t sock)
606+
{
607+
struct ip_addr addr = { 0 };
608+
uint16_t buflen = 1024;
609+
uint16_t nbuf = 1024;
610+
wl_err_t err = WL_FAILURE;
611+
612+
#ifdef _APP_DEBUG_
613+
int verbose = 1;
614+
#else
615+
int verbose = 0;
616+
#endif
617+
int udp = 0;
618+
int mode = 1; //RECEIVE
619+
void* _ttcp = NULL;
620+
621+
if (sock >= MAX_SOCK_NUM)
622+
return WIFI_SPI_ERR;
623+
624+
if (_connected)
625+
{
626+
printk("Still connected...wait\n");
627+
return WIFI_SPI_ERR;
628+
}
629+
630+
if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0)
631+
{
632+
INFO_SPI("Start Server [%d, %d] OK!\n", port, sock);
633+
setMapSock(sock, _ttcp);
634+
err = WL_SUCCESS;
635+
}else{
636+
INFO_SPI("Start Server [%d, %d] FAILED!\n", port, sock);
637+
clearMapSockTcp(sock);
638+
}
639+
return err;
640+
}
641+
642+
597643
int start_server_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
598644
wl_err_t err = WL_FAILURE;
599645
tParam* params = (tParam*) buf;
600646
if (numParam == 2)
601647
{
602648
GET_PARAM_NEXT(INT, params, port);
603649
GET_PARAM_NEXT(BYTE, params, sock);
604-
605-
struct ip_addr addr = { 0 };
606-
uint16_t buflen = 1024;
607-
uint16_t nbuf = 1024;
608-
#ifdef _APP_DEBUG_
609-
int verbose = 1;
610-
#else
611-
int verbose = 0;
612-
#endif
613-
int udp = 0;
614-
int mode = 1; //RECEIVE
615-
void* _ttcp = NULL;
616-
617-
if (sock >= MAX_SOCK_NUM)
618-
return WIFI_SPI_ERR;
619-
620-
INFO_SPI("Start Server [%d, %d]\n", port, sock);
621-
if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0)
622-
{
623-
if (sock < MAX_SOCK_NUM)
624-
mapSockTCP[sock]=_ttcp;
625-
INFO_SPI("Map [%d, %p]\n", sock, _ttcp);
626-
err = WL_SUCCESS;
627-
}
650+
err = start_server_tcp(port, sock);
628651
}
629652
return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
630653
}
@@ -655,15 +678,14 @@ int start_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
655678
if (sock >= MAX_SOCK_NUM)
656679
return WIFI_SPI_ERR;
657680

658-
INFO_SPI("Start Client [0x%x, %d, %d]\n", addr, port, sock);
659681
if (ard_tcp_start((struct ip_addr)addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0)
660682
{
661-
if (sock < MAX_SOCK_NUM)
662-
mapSockTCP[sock]=_ttcp;
663-
INFO_SPI("Map [%d, %p]\n", sock, _ttcp);
683+
INFO_SPI("Start Client [0x%x, %d, %d] OK!\n", addr, port, sock);
684+
setMapSock(sock, _ttcp);
664685
err = WL_SUCCESS;
665686
}else{
666-
mapSockTCP[sock]=0;
687+
INFO_SPI("Start Client [0x%x, %d, %d] FAILED!\n", addr, port, sock);
688+
clearMapSockTcp(sock);
667689
}
668690
}
669691
return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
@@ -682,9 +704,8 @@ int stop_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
682704

683705
if (sock < MAX_SOCK_NUM)
684706
{
685-
_ttcp = mapSockTCP[sock];
707+
_ttcp = getTTCP(sock);
686708
ard_tcp_stop(_ttcp);
687-
mapSockTCP[sock]=0;
688709
err = WL_SUCCESS;
689710
}
690711
}
@@ -1032,10 +1053,11 @@ cmd_spi_state_t get_state_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_
10321053
uint8_t _state = CLOSED;
10331054
if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
10341055
{
1035-
_state = getStateTcp(mapSockTCP[(uint8_t)recv[4]], 0);
1056+
_state = getStateTcp(getTTCP((uint8_t)recv[4]), 0);
10361057
}
10371058
PUT_DATA_BYTE(_state, reply, 3);
10381059
END_HEADER_REPLY(reply, 5, *count);
1060+
INFO_SPI("state:%d\n", _state);
10391061

10401062
return SPI_CMD_DONE;
10411063
}
@@ -1049,7 +1071,7 @@ cmd_spi_state_t get_client_state_tcp_cmd_cb(char* recv, char* reply, void* ctx,
10491071
uint8_t _state = CLOSED;
10501072
if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
10511073
{
1052-
void * p= mapSockTCP[(uint8_t)recv[4]];
1074+
void * p= getTTCP((uint8_t)recv[4]);
10531075
// get if we are in server or Transmit mode (0)
10541076
if (getModeTcp(p) == TTCP_MODE_TRANSMIT)
10551077
{
@@ -1067,6 +1089,7 @@ cmd_spi_state_t get_client_state_tcp_cmd_cb(char* recv, char* reply, void* ctx,
10671089
}
10681090
PUT_DATA_BYTE(_state, reply, 3);
10691091
END_HEADER_REPLY(reply, 5, *count);
1092+
INFO_SPI("state:%d\n", _state);
10701093

10711094
return SPI_CMD_DONE;
10721095
}
@@ -1084,6 +1107,9 @@ cmd_spi_state_t avail_data_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16
10841107
}
10851108
PUT_DATA_BYTE(dataAvail, reply, 3);
10861109
END_HEADER_REPLY(reply, 5, *count);
1110+
1111+
INFO_SPI("dataAvail:%d\n", dataAvail);
1112+
10871113
return SPI_CMD_DONE;
10881114
}
10891115

@@ -1128,7 +1154,7 @@ cmd_spi_state_t data_sent_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_
11281154
uint8_t dataSent = 0;
11291155
if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
11301156
{
1131-
dataSent = isDataSent(mapSockTCP[(uint8_t)recv[4]]);
1157+
dataSent = isDataSent(getTTCP((uint8_t)recv[4]));
11321158
}
11331159
PUT_DATA_BYTE(dataSent, reply, 3);
11341160
END_HEADER_REPLY(reply, 5, *count);
@@ -1509,7 +1535,7 @@ inline int spi_slaveReceiveInt(volatile avr32_spi_t *spi, bool startRecvd)
15091535
}
15101536

15111537
/* break on buffer overflow */
1512-
if (receivedChars > _BUFFERSIZE) {
1538+
if (receivedChars >= _BUFFERSIZE) {
15131539
err = SPI_ERROR_OVERRUN_AND_MODE_FAULT;
15141540
break;
15151541
}
@@ -1683,9 +1709,9 @@ int initSpi()
16831709
#endif
16841710
init_spi_cmds();
16851711

1686-
memset(_receiveBuffer, 0, _BUFFERSIZE);
1687-
memset(buf, 0, CMD_MAX_LEN);
1688-
memset(reply, 0, REPLY_MAX_LEN);
1712+
memset(_receiveBuffer, 0, sizeof(_receiveBuffer));
1713+
memset(buf, 0, sizeof(buf));
1714+
memset(reply, 0, sizeof(reply));
16891715

16901716
initMapSockTcp();
16911717

wifiHD/src/ard_spi.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,12 @@ void spi_poll(struct netif* netif);
5656

5757
int spi_slaveReceive(volatile avr32_spi_t *spi);
5858

59-
cmd_state_t cmd_statSpi(int argc, char* argv[], void* ctx);
60-
61-
cmd_state_t cmd_resetStatSpi(int argc, char* argv[], void* ctx);
62-
63-
cmd_state_t cmd_gethostbyname(int argc, char* argv[], void* ctx);
64-
65-
cmd_state_t cmd_setDnsServer(int argc, char* argv[], void* ctx);
66-
6759
void showTTCPstatus();
6860

6961
int getSock(void * _ttcp);
7062

7163
void clearMapSockTcp(uint8_t sock);
7264

65+
int start_server_tcp(uint16_t port, uint8_t sock);
66+
7367
#endif /* ARD_SPI_H_ */

wifiHD/src/cmd_wl.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include "lwip/netif.h"
4343
#include "lwip/dns.h"
4444
#include "debug.h"
45+
#include "ard_spi.h"
4546

4647
extern void showTTCPstatus();
4748

@@ -368,6 +369,36 @@ cmd_setDnsServer(int argc, char* argv[], void* ctx)
368369
return CMD_DONE;
369370
}
370371

372+
/**
373+
*
374+
*/
375+
cmd_state_t
376+
cmd_startTcpSrv(int argc, char* argv[], void* ctx)
377+
{
378+
const char *usage = "usage: startTcpSrv <port> <sock>\n";
379+
380+
int port = 0;
381+
int sock = 0;
382+
383+
if (argc < 3) {
384+
printk(usage);
385+
return CMD_DONE;
386+
}
387+
388+
/* TCP port */
389+
port = atoi(argv[1]);
390+
/* socket index */
391+
sock = atoi(argv[2]);
392+
393+
printk("Start TCP server on port %d sock %d\n", port, sock);
394+
if (start_server_tcp(port, sock) != -1)
395+
{
396+
printk("Start TCP server on port %d sock %d FAILED\n", port, sock);
397+
}
398+
return CMD_DONE;
399+
}
400+
401+
371402
#endif
372403

373404

wifiHD/src/cmd_wl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ cmd_state_t cmd_setpass(int argc, char* argv[], void* ctx);
5050
cmd_state_t cmd_delpass(int argc, char* argv[], void* ctx);
5151
cmd_state_t cmd_debug(int argc, char* argv[], void* ctx);
5252
cmd_state_t cmd_debug_toggle(int argc, char* argv[], void* ctx);
53+
cmd_state_t cmd_statSpi(int argc, char* argv[], void* ctx);
54+
cmd_state_t cmd_resetStatSpi(int argc, char* argv[], void* ctx);
55+
cmd_state_t cmd_gethostbyname(int argc, char* argv[], void* ctx);
56+
cmd_state_t cmd_setDnsServer(int argc, char* argv[], void* ctx);
57+
cmd_state_t cmd_startTcpSrv(int argc, char* argv[], void* ctx);
5358
#ifdef WFE_6_12
5459
cmd_state_t cmd_ibss(int argc, char* argv[], void* ctx);
5560
#endif

wifiHD/src/lwipopts.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@
424424
#undef DHCP_DOES_ARP_CHECK
425425

426426
#if 0
427-
//#define LWIP_DEBUG 1
427+
#define LWIP_DEBUG 1
428428
//#define NETIF_DEBUG LWIP_DBG_ON
429429
//#define DHCP_DEBUG LWIP_DBG_ON
430430
//#define ICMP_DEBUG LWIP_DBG_ON
@@ -434,8 +434,8 @@
434434
//#define TCP_CWND_DEBUG LWIP_DBG_ON
435435
//#define ETHARP_DEBUG LWIP_DBG_ON
436436
//#define PBUF_DEBUG LWIP_DBG_ON
437-
//#define TCP_INPUT_DEBUG LWIP_DBG_ON
438-
//#define TCP_OUTPUT_DEBUG LWIP_DBG_ON
437+
#define TCP_INPUT_DEBUG LWIP_DBG_ON
438+
#define TCP_OUTPUT_DEBUG LWIP_DBG_ON
439439
#endif
440440

441441
#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */

wifiHD/src/main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ void initShell()
302302
#ifdef _DNS_CMD_
303303
console_add_cmd("getHost", cmd_gethostbyname, NULL);
304304
console_add_cmd("setDNS", cmd_setDnsServer, NULL);
305+
console_add_cmd("startTcpSrv", cmd_startTcpSrv, NULL);
305306
#endif
306307
}
307308

0 commit comments

Comments
 (0)