Exemple #1
0
void
ts_error(int state, const char *format,...)
{
	va_list		args;
	int			tlen = 128,
				len = 0;
	char	   *buf;

	reset_cfg();
	reset_dict();
	reset_prs();

	va_start(args, format);
	buf = palloc(tlen);
	len = vsnprintf(buf, tlen - 1, format, args);
	if (len >= tlen)
	{
		tlen = len + 1;
		buf = repalloc(buf, tlen);
		vsnprintf(buf, tlen - 1, format, args);
	}
	va_end(args);

	/* ?? internal error ?? */
	elog(state, "%s", buf);
	pfree(buf);
}
int16 iot_atcmd_parser(puchar cmd_buf, int16 AtCmdLen)
{
    int16 ret_code = 0;
#if (ATCMD_CH_SWITCH_SUPPORT == 1)
    int8 cTypeLen = 0;
#endif

    //BUFFER_INFO  *rx_ring = &(UARTPort.Rx_Buffer);
    //PKT_DESC     *rx_desc = &(UARTPort.Rx_desc);

    cmd_buf[AtCmdLen] = '\0';
    //printf_high("AT command: %s , len=%d \n",cmd_buf, AtCmdLen);
    //printf_high("ring buf:pkt=%d,R=%d,W=%d\n", rx_desc->pkt_num,BRead(rx_ring),BWrite(rx_ring));

    /* The current process is not encough*/
    /* need improve for the command type and paramters parsing */

    /* Format:    AT#Default+enter*/
    if (!memcmp(cmd_buf,AT_CMD_DEFAULT,sizeof(AT_CMD_DEFAULT)-1)) {
        reset_cfg();
        iot_linkdown(0);   //disable Link Down to fix STA machine keeps SMNT and no reponse
    }
#if (ATCMD_SET_SMNT_SUPPORT == 1)
    /* Format:  AT#Smnt+enter*/
    else if (!memcmp(cmd_buf,AT_CMD_SET_SMNT,sizeof(AT_CMD_SET_SMNT)-1)) {
        ret_code = iot_atcmd_exec_smnt(cmd_buf);
    }
#endif
#if (ATCMD_GET_VER_SUPPORT == 1)
    /* Format:  AT#Ver+enter*/
    else if (!memcmp(cmd_buf,AT_CMD_VER,sizeof(AT_CMD_VER)-1)) {
        ret_code = iot_atcmd_exec_ver(cmd_buf);
    }
#endif
#if (ATCMD_NET_MODE_SUPPORT == 1)
    else if (!memcmp(cmd_buf,AT_CMD_NETMODE,sizeof(AT_CMD_NETMODE)-1)) {
        ret_code = iot_exec_atcmd_netmode(cmd_buf, AtCmdLen);
    }
#endif
#if (ATCMD_REBOOT_SUPPORT == 1)
    /* Format:  AT#Reboot+enter*/
    else if (!memcmp(cmd_buf,AT_CMD_REBOOT,sizeof(AT_CMD_REBOOT)-1)) {
        iot_atcmd_exec_reboot();
    }
#endif
#if (ATCMD_CH_SWITCH_SUPPORT == 1)
    /* Format:  AT#Channel -b0 -c6+enter */
    //-b:  [0/1]     0=BW_20,     1=BW_40
    //-c:  [1~14]
    else if (!memcmp(cmd_buf,AT_CMD_CHANNEL,sizeof(AT_CMD_CHANNEL)-1)) {
        ret_code = iot_exec_atcmd_ch_switch(cmd_buf, AtCmdLen);
    }
#endif
#if    (ATCMD_SOFTAP_SUPPORT == 1) && (ATCMD_SUPPORT == 1)
    /* Format:    AT#SoftAPConf -s[ssid] -c[channel] -a[auth_mode] -p[password]+enter*/
    /*                 now, only support Open mode without password */
    /* Format:    AT#SoftAPConf -m1+enter    --->store current AP setting to flash*/
    /* Format:    AT#SoftAPConf -d1+enter     --->clear AP setting in flash*/
    else if (!memcmp(cmd_buf,AT_CMD_SOFTAP_CFG, sizeof(AT_CMD_SOFTAP_CFG)-1)) {
        ret_code = iot_exec_atcmd_conf_softap(cmd_buf, AtCmdLen);

        if (ret_code == 0)
            printf_high("Config SoftAP success\n");
        else
            printf_high("Config SoftAP fail: %d\n", ret_code);
    }
#endif
#if (ATCMD_FLASH_SUPPORT == 1)
    /* Format:    AT#FLASH -r6 +enter*/
    /* Format:    AT#FLASH -s6 -v56+enter*/
    else if (!memcmp(cmd_buf,AT_CMD_FLASH_SET,sizeof(AT_CMD_FLASH_SET)-1)) {
        //printf_high("Flash Write/Read \n");
        ret_code = iot_atcmd_exec_flash(cmd_buf, AtCmdLen);
    }
#endif
#if (ATCMD_EFUSE_SUPPORT == 1)
    /* Format:    AT#EFUSE -r6 +enter*/
    /* Format:    AT#EFUSE -s6 -v56 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_EFUSE_SET,sizeof(AT_CMD_EFUSE_SET)-1)) {
        //printf_high("Efuse Write/Read \n");
        ret_code = iot_exec_atcmd_efuse_set(cmd_buf, AtCmdLen);
    }
#endif
#if (ATCMD_ATE_SUPPORT == 1)  //20140528 delete old ATE calibration cmd handler,  be instead of iwpriv cmd format handler
    /* Format:    AT#ATECAL -C1 -m1 -c7 -g0 -f65 -p30 -n100000+enter*/
    else if (!memcmp(cmd_buf,AT_CMD_ATE_CAL,sizeof(AT_CMD_ATE_CAL)-1)) {
        //printf_high("ATECAL \n");
        gATEInfo.ATECmdFmt = ATE_CMD_TYPE_AT;
        ret_code = iot_exec_atcmd_ate_cal2(cmd_buf, AtCmdLen);
    }
#endif
#if (ATCMD_UART_SUPPORT == 1) && (UART_SUPPORT == 1)
    /* Format:    AT#Uart -b57600 -w7 -p1 -s1 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_UART,sizeof(AT_CMD_UART)-1)) {
        ret_code = iot_exec_atcmd_uart(cmd_buf, AtCmdLen);
    }
#endif
#if ((ATCMD_PS_SUPPORT == 1) && (MT7681_POWER_SAVING == 1))
    /* Format:    AT#PowerSaving -l0 -t2000+enter*/ /* sleepTime = us */
    else if (!memcmp(cmd_buf,AT_CMD_PS_SET,sizeof(AT_CMD_PS_SET)-1)) {
        ret_code = iot_exec_atcmd_ps_set(cmd_buf, AtCmdLen);
    }
#endif

    /*Only for Debug*/
#if (ATCMD_ATE_MBR_CTL == 1)
    else if (!memcmp(cmd_buf,AT_CMD_MAC_SET,sizeof(AT_CMD_MAC_SET)-1)) {
        ret_code = iot_exec_atcmd_mac_rw(cmd_buf, AtCmdLen);
    } else if (!memcmp(cmd_buf,AT_CMD_BBP_SET,sizeof(AT_CMD_BBP_SET)-1)) {
        ret_code = iot_exec_atcmd_bbp_rw(cmd_buf, AtCmdLen);
    } else if (!memcmp(cmd_buf,AT_CMD_RF_SET,sizeof(AT_CMD_RF_SET)-1)) {
        ret_code = iot_exec_atcmd_rf_rw(cmd_buf, AtCmdLen);
    }
#endif

    /*jinchuan  These functions developping is pending, no plan to use */
#if  0 //(ATCMD_TCPIP_SUPPORT == 1) && (CFG_SUPPORT_TCPIP == 1)

    /* Format:    AT#Tcp_Connect -a192.168.1.131 -p1234 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_TCPCONNECT,sizeof(AT_CMD_TCPCONNECT)-1)) {
        iot_tcpip_connect(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Tcp_Send -s1 -dtest data +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_TCPSEND,sizeof(AT_CMD_TCPSEND)-1)) {
        iot_tcpip_send(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Tcp_Listen -p7682 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_TCPLISTEN,sizeof(AT_CMD_TCPLISTEN)-1)) {
        iot_tcpip_listen(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Tcp_Disconnect -s0 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_TCPDISCONNECT,sizeof(AT_CMD_TCPDISCONNECT)-1)) {
        iot_tcpip_disconnect(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Udp_Create -a192.168.1.132 -r1234 -l4321 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_UDPCREATE,sizeof(AT_CMD_UDPCREATE)-1)) {
        iot_tcpip_udp_creat(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Udp_Remove -s130 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_UDPREMOVE,sizeof(AT_CMD_UDPREMOVE)-1)) {
        iot_tcpip_udp_del(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#Udp_Send -s130 -d1234 -a192.168.1.132 -r1234 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_UDPSEND,sizeof(AT_CMD_UDPSEND)-1)) {
        iot_tcpip_udp_send(cmd_buf, AtCmdLen);
    }
    /* Format:    AT#StaticIP -i192.168.1.100 -m255.255.255.0 -g192.168.1.1 -d172.26.2.185 +enter*/
    else if (!memcmp(cmd_buf,AT_CMD_STATIC_IP,sizeof(AT_CMD_STATIC_IP)-1)) {
        iot_tcpip_set_static_ip(cmd_buf, AtCmdLen);
    } else if (!memcmp(cmd_buf,AT_CMD_NETSTAT,sizeof(AT_CMD_NETSTAT)-1)) {

        iot_tcpip_netstat(cmd_buf, AtCmdLen);
    }
#endif
#if (ATCMD_UART_FW_SUPPORT == 1) && (UART_SUPPORT == 1)
    /* Format:    AT#UpdateFW+enter   (the range of type is [1~7] ) */
    else if (!memcmp(cmd_buf,AT_CMD_UPDATEFW,sizeof(AT_CMD_UPDATEFW)-1)) {
        iot_xmodem_update_fw_start(); /*Disable Uart Rx Interrupt*/
        iot_xmodem_update_fw();
        iot_xmodem_update_fw_stop();  /*Restore Uart Rx Interrupt*/
    }
#endif
#if (ATCMD_JTAGMODE_SUPPORT == 1)
    else if (!memcmp(cmd_buf,AT_CMD_JTAGMODE,sizeof(AT_CMD_JTAGMODE)-1)) {
        iot_exec_atcmd_jtag_switch(cmd_buf, AtCmdLen);
    }
#endif

    return ret_code;
}