Beispiel #1
0
static int get_mac_addr(void)
{
	char *words[6]={NULL};
	char rsp[64]={0};
	char is_ap_mode=0;

	if(hfat_send_cmd("AT+WMODE\r\n",sizeof("AT+WMODE\r\n"),rsp,64)!=0)
		return 0;

	if(hfat_get_words(rsp,words, 6)>0)
	{
		if(strcmp("STA",words[1])==0)
		{
			is_ap_mode=0;
		}
	}

	/* get mac as device id */
	//u_printf("kim:words start\r\n");
	if(is_ap_mode)
	{
		hfat_send_cmd("AT+WAMAC\r\n",sizeof("AT+WAMAC\r\n"),rsp,64);
	}
	else
		hfat_send_cmd("AT+WSMAC\r\n",sizeof("AT+WSMAC\r\n"),rsp,64);	
	
		if(hfat_get_words(rsp,words, 6)>0)
	{
			strcpy(MAC,words[1]);
	}		
}
Beispiel #2
0
static int get_if_ip_addr(void)
{
	char *words[6]={NULL};
	char rsp[64]={0};
	char is_ap_mode=0;

	if(hfat_send_cmd("AT+WMODE\r\n",sizeof("AT+WMODE\r\n"),rsp,64)!=0)
		return 0;

	if(hfat_get_words(rsp,words, 6)>0)
	{
		if(strcmp("STA",words[1])==0)
		{
			is_ap_mode=0;
		}
	}

	if(is_ap_mode)
	{
		hfat_send_cmd("AT+LANN\r\n",sizeof("AT+LANN\r\n"),rsp,64);
	}
	else
		hfat_send_cmd("AT+WANN\r\n",sizeof("AT+WANN\r\n"),rsp,64);
	
	if(hfat_get_words(rsp,words, 6)>0)
	{
		////u_printf("\nresult:%s\nmode:%s\nIP:%s\nMASK:%s\nGW:%s\n",words[0],words[1],words[2],words[3],words[4]);
				
		if(is_ap_mode)
		{
			 memcpy(local_ip,words[1],strlen(words[1]));
			 local_ip[strlen(words[1])] = '\0';
		}
		else
		{
			 memcpy(local_ip,words[2],strlen(words[2]));			
			 local_ip[strlen(words[2])] = '\0';
		}
		if(is_ap_mode)
			return inet_addr(words[1]);
		else
			return inet_addr(words[2]);
	}
	
	return 0;
}
Beispiel #3
0
static int USER_FUNC assis_ex_recv_callback(uint32_t event,char *data,uint32_t len,uint32_t buf_len)
{
	if(event == HFNET_ASSIS_DATA_READY)
	{
		char tmp[64]={0};
		char rsp[64]={0};
		char *ip[6]={0};
		char *mac[3]={0};
		char response[40]={0};

		uint32_t ip_addr;
		uint16_t port;
 	
		MEMCPY(&ip_addr, data+len, sizeof(struct ip_addr));
		Memcpy(&port, data+len+sizeof(struct ip_addr), sizeof(port));
		u_printf("ip:%s, port:%d\n", inet_ntoa(ip_addr),port);
		
		MEMCPY(tmp, data, len);
		if(strcasecmp("HF-A11ASSISTHREAD", tmp)==0)
		{	
			hfat_send_cmd("AT+WANN\r\n", sizeof("AT+WANN\r\n"), rsp, 64);
			if(hfat_get_words(rsp, ip, 6)>0)
			{
				u_printf("local ip:%s\n", ip[2]);
				sprintf(response,"%s,",ip[2]);
			}

			memset(rsp, 0, sizeof(rsp));
			hfat_send_cmd("AT+WSMAC\r\n", sizeof("AT+WSMC\r\n"), rsp, 64);
			u_printf("AT+WSMAC's response:%s\n",rsp);
			if(hfat_get_words(rsp, mac, 3)>0)
			{
				u_printf("local mac:%s\n", mac[1]);
				strcat(response,mac[1]);
			}

			hfnet_assis_write(response, sizeof(response), ip_addr, port);
			
			return 0;
		}
	}
	return len;
}
/*

User defined parameter supports a maximum of 70 bytes.
Rsp supports a maximum of 1400 bytes.

*/
static int hfhttpd_url_callback_test(char *url, char *rsp)
{

	
	char i = 0;
	char *p1, *fname_tmp;
	char value[30] = {0};
	char at_rsp[64] = {0};	
	char at_cmd[50] = {0};
	char ret = -1;
	
	fname_tmp = url;


	if((p1 = strnstr(fname_tmp, "/AT+WSSSID=", strlen("/AT+WSSSID="))) != NULL)
	{
		ret = http_get_value(p1+strlen("/AT+WSSSID="), value);		
		
		if(ret == 0)
		{
			hfat_send_cmd("AT+WSSSID\r\n", strlen("AT+WSSSID\r\n"), at_rsp, sizeof(at_rsp));	
			sprintf(rsp, at_rsp);
		}
		else
		{
			sprintf(at_cmd, "%s%s\r\n", "AT+WSSSID=", value);
			hfat_send_cmd(at_cmd, strlen(at_cmd), at_rsp, sizeof(at_rsp));	
			if(0 == strcmp("+ok", at_rsp))
				sprintf(rsp, "set ok.\r\n");
			else
				sprintf(rsp, "set fail.\r\n");
		}
		return 0;
	}
	else if((p1 = strnstr(fname_tmp, "/AT+WSKEY=", strlen("/AT+WSKEY="))) != NULL)
	{
		ret = http_get_value(p1+strlen("/AT+WSKEY="), value);		
		
		if(ret == 0)
		{
			hfat_send_cmd("AT+WSKEY\r\n", strlen("AT+WSKEY\r\n"), at_rsp, sizeof(at_rsp));	
			sprintf(rsp, at_rsp);
		}
		else
		{
			sprintf(at_cmd, "%s%s\r\n", "AT+WSKEY=", value);
			hfat_send_cmd(at_cmd, strlen(at_cmd), at_rsp, sizeof(at_rsp));	
			if(0 == strcmp("+ok", at_rsp))
				sprintf(rsp, "set ok.\r\n");
			else
				sprintf(rsp, "set fail.\r\n");
		}
		return 0;
	}
	else if((p1 = strnstr(fname_tmp, "/AT+WMODE=", strlen("/AT+WMODE="))) != NULL)
	{
		ret = http_get_value(p1+strlen("/AT+WMODE="), value);		
		
		if(ret == 0)
		{
			hfat_send_cmd("AT+WMODE\r\n", strlen("AT+WMODE\r\n"), at_rsp, sizeof(at_rsp));	
			sprintf(rsp, at_rsp);
		}
		else
		{
			sprintf(at_cmd, "%s%s\r\n", "AT+WMODE=", value);
			hfat_send_cmd(at_cmd, strlen(at_cmd), at_rsp, sizeof(at_rsp));	
			if(0 == strcmp("+ok", at_rsp))
				sprintf(rsp, "set ok.\r\n");
			else
				sprintf(rsp, "set fail.\r\n");
		}
		
		return 0;
	}
	else if((p1 = strnstr(fname_tmp, "/iweb.html", strlen("/iweb.html"))) != NULL)
	{
		/***************************************	
		"iweb.html" is our internal upgrade webpage.
		If you want to replace it ,please return 0;
		If not, just return -1.
		***************************************/
		if( 0 == user_define)
			sprintf(rsp, "user define page.");
		return user_define;
	}

	return -1;
}