Esempio n. 1
0
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");
}
Esempio n. 2
0
/**
 * 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");
	}
}
Esempio n. 3
0
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;
        }
    }
}