This commit is contained in:
pvvx 2016-12-05 11:48:41 +03:00
parent ad9b495d7e
commit 494a7e1b39
31 changed files with 391 additions and 851 deletions

View file

@ -10,6 +10,10 @@
#include "osdep_service.h"
#include "osdep_api.h"
#include "tcpip.h"
#include "lwip/tcp_impl.h"
#ifndef ATCMD_VER
#define ATVER_1 1
@ -2096,6 +2100,113 @@ int atcmd_lwip_restore_from_flash(void){
}
#endif
//------------------------------------------------------------ Add pvvx Lwip Info
/* Get one byte from the 4-byte address */
#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0])
#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1])
#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2])
#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3])
/* These are cast to u16_t, with the intent that they are often arguments
* to printf using the U16_F format from cc.h. */
#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr))
#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr))
#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr))
#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr))
#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \
ip4_addr2_16(ipaddr), \
ip4_addr3_16(ipaddr), \
ip4_addr4_16(ipaddr)
#define IPSTR "%d.%d.%d.%d"
extern const char * const tcp_state_str[];
/*
static const char * const tcp_state_str[] = {
"CLOSED",
"LISTEN",
"SYN_SENT",
"SYN_RCVD",
"ESTABLISHED",
"FIN_WAIT_1",
"FIN_WAIT_2",
"CLOSE_WAIT",
"CLOSING",
"LAST_ACK",
"TIME_WAIT"
};
*/
/******************************************************************************
* FunctionName : debug
* Parameters :
* Returns :
*******************************************************************************/
void print_udp_pcb(void)
{
struct udp_pcb *pcb;
bool prt_none = true;
rtl_printf("UDP pcbs:\n");
for(pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
rtl_printf("flg:%02x\t" IPSTR ":%d\t" IPSTR ":%d\trecv:%p\n", pcb->flags, IP2STR(&pcb->local_ip), pcb->local_port, IP2STR(&pcb->remote_ip), pcb->remote_port, pcb->recv );
prt_none = false;
}
if(prt_none) rtl_printf("none\n");
}
/******************************************************************************
* FunctionName : debug
* Parameters :
* Returns :
*******************************************************************************/
void print_tcp_pcb(void)
{
struct tcp_pcb *pcb;
rtl_printf("Active PCB states:\n");
bool prt_none = true;
for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
rtl_printf("Port %d|%d\tflg:%02x\ttmr:%p\t%s\n", pcb->local_port, pcb->remote_port, pcb->flags, pcb->tmr, tcp_state_str[pcb->state]);
prt_none = false;
}
if(prt_none) rtl_printf("none\n");
rtl_printf("Listen PCB states:\n");
prt_none = true;
for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) {
rtl_printf("Port %d|%d\tflg:%02x\ttmr:%p\t%s\n", pcb->local_port, pcb->remote_port, pcb->flags, pcb->tmr, tcp_state_str[pcb->state]);
prt_none = false;
}
if(prt_none) rtl_printf("none\n");
rtl_printf("TIME-WAIT PCB states:\n");
prt_none = true;
for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
rtl_printf("Port %d|%d\tflg:%02x\ttmr:%p\t%s\n", pcb->local_port, pcb->remote_port, pcb->flags, pcb->tmr, tcp_state_str[pcb->state]);
prt_none = false;
}
if(prt_none) rtl_printf("none\n");
}
/******************************************************************************
* FunctionName : debug
* Parameters :
* Returns :
*******************************************************************************/
void print_netif(int inum)
{
rtl_printf("Net Info[%d]: " IPSTR, inum, IP2STR(&xnetif[inum].ip_addr));
rtl_printf(", " IPSTR ", " IPSTR "\n", IP2STR(&xnetif[inum].netmask), IP2STR(&xnetif[inum].gw));
}
/******************************************************************************
* FunctionName : debug
* Parameters :
* Returns :
*******************************************************************************/
//------------------------------------------------------------------------------
void fATPx(void *arg) // Info Lwip
{
printf("=== LwIP Info ===\n");
print_netif(0);
print_netif(1);
print_udp_pcb();
print_tcp_pcb();
}
//------------------------------------------------------------ Add pvvx end
#if CONFIG_TRANSPORT
log_item_t at_transport_items[ ] = {
#if ATCMD_VER == ATVER_1
@ -2123,7 +2234,8 @@ log_item_t at_transport_items[ ] = {
{"ATPI", fATPI,},//printf connection status
{"ATPU", fATPU,}, //transparent transmission mode
{"ATPL", fATPL,}, //lwip auto reconnect setting
#endif
#endif
{"ATP?", fATPx,}, //Lwip pcb Info
};
#if ATCMD_VER == ATVER_2

View file

@ -49,35 +49,45 @@ struct _dev_id2name {
u8 id;
u8 *name;
};
struct _dev_id2name dev_id2name[] = {
{0, "UART0"}, {1, "UART1"},{2, "UART2"},
{8, "SPI0"}, {9, "SPI1"}, {10, "SPI2"},
{15, "SPI0_MCS"},
{16, "I2C0"}, {17, "I2C1"}, {18, "I2C2"}, {19, "I2C3"},
{24, "I2S0"}, {25, "I2S1"},
{28, "PCM0"}, {29, "PCM1"},
{32, "ADC0"},
{36, "DAC0"}, {37, "DAC1"},
{64, "SDIOD"}, {65, "SDIOH"},
{66, "USBOTG"},
{88, "MII"},
{96, "WL_LED"},
{104,"WL_ANT0"}, {105,"WL_ANT1"},
{108,"WL_BTCOEX"}, {109,"WL_BTCMD"},
{112,"NFC"},
{160,"PWM0"}, {161,"PWM1"}, {162,"PWM2"}, {163,"PWM3"},
{164,"ETE0"}, {165,"ETE1"}, {166,"ETE2"}, {167,"ETE3"},
{168,"EGTIM"},
{196,"SPI_FLASH"},
{200,"SDR"},
{216,"JTAG"},
{217,"TRACE"},
{220,"LOG_UART"}, {221,"LOG_UART_IR"},
{224,"SIC"},
{225,"EEPROM"},
{226,"DEBUG"},
{UART0, "UART0"}, {UART1, "UART1"}, {UART2, "UART2"},
{SPI0, "SPI0"}, {SPI1, "SPI1"}, {SPI2, "SPI2"},
{SPI0_MCS, "SPI0_MCS"},
{I2C0, "I2C0"}, {I2C1, "I2C1"}, {I2C2, "I2C2"}, {I2C3, "I2C3"},
{I2S0, "I2S0"}, {I2S1, "I2S1"},
{PCM0, "PCM0"}, {PCM1, "PCM1"},
{ADC0, "ADC0"},
{DAC0, "DAC0"}, {DAC1, "DAC1"},
{SDIOD, "SDIOD"}, {SDIOH, "SDIOH"},
{USBOTG, "USBOTG"},
{MII, "MII"},
{WL_LED, "WL_LED"},
{WL_ANT0,"WL_ANT0"}, {WL_ANT1,"WL_ANT1"},
{WL_BTCOEX,"WL_BTCOEX"}, {WL_BTCMD,"WL_BTCMD"},
{NFC,"NFC"},
{PWM0,"PWM0"}, {PWM1,"PWM1"}, {PWM2,"PWM2"}, {PWM3,"PWM3"},
{ETE0,"ETE0"}, {ETE1,"ETE1"}, {ETE2,"ETE2"}, {ETE3,"ETE3"},
{EGTIM,"EGTIM"},
{SPI_FLASH,"SPI_FLASH"},
{SDR,"SDR"},
{JTAG,"JTAG"},
{TRACE,"TRACE"},
{LOG_UART,"LOG_UART"}, {LOG_UART_IR,"LOG_UART_IR"},
{SIC,"SIC"},
{EEPROM,"EEPROM"},
{DEBUG,"DEBUG"},
{255,""}};
#include "rtl8195a.h"
#include "rtl8195a_sdio_host.h"
#include "hal_sdio_host.h"
#include "sd.h"
#include "sdio_host.h"
extern HAL_SDIO_HOST_ADAPTER SdioHostAdapter;
extern void SdioHostSdBusPwrCtrl(uint8_t En);
extern int SdioHostSdClkCtrl(void *Data, int En, int Divisor);
void fATXX(void *arg)
{
uint32 x = 0;
@ -105,14 +115,21 @@ void fATXX(void *arg)
}
printf("Dev %s, state = %s\n", dev_id2name[i].name, s);
}
for(i = 0; i < _PORT_MAX; i++) printf("Port %c state: 0x%04x\n", i+'A', GPIOState[i]);
}
#ifdef CONFIG_SDR_EN
extern s32 MemTest(u32 LoopCnt);
void fATSM(void *arg)
{
MemTest(1);
}
#endif
//-------- AT SYS commands ---------------------------------------------------------------
void fATSD(void *arg)
{
int argc = 0;
char *argv[MAX_ARGC] = {0};
SD_DeInit();
AT_DBG_MSG(AT_FLAG_DUMP, AT_DBG_ALWAYS, "[ATSD]: _AT_SYSTEM_DUMP_REGISTER_");
if(!arg){
AT_DBG_MSG(AT_FLAG_DUMP, AT_DBG_ALWAYS, "[ATSD] Usage: ATSD=REGISTER");
@ -123,22 +140,24 @@ void fATSD(void *arg)
CmdDumpWord(argc-1, (unsigned char**)(argv+1));
}
#if ATCMD_VER == ATVER_1
void fATSE(void *arg)
#if ATCMD_VER == ATVER_2
void fATXD(void *arg)
{
int argc = 0;
char *argv[MAX_ARGC] = {0};
AT_DBG_MSG(AT_FLAG_EDIT, AT_DBG_ALWAYS, "[ATSE]: _AT_SYSTEM_EDIT_REGISTER_");
AT_DBG_MSG(AT_FLAG_EDIT, AT_DBG_ALWAYS, "[ATXD]: _AT_SYSTEM_WRITE_REGISTER_");
if(!arg){
AT_DBG_MSG(AT_FLAG_EDIT, AT_DBG_ALWAYS, "[ATSE] Usage: ATSE=REGISTER[VALUE]");
AT_DBG_MSG(AT_FLAG_EDIT, AT_DBG_ALWAYS, "[ATXD] Usage: ATXD=REGISTER,VALUE");
return;
}
argc = parse_param(arg, argv);
if(argc == 3)
CmdWriteWord(argc-1, (unsigned char**)(argv+1));
}
#endif
#if ATCMD_VER == ATVER_1
void fATSC(void *arg)
{
@ -1232,6 +1251,7 @@ log_item_t at_sys_items[] = {
{"ATSX", fATSX,}, // uart xmodem upgrade
#endif
{"ATSD", fATSD,}, // Dump register
{"ATXD", fATXD,}, // Write register
#endif // end of #if ATCMD_VER == ATVER_1
// Following commands exist in two versions
@ -1240,6 +1260,9 @@ log_item_t at_sys_items[] = {
#endif
{"ATST", fATST}, // add pvvx: mem info
{"ATXX", fATXX}, // test
#ifdef CONFIG_SDR_EN
{"ATSM", fATSM} // memtest
#endif
};
#if ATCMD_VER == ATVER_2

View file

@ -1484,6 +1484,35 @@ void print_wlan_help(void *arg){
#elif ATCMD_VER == ATVER_2 // UART module at command
// wifi promisc
// Usage: ATWM=DURATION_SECONDS[with_len]
#ifdef CONFIG_PROMISC
void fATWM(void *arg){
int argc, error_no = 0;
char *argv[MAX_ARGC] = {0};
argv[0] = "wifi_promisc";
printf("[ATWM]: _AT_WLAN_PROMISC_\n");
if(!arg){
AT_DBG_MSG(AT_FLAG_WIFI, AT_DBG_ERROR,
"[ATWM]Usage: ATWM=DURATION_MSECONDS[with_len]\n");
#if CONFIG_INIC_CMD_RSP
inic_c2h_msg("ATWM", RTW_BADARG, NULL, 0);
#endif
error_no = 1;
goto exit;
}
if((argc = parse_param(arg, argv)) > 1){
cmd_promisc(argc, argv);
}
exit:
if(error_no==0)
at_printf("\r\n[ATWM] OK");
else
at_printf("\r\n[ATWM] ERROR:%d",error_no);
return;
}
#endif
//ATPA=<ssid>,<pwd>,<chl>,<hidden>[,<max_conn>]
void fATPA(void *arg)
{
@ -2470,6 +2499,86 @@ exit:
return;
}
//------------------------------------------------------------
#if CONFIG_ENABLE_P2P
void fATWG(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWG]: _AT_WLAN_P2P_START_\n");
argv[argc++] = "p2p_start";
cmd_wifi_p2p_start(argc, argv);
}
void fATWg(void *arg){
int argc = 0;
char *argv[4];
int ret =0;
printf("[ATWg]: _AT_WLAN_P2P_AUTO_GO_START_\n");
argv[argc++] = "p2p_auto_go_start";
ret = cmd_wifi_p2p_auto_go_start(argc, argv);
if(ret < 0)
printf("[ATWg]: Nothing to do. Please enter ATWG to initialize P2P.\n");
}
void fATWH(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWH]: _AT_WLAN_P2P_STOP_\n");
argv[argc++] = "p2p_stop";
cmd_wifi_p2p_stop(argc, argv);
}
void fATWJ(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWJ]: _AT_WLAN_P2P_CONNECT_\n");
argv[0] = "p2p_connect";
if(!arg){
printf("ATWc=[DEST_MAC,pbc/pin]\n");
return;
}
if((argc = parse_param(arg, argv)) > 1){
cmd_p2p_connect(argc, argv);
}
}
void fATWK(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWK]: _AT_WLAN_P2P_DISCONNECT_\n");
argv[argc++] = "p2p_disconnect";
cmd_p2p_disconnect(argc, argv);
}
void fATWN(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWN]: _AT_WLAN_P2P_INFO_\n");
argv[argc++] = "p2p_info";
cmd_p2p_info(argc, argv);
}
void fATWF(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWF]: _AT_WLAN_P2P_FIND_\n");
argv[argc++] = "p2p_find";
cmd_p2p_find(argc, argv);
}
void fATWL(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWL]: _AT_WLAN_P2P_LISTEN_\n");
argv[argc++] = "p2p_listen";
cmd_p2p_listen(argc, argv);
}
void fATWP(void *arg){
int argc = 0;
char *argv[4];
printf("[ATWP]: _AT_WLAN_P2P_PEERS_\n");
argv[argc++] = "p2p_peers";
cmd_p2p_peers(argc, argv);
}
#endif // CONFIG_ENABLE_P2P
//-----------------------------------------------------
void print_wlan_help(void *arg){
at_printf("\r\nWLAN AT COMMAND SET:");
at_printf("\r\n==============================");
@ -2693,9 +2802,23 @@ log_item_t at_wifi_items[ ] = {
{"ATPW", fATPW,}, // set Wifi mode
{"ATWD", fATWD,}, // WIFI disconnect
{"ATWS", fATWS,}, // WIFI scan
#if CONFIG_ENABLE_P2P
{"ATWG", fATWG,}, //p2p start
{"ATWH", fATWH,}, //p2p stop
{"ATWJ", fATWJ,}, //p2p connect
{"ATWK", fATWK,}, //p2p disconnect
{"ATWN", fATWN,}, //p2p info
{"ATWF", fATWF,}, //p2p find
{"ATWg", fATWg,}, //p2p auto go start
{"ATWL", fATWL,}, //p2p listen
{"ATWP", fATWP,}, //p2p peers
#endif
#ifdef CONFIG_PROMISC
{"ATWM", fATWM,}, // WIFI promisc Usage: ATWM=DURATION_SECONDS[with_len]
#endif
{"ATW?", fATWx,}, // WIFI Info
#if (CONFIG_INCLUDE_SIMPLE_CONFIG)
{"ATWQ", fATWQ,}, // wifi simpleconfig
{"ATWQ", fATWQ } // wifi simpleconfig
#endif // #if (CONFIG_INCLUDE_SIMPLE_CONFIG)
#endif // #if CONFIG_WLAN
#endif // end of #if ATCMD_VER == ATVER_1