LOCAL void ICACHE_FLASH_ATTR airkiss_wifilan_time_callback(void) { uint16 i; airkiss_lan_ret_t ret; if ((udp_sent_cnt++) >30) { udp_sent_cnt = 0; os_timer_disarm(&ssdp_time_serv);//s //return; } ssdp_udp.remote_port = DEFAULT_LAN_PORT; ssdp_udp.remote_ip[0] = 255; ssdp_udp.remote_ip[1] = 255; ssdp_udp.remote_ip[2] = 255; ssdp_udp.remote_ip[3] = 255; lan_buf_len = sizeof(lan_buf); ret = airkiss_lan_pack(AIRKISS_LAN_SSDP_NOTIFY_CMD, DEVICE_TYPE, DEVICE_ID, 0, 0, lan_buf, &lan_buf_len, &akconf); if (ret != AIRKISS_LAN_PAKE_READY) { os_printf("Pack lan packet error!"); return; } ret = espconn_sendto(&pssdpudpconn, lan_buf, lan_buf_len); if (ret != 0) { os_printf("UDP send error!"); } os_printf("Finish send notify!\n"); }
/** * Try to send the next buffered syslog entry. */ static void syslog_sendto() { sint16 rc = 0; uint8 *buffer; uint16 length; if (syslog_sending || syslog_inactive) { /** * Already sending or no IP so buffer this. */ CONSOLE("inactive %d, sending %d", syslog_sending, syslog_inactive); } else { CONSOLE("syslog: %d, %d, %d", rc, syslog_stack_head, syslog_stack_tail); while ((rc == 0) && (syslog_stack_head != syslog_stack_tail)) { // Recursion!! buffer = syslog_stack[syslog_stack_head]; length = syslog_length[syslog_stack_head]; syslog_stack_head++; syslog_stack_depth--; if (syslog_stack_head >= SYSLOG_STACK_DEPTH) { syslog_stack_head = 0; } rc = espconn_sendto( syslog_conn, buffer, length); if (rc == ESPCONN_INPROGRESS) { /** * Asynchronous send. */ syslog_sending = TRUE; } else if (rc != 0) { CONSOLE("Error: syslog, sendto failed: %d", rc); } CONSOLE("syslog2: %d, %d, %d", rc, syslog_stack_head, syslog_stack_tail); } CONSOLE("Done sending"); } }
LOCAL void ICACHE_FLASH_ATTR airkiss_wifilan_recv_callbk(void *arg, char *pdata, unsigned short len) { uint16 i; remot_info* pcon_info = NULL; airkiss_lan_ret_t ret = airkiss_lan_recv(pdata, len, &akconf); airkiss_lan_ret_t packret; switch (ret){ case AIRKISS_LAN_SSDP_REQ: espconn_get_connection_info(&pssdpudpconn, &pcon_info, 0); os_printf("remote ip: %d.%d.%d.%d \r\n",pcon_info->remote_ip[0],pcon_info->remote_ip[1], pcon_info->remote_ip[2],pcon_info->remote_ip[3]); os_printf("remote port: %d \r\n",pcon_info->remote_port); pssdpudpconn.proto.udp->remote_port = pcon_info->remote_port; memcpy(pssdpudpconn.proto.udp->remote_ip,pcon_info->remote_ip,4); ssdp_udp.remote_port = DEFAULT_LAN_PORT; lan_buf_len = sizeof(lan_buf); packret = airkiss_lan_pack(AIRKISS_LAN_SSDP_RESP_CMD, DEVICE_TYPE, DEVICE_ID, 0, 0, lan_buf, &lan_buf_len, &akconf); if (packret != AIRKISS_LAN_PAKE_READY) { os_printf("Pack lan packet error!"); return; } os_printf("\r\n\r\n"); for (i=0; i<lan_buf_len; i++) os_printf("%c",lan_buf[i]); os_printf("\r\n\r\n"); packret = espconn_sendto(&pssdpudpconn, lan_buf, lan_buf_len); if (packret != 0) { os_printf("LAN UDP Send err!"); } break; default: os_printf("Pack is not ssdq req!%d\r\n",ret); break; } }
/****************************************************************************** * FunctionName : user_devicefind_recv * Description : Processing the received data from the host * Parameters : arg -- Additional argument to pass to the callback function * pusrdata -- The received data (or NULL when the connection has been closed!) * length -- The length of received data * Returns : none *******************************************************************************/ LOCAL void ICACHE_FLASH_ATTR user_devicefind_recv(void *arg, char *pusrdata, unsigned short length) { char DeviceBuffer[40] = {0}; char Device_mac_buffer[60] = {0}; char hwaddr[6]; struct ip_info ipconfig; if (wifi_get_opmode() != STATION_MODE) { wifi_get_ip_info(SOFTAP_IF, &ipconfig); wifi_get_macaddr(SOFTAP_IF, hwaddr); if (!ip_addr_netcmp((struct ip_addr *)ptrespconn.proto.udp->remote_ip, &ipconfig.ip, &ipconfig.netmask)) { wifi_get_ip_info(STATION_IF, &ipconfig); wifi_get_macaddr(STATION_IF, hwaddr); } } else { wifi_get_ip_info(STATION_IF, &ipconfig); wifi_get_macaddr(STATION_IF, hwaddr); } if (pusrdata == NULL) { return; } if (length == os_strlen(device_find_request) && os_strncmp(pusrdata, device_find_request, os_strlen(device_find_request)) == 0) { length = os_sprintf(DeviceBuffer, "%s" MACSTR " " IPSTR, device_find_response_ok, MAC2STR(hwaddr), IP2STR(&ipconfig.ip)); DF_DBG("%s\n", DeviceBuffer); //length = os_strlen(DeviceBuffer); //================================== //This is add in sdk lib v1.4.0 DF_DBG("--------DEBUG IN DEV----------\r\n"); remote_info* pcon_info = NULL; DF_DBG("link num: %d \r\n",ptrespconn.link_cnt); espconn_get_connection_info(&ptrespconn, &pcon_info, 0); DF_DBG("remote ip: %d.%d.%d.%d \r\n",pcon_info->remote_ip[0],pcon_info->remote_ip[1], pcon_info->remote_ip[2],pcon_info->remote_ip[3]); DF_DBG("remote port: %d \r\n",pcon_info->remote_port); //================================= ptrespconn.proto.udp->remote_port = pcon_info->remote_port; os_memcpy(ptrespconn.proto.udp->remote_ip,pcon_info->remote_ip,4); espconn_sendto(&ptrespconn, DeviceBuffer, length); } else if (length == (os_strlen(device_find_request) + 18)) { os_sprintf(Device_mac_buffer, "%s " MACSTR , device_find_request, MAC2STR(hwaddr)); DF_DBG("%s", Device_mac_buffer); if (os_strncmp(Device_mac_buffer, pusrdata, os_strlen(device_find_request) + 18) == 0) { length = os_sprintf(DeviceBuffer, "%s" MACSTR " " IPSTR, device_find_response_ok,MAC2STR(hwaddr), IP2STR(&ipconfig.ip)); DF_DBG("%s\n", DeviceBuffer); espconn_sendto(&ptrespconn, DeviceBuffer, length); } else { return; } } }