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]); } }
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; }
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; }