/**@brief IP stack event handler. * * @details Callback registered with the ICMP6 to receive asynchronous events from the module. */ void ip_app_handler(iot_interface_t * p_interface, ipv6_event_t * p_event) { uint32_t err_code; APPL_LOG("[APPL]: Got IP Application Handler Event on interface 0x%p\r\n", p_interface); switch(p_event->event_id) { case IPV6_EVT_INTERFACE_ADD: APPL_LOG("[APPL]: New interface added!\r\n"); err_code = udp6_socket_allocate(&m_udp_socket); APP_ERROR_CHECK(err_code); err_code = udp6_socket_bind(&m_udp_socket, IPV6_ADDR_ANY, HTONS(UDP_PORT)); APP_ERROR_CHECK(err_code); err_code = udp6_socket_recv(&m_udp_socket, rx_udp_port_app_handler); APP_ERROR_CHECK(err_code); memset(&m_packet_buffer[0][0], 0x00, sizeof(m_packet_buffer)); m_node_state = APP_STATE_IPV6_IF_UP; m_display_state = LEDS_TX_ECHO_REQUEST; // IPv6 interface is up, start sending Echo Requests to peer. err_code = app_timer_start(m_tx_node_timer, APP_PING_INTERVAL, NULL); APP_ERROR_CHECK(err_code); break; case IPV6_EVT_INTERFACE_DELETE: err_code = app_timer_stop(m_tx_node_timer); APP_ERROR_CHECK(err_code); APPL_LOG("[APPL]: Interface removed!\r\n"); err_code = udp6_socket_free(&m_udp_socket); APP_ERROR_CHECK(err_code); memset(&m_packet_buffer[0][0], 0x00, sizeof(m_packet_buffer)); m_node_state = APP_STATE_IPV6_IF_DOWN; m_display_state = LEDS_IPV6_IF_DOWN; break; case IPV6_EVT_INTERFACE_RX_DATA: APPL_LOG("[APPL]: Got unsupported protocol data!\r\n"); break; default: //Unknown event. Should not happen. break; } }
/**@brief IP stack event handler. * * @details Callback registered with the ICMP6 to receive asynchronous events from the module. */ void ip_app_handler(iot_interface_t * p_interface, ipv6_event_t * p_event) { uint32_t err_code; APPL_LOG("[APPL]: Got IP Application Handler Event on interface 0x%p\r\n", p_interface); switch(p_event->event_id) { case IPV6_EVT_INTERFACE_ADD: APPL_LOG("[APPL]: New interface added!\r\n"); err_code = udp6_socket_allocate(&m_udp_socket); APP_ERROR_CHECK(err_code); err_code = udp6_socket_bind(&m_udp_socket, IPV6_ADDR_ANY, HTONS(UDP_PORT)); APP_ERROR_CHECK(err_code); err_code = udp6_socket_recv(&m_udp_socket, rx_udp_port_app_handler); APP_ERROR_CHECK(err_code); m_display_state = LEDS_TX_ECHO_RESPONSE; break; case IPV6_EVT_INTERFACE_DELETE: APPL_LOG("[APPL]: Interface removed!\r\n"); err_code = udp6_socket_free(&m_udp_socket); APP_ERROR_CHECK(err_code); m_display_state = LEDS_IPV6_IF_DOWN; break; case IPV6_EVT_INTERFACE_RX_DATA: APPL_LOG("[APPL]: Got unsupported protocol data!\r\n"); break; default: //Unknown event. Should not happen. break; } }