/*! \brief This function handles events for IP address acquisition via DHCP indication \param[in] pNetAppEvent is the event passed to the handler */ void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(pNetAppEvent == NULL) { CLI_Write((_u8 *)"[NETAPP EVENT] NULL Pointer Error \n"); return; } switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(_status, STATUS_BIT_IP_ACQUIRED); pEventData = &pNetAppEvent->EventData.ipAcquiredV4; _gatewayIP = pEventData->gateway; } break; case SL_NETAPP_IP_LEASED_EVENT: { _stationIP = pNetAppEvent->EventData.ipLeased.ip_address; SET_STATUS_BIT(_status, STATUS_BIT_IP_LEASED); } break; default: { CLI_Write((_u8 *)"[NETAPP EVENT] Unexpected event \n"); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param[in] pNetAppEvent - Pointer to NetApp Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_ACQUIRED: case SL_NETAPP_IPV6_ACQUIRED: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); } break; case SL_NETAPP_IP_LEASED: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); g_ulStaIp = (pNetAppEvent)->EventData.ipLeased.ip_address; UART_PRINT("[NETAPP EVENT] IP Leased to Client: IP=%d.%d.%d.%d , ", SL_IPV4_BYTE(g_ulStaIp,3), SL_IPV4_BYTE(g_ulStaIp,2), SL_IPV4_BYTE(g_ulStaIp,1), SL_IPV4_BYTE(g_ulStaIp,0)); } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event [0x%x] \n\r", pNetAppEvent->Event); } break; } }
/* * do_catchup * Function sends init & start event to a subsystem. */ STATIC CpaStatus do_catchup(icp_accel_dev_t *accel_dev, subservice_registation_handle_t* subsystem_hdl) { CpaStatus status = CPA_STATUS_FAIL; CpaStatus ret_status = CPA_STATUS_FAIL; ICP_CHECK_FOR_NULL_PARAM(accel_dev); ICP_CHECK_FOR_NULL_PARAM(subsystem_hdl); ADF_DEBUG("Sending event %d to %s\n", ICP_ADF_EVENT_INIT, subsystem_hdl->subsystem_name); status = subsystem_hdl->subserviceEventHandler(accel_dev, ICP_ADF_EVENT_INIT, NULL); if( CPA_STATUS_SUCCESS == status ) { SET_STATUS_BIT(subsystem_hdl->subsystemStatus [accel_dev->accelId].subsystemInitBit, 0); ADF_DEBUG("Sending event %d to %s\n", ICP_ADF_EVENT_START, subsystem_hdl->subsystem_name); status = subsystem_hdl->subserviceEventHandler(accel_dev, ICP_ADF_EVENT_START, NULL); /* Check if start was successful */ if( CPA_STATUS_SUCCESS == status ) { SET_STATUS_BIT(subsystem_hdl->subsystemStatus [accel_dev->accelId].subsystemStartBit, 0); } else { ADF_ERROR("Failed to start Subservice %s\n", subsystem_hdl->subsystem_name); ADF_DEBUG("Sending event %d to %s\n", ICP_ADF_EVENT_SHUTDOWN, subsystem_hdl->subsystem_name); /* Send shutdown the subsystem if start failed */ ret_status = subsystem_hdl->subserviceEventHandler(accel_dev, ICP_ADF_EVENT_SHUTDOWN, NULL); if( CPA_STATUS_SUCCESS == ret_status ) { CLEAR_STATUS_BIT(subsystem_hdl->subsystemStatus [accel_dev->accelId].subsystemInitBit, 0); } } } else { ADF_ERROR("Failed to initialise Subservice %s\n", subsystem_hdl->subsystem_name); } return status; }
/*! \brief This function handles WLAN events \param[in] pWlanEvent is the event passed to the handler */ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if(pWlanEvent == NULL) { CLI_Write((_u8 *)"[WLAN EVENT] NULL Pointer Error \n"); return; } switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(_status, STATUS_BIT_CONNECTION); } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(_status, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(_status, STATUS_BIT_IP_ACQUIRED); pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) CLI_Write((_u8 *)"Device disconnected from the AP on application's request \n"); else CLI_Write((_u8 *)"Device disconnected from the AP on an ERROR..!! \n"); } break; case SL_WLAN_STA_CONNECTED_EVENT: { SET_STATUS_BIT(_status, STATUS_BIT_STA_CONNECTED); } break; case SL_WLAN_STA_DISCONNECTED_EVENT: { CLR_STATUS_BIT(_status, STATUS_BIT_STA_CONNECTED); CLR_STATUS_BIT(_status, STATUS_BIT_IP_LEASED); } break; default: { CLI_Write((_u8 *)"[WLAN EVENT] Unexpected event \n"); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param[in] pNetAppEvent - Pointer to NetApp Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(!pNetAppEvent) { return; } switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(wlan_obj.status, STATUS_BIT_IP_ACQUIRED); // Ip Acquired Event Data pEventData = &pNetAppEvent->EventData.ipAcquiredV4; // Get the ip wlan_obj.ip = pEventData->ip; } break; case SL_NETAPP_IPV6_IPACQUIRED_EVENT: break; case SL_NETAPP_IP_LEASED_EVENT: break; case SL_NETAPP_IP_RELEASED_EVENT: break; default: break; } }
void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch (pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { UART_PRINT("[QuickStart] IP address : %d.%d.%d.%d\r\n", SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 0)); UART_PRINT("[QuickStart] Gateway : %d.%d.%d.%d\r\n", SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 0)); UART_PRINT("[QuickStart] DNS server : %d.%d.%d.%d\r\n", SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.dns, 3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.dns, 2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.dns, 1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.dns, 0)); SET_STATUS_BIT(g_Status, STATUS_BIT_IP_AQUIRED); } break; default: break; } }
/*! \brief This function handles events for IP address acquisition via DHCP indication \param[in] pNetAppEvent is the event passed to the handler \return None \note \warning */ void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(pNetAppEvent == NULL) CLI_Write(" [NETAPP EVENT] NULL Pointer Error \n\r"); if(pNetAppEvent == NULL) CLI_Write(" [NETAPP EVENT] NULL Pointer Error \n\r"); switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SET_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED); /* * Information about the connection (like IP, gateway address etc) * will be available in 'SlIpV4AcquiredAsync_t' * Applications can use it if required * * SlIpV4AcquiredAsync_t *pEventData = NULL; * pEventData = &pNetAppEvent->EventData.ipAcquiredV4; * */ } break; default: { CLI_Write(" [NETAPP EVENT] Unexpected event \n\r"); } break; } }
/*! \brief This function handles events for IP address acquisition via DHCP indication \param[in] pNetAppEvent is the event passed to the handler \return None \note \warning */ void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(pNetAppEvent == NULL) printf(" [NETAPP EVENT] NULL Pointer Error \n\r"); switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SET_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED); /* * Information about the connected AP's ip, gateway, DNS etc * will be available in 'SlIpV4AcquiredAsync_t' - Applications * can use it if required * * SlIpV4AcquiredAsync_t *pEventData = NULL; * pEventData = &pNetAppEvent->EventData.ipAcquiredV4; * <gateway_ip> = pEventData->gateway; * */ } break; default: { printf(" [NETAPP EVENT] Unexpected event \r\n"); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param[in] pNetAppEvent - Pointer to NetApp Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch (pNetAppEvent->Event) { case SL_NETAPP_IPV4_ACQUIRED: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); //Ip Acquired Event Data pEventData = &pNetAppEvent->EventData.ipAcquiredV4; //Gateway IP address g_ulGatewayIP = pEventData->gateway; UART_PRINT("[NETAPP EVENT] IP Acquired: IP=%d.%d.%d.%d , " "Gateway=%d.%d.%d.%d\n\r", SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip, 0), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway, 0)); } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event [0x%x] \n\r", pNetAppEvent->Event); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param[in] pNetAppEvent - Pointer to NetApp Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(!pNetAppEvent) { return; } switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); //Ip Acquired Event Data pEventData = &pNetAppEvent->EventData.ipAcquiredV4; g_ulIpAddr = pEventData->ip; //Gateway IP address g_ulGatewayIP = pEventData->gateway; } break; } }
void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { UART_PRINT("SimpleLinkWlanEventHandler\r\n"); switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected AP (like name, MAC etc) will be // available in 'slWlanConnectAsyncResponse_t'-Applications // can use it if required // // slWlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; // UART_PRINT("[WLAN EVENT] STA Connected to the AP: %s\n\r", pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_name); } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, //'reason_code' is SL_USER_INITIATED_DISCONNECTION if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("[WLAN EVENT]Device disconnected from the AP: %s\r\n", pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_name); } else { UART_PRINT("[WLAN ERROR]Device disconnected from the AP AP: %s\r\n", pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_name); } } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event [0x%x]\n\r", pWlanEvent->Event); } break; } }
/*! \brief This function handles WLAN events \param[in] pWlanEvent is the event passed to the handler \return None \note \warning */ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if(pWlanEvent == NULL) { CLI_Write((_u8 *)" [WLAN EVENT] NULL Pointer Error \n\r"); return; } switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); /* * Information about the connected AP (like name, MAC etc) will be * available in 'slWlanConnectAsyncResponse_t' - Applications * can use it if required * * slWlanConnectAsyncResponse_t *pEventData = NULL; * pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; * */ } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED); pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; /* If the user has initiated 'Disconnect' request, 'reason_code' is SL_USER_INITIATED_DISCONNECTION */ if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { CLI_Write((_u8 *)" Device disconnected from the AP on application's request \n\r"); } else { CLI_Write((_u8 *)" Device disconnected from the AP on an ERROR..!! \n\r"); } } break; default: { CLI_Write((_u8 *)" [WLAN EVENT] Unexpected event \n\r"); } break; } }
/*! \brief This function handles ping report events \param[in] pPingReport holds the ping report statistics \return None \note \warning */ static void SimpleLinkPingReport(SlPingReport_t *pPingReport) { SET_STATUS_BIT(g_Status, STATUS_BIT_PING_DONE); if(pPingReport == NULL) { CLI_Write((_u8 *)" [PING REPORT] NULL Pointer Error\r\n"); return; } g_PingPacketsRecv = pPingReport->PacketsReceived; }
void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { switch (pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; memset(g_ConnectionSSID, 0, sizeof(g_ConnectionSSID)); memset(g_ConnectionBSSID, 0, sizeof(g_ConnectionBSSID)); memcpy(g_ConnectionSSID, pEventData->ssid_name, pEventData->ssid_len); memcpy(g_ConnectionBSSID, pEventData->bssid, SL_BSSID_LENGTH); UART_PRINT("[QuickStart] Connected to : %s (%x:%x:%x:%x:%x:%x)\r\n", g_ConnectionSSID, g_ConnectionBSSID[0], g_ConnectionBSSID[1], g_ConnectionBSSID[2], g_ConnectionBSSID[3], g_ConnectionBSSID[4], g_ConnectionBSSID[5]); SET_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); } break; case SL_WLAN_DISCONNECT_EVENT: { CLR_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_AQUIRED); slWlanConnectAsyncResponse_t* pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; UART_PRINT("[QuickStart] Disconnected from : %s (%x:%x:%x:%x:%x:%x)\r\n", g_ConnectionSSID, g_ConnectionBSSID[0], g_ConnectionBSSID[1], g_ConnectionBSSID[2], g_ConnectionBSSID[3], g_ConnectionBSSID[4], g_ConnectionBSSID[5]); if (SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT(" Reason : user request\r\n"); } else { UART_PRINT(" Error : %d\r\n", pEventData->reason_code); } memset(g_ConnectionSSID, 0, sizeof(g_ConnectionSSID)); memset(g_ConnectionBSSID, 0, sizeof(g_ConnectionBSSID)); } break; default: break; } }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pWlanEvent - Pointer to WLAN Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if(!pWlanEvent) { return; } switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected AP (like name, MAC etc) will be // available in 'slWlanConnectAsyncResponse_t'-Applications // can use it if required // // slWlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; // // Copy new connection SSID and BSSID to global parameters memcpy(g_ucConnectionSSID,pWlanEvent->EventData. STAandP2PModeWlanConnected.ssid_name, pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_len); memcpy(g_ucConnectionBSSID, pWlanEvent->EventData.STAandP2PModeWlanConnected.bssid, SL_BSSID_LENGTH); } break; case SL_WLAN_DISCONNECT_EVENT: { CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); memset(g_ucConnectionSSID,0,sizeof(g_ucConnectionSSID)); memset(g_ucConnectionBSSID,0,sizeof(g_ucConnectionBSSID)); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param pNetAppEvent - Pointer indicating device acquired IP //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: case SL_NETAPP_IPV6_IPACQUIRED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); // // Information about the IPv4 & IPv6 details (like IP, gateway,dns // etc) will be available in 'SlIpV4AcquiredAsync_t / // SlIpV6AcquiredAsync_t' - Applications can use it if required // // For IPv4: // SlIpV4AcquiredAsync_t *pEventData = NULL; //Ip Acquired Event Data pEventData = &pNetAppEvent->EventData.ipAcquiredV4; g_ulIpAddr = pEventData->ip; // // For IPv6: // // SlIpV4AcquiredAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV6; // } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pSlWlanEvent - Pointer to WLAN Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pSlWlanEvent) { switch(((SlWlanEvent_t*)pSlWlanEvent)->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected AP (like name, MAC etc) will be // available in 'slWlanConnectAsyncResponse_t'-Applications // can use it if required // // slWlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.STAandP2PModeWlanConnected; // // Copy new connection SSID and BSSID to global parameters memcpy(g_ucConnectionSSID,pSlWlanEvent->EventData. STAandP2PModeWlanConnected.ssid_name, pSlWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_len); memcpy(g_ucConnectionBSSID, pSlWlanEvent->EventData.STAandP2PModeWlanConnected.bssid, SL_BSSID_LENGTH); UART_PRINT("[WLAN EVENT] STA Connected to the AP: %s , BSSID: " "%x:%x:%x:%x:%x:%x\n\r", g_ucConnectionSSID, g_ucConnectionBSSID[0], g_ucConnectionBSSID[1], g_ucConnectionBSSID[2], g_ucConnectionBSSID[3], g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pSlWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, //'reason_code' is SL_WLAN_DISCONNECT_USER_INITIATED_DISCONNECTION if(SL_WLAN_DISCONNECT_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("[WLAN EVENT]Device disconnected from the AP: %s, " "BSSID: %x:%x:%x:%x:%x:%x on application's request " "\n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } else { UART_PRINT("[WLAN ERROR]Device disconnected from the AP AP: %s," " BSSID: %x:%x:%x:%x:%x:%x on an ERROR..!! \n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } memset(g_ucConnectionSSID,0,sizeof(g_ucConnectionSSID)); memset(g_ucConnectionBSSID,0,sizeof(g_ucConnectionBSSID)); } break; case SL_WLAN_STA_CONNECTED_EVENT: { // when device is in AP mode and any client connects to device cc3xxx SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModeStaConnected; // } break; case SL_WLAN_STA_DISCONNECTED_EVENT: { // when client disconnects from device (AP) CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModestaDisconnected; // } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! This function gets triggered when device acquires IP //! status to be set. When Device is in DHCP mode recommended to use this. //! //! \param pNetAppEvent Pointer indicating device acquired IP //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_ACQUIRED: case SL_NETAPP_IPV6_ACQUIRED: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); // // Information about the IPv4 & IPv6 details (like IP, gateway,dns // etc) will be available in 'SlNetAppEventData_u' - Applications // can use it if required // // For IPv4: // // SlNetAppEventData_u *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV4; // // For IPv6: // // SlNetAppEventData_u *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV6; // //Ip Acquired Event Data g_ulDeviceIp = pNetAppEvent->EventData.ipAcquiredV4.ip; //Gateway IP address g_ulGatewayIP = pEventData->gateway; /* UART_PRINT("[NETAPP EVENT] IP Acquired: IP=%d.%d.%d.%d , " "Gateway=%d.%d.%d.%d\n\r", SL_IPV4_BYTE(g_ulDeviceIp,3), SL_IPV4_BYTE(g_ulDeviceIp,2), SL_IPV4_BYTE(g_ulDeviceIp,1), SL_IPV4_BYTE(g_ulDeviceIp,0), SL_IPV4_BYTE(g_ulGatewayIP,3), SL_IPV4_BYTE(g_ulGatewayIP,2), SL_IPV4_BYTE(g_ulGatewayIP,1), SL_IPV4_BYTE(g_ulGatewayIP,0)); */ } break; case SL_NETAPP_IP_LEASED: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the IP-Leased details (like IP-Leased, // lease-time, mac etc) will be available in 'SlIpLeasedAsync_t' - // Applications can use it if required // // SlIpLeasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipLeased; // } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pSlWlanEvent - Pointer to WLAN Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pSlWlanEvent) { if(pSlWlanEvent == NULL) { return; } switch(((SlWlanEvent_t*)pSlWlanEvent)->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); // // Information about the connected AP (like name, MAC etc) will be // available in 'slWlanConnectAsyncResponse_t'-Applications // can use it if required // // slWlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.STAandP2PModeWlanConnected; // // Copy new connection SSID and BSSID to global parameters memcpy(g_ucConnectionSSID,pSlWlanEvent->EventData. STAandP2PModeWlanConnected.ssid_name, pSlWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_len); memcpy(g_ucConnectionBSSID, pSlWlanEvent->EventData.STAandP2PModeWlanConnected.bssid, SL_BSSID_LENGTH); UART_PRINT("[WLAN EVENT] STA Connected to the AP: %s , BSSID: " "%x:%x:%x:%x:%x:%x\n\r", g_ucConnectionSSID, g_ucConnectionBSSID[0], g_ucConnectionBSSID[1], g_ucConnectionBSSID[2], g_ucConnectionBSSID[3], g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pSlWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, //'reason_code' is SL_USER_INITIATED_DISCONNECTION if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("[WLAN EVENT]Device disconnected from the AP: %s, " "BSSID: %x:%x:%x:%x:%x:%x on application's request " "\n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } else { UART_PRINT("[WLAN ERROR]Device disconnected from the AP AP: %s," " BSSID: %x:%x:%x:%x:%x:%x on an ERROR..!! \n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } memset(g_ucConnectionSSID,0,sizeof(g_ucConnectionSSID)); memset(g_ucConnectionBSSID,0,sizeof(g_ucConnectionBSSID)); } break; case SL_WLAN_STA_CONNECTED_EVENT: { // when device is in AP mode and any client connects to device cc3xxx SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModeStaConnected; // } break; case SL_WLAN_STA_DISCONNECTED_EVENT: { // when client disconnects from device (AP) CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModestaDisconnected; // } break; case SL_WLAN_SMART_CONFIG_COMPLETE_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_SMARTCONFIG_START); // // Information about the SmartConfig details (like Status, SSID, // Token etc) will be available in 'slSmartConfigStartAsyncResponse_t' // - Applications can use it if required // // slSmartConfigStartAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.smartConfigStartResponse; // } break; case SL_WLAN_SMART_CONFIG_STOP_EVENT: { // SmartConfig operation finished CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_SMARTCONFIG_START); // // Information about the SmartConfig details (like Status, padding // etc) will be available in 'slSmartConfigStopAsyncResponse_t' - // Applications can use it if required // // slSmartConfigStopAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.smartConfigStopResponse; // } break; case SL_WLAN_P2P_DEV_FOUND_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_P2P_DEV_FOUND); // // Information about P2P config details (like Peer device name, own // SSID etc) will be available in 'slPeerInfoAsyncResponse_t' - // Applications can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.P2PModeDevFound; // } break; case SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_P2P_REQ_RECEIVED); // // Information about P2P Negotiation req details (like Peer device // name, own SSID etc) will be available in 'slPeerInfoAsyncResponse_t' // - Applications can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.P2PModeNegReqReceived; // } break; case SL_WLAN_CONNECTION_FAILED_EVENT: { // If device gets any connection failed event SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! \brief This function handles ping report events //! //! \param[in] pPingReport - Ping report statistics //! //! \return None //! //***************************************************************************** static void SimpleLinkPingReport(SlPingReport_t *pPingReport) { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_PING_DONE); g_ulPingPacketsRecv = pPingReport->PacketsReceived; }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pWlanEvent - Pointer to WLAN Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if(!pWlanEvent) { return; } switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected AP (like name, MAC etc) will be // available in 'slWlanConnectAsyncResponse_t'. // Applications can use it if required // // slWlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; // // Copy new connection SSID and BSSID to global parameters memcpy(g_ucConnectionSSID,pWlanEvent->EventData. STAandP2PModeWlanConnected.ssid_name, pWlanEvent->EventData.STAandP2PModeWlanConnected.ssid_len); memcpy(g_ucConnectionBSSID, pWlanEvent->EventData.STAandP2PModeWlanConnected.bssid, SL_BSSID_LENGTH); UART_PRINT("[WLAN EVENT] STA Connected to the AP: %s , " "BSSID: %x:%x:%x:%x:%x:%x\n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, //'reason_code' is SL_WLAN_DISCONNECT_USER_INITIATED_DISCONNECTION if(SL_WLAN_DISCONNECT_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("[WLAN EVENT]Device disconnected from the AP: %s," "BSSID: %x:%x:%x:%x:%x:%x on application's request \n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } else { UART_PRINT("[WLAN ERROR]Device disconnected from the AP AP: %s, " "BSSID: %x:%x:%x:%x:%x:%x on an ERROR..!! \n\r", g_ucConnectionSSID,g_ucConnectionBSSID[0], g_ucConnectionBSSID[1],g_ucConnectionBSSID[2], g_ucConnectionBSSID[3],g_ucConnectionBSSID[4], g_ucConnectionBSSID[5]); } memset(g_ucConnectionSSID,0,sizeof(g_ucConnectionSSID)); memset(g_ucConnectionBSSID,0,sizeof(g_ucConnectionBSSID)); } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event [0x%x]\n\r", pWlanEvent->Event); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param pNetAppEvent - Pointer indicating device acquired IP //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_ACQUIRED: case SL_NETAPP_IPV6_ACQUIRED: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); // // Information about the IPv4 & IPv6 details (like IP, gateway,dns // etc) will be available in 'SlNetAppEventData_u' - Applications // can use it if required // // For IPv4: // // SlNetAppEventData_u *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV4; // // For IPv6: // // SlNetAppEventData_u *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV6; // } break; case SL_NETAPP_IP_LEASED: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the IP-Leased details(like IP-Leased,lease-time, // mac etc) will be available in 'SlIpLeasedAsync_t' - Applications // can use it if required // // SlIpLeasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipLeased; // SlIpLeasedAsync_t *pEventData = NULL; pEventData = &pNetAppEvent->EventData.ipLeased; g_ulStaIp = pEventData->ip_address; } break; case SL_NETAPP_IP_RELEASED: { CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the IP-Released details (like IP-address, mac // etc) will be available in 'SlIpReleasedAsync_t' - Applications // can use it if required // // SlIpReleasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipReleased; // } break; case SL_NETAPP_SOCKET_TX_FAILED: { UART_PRINT("[NETAPP EVENT] Socket Error # %d \n\r", pNetAppEvent->EventData.sd); } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event \n\r"); } break; } }
/*! \brief This function handles WLAN events \param[in] pWlanEvent is the event passed to the handler \return None \note \warning */ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if(pWlanEvent == NULL) CLI_Write(" [WLAN EVENT] NULL Pointer Error \n\r"); switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); /* * Information about the connected AP (like name, MAC etc) will be * available in 'slWlanConnectAsyncResponse_t' - Applications * can use it if required * * slWlanConnectAsyncResponse_t *pEventData = NULL; * pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; * */ } break; case SL_WLAN_DISCONNECT_EVENT: { slWlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_Status, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED ); pEventData = &pWlanEvent->EventData.STAandP2PModeDisconnected; /* If the user has initiated 'Disconnect' request, 'reason_code' is * SL_USER_INITIATED_DISCONNECTION */ if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { CLI_Write(" Device disconnected from the AP on application's request \n\r"); } else { CLI_Write(" Device disconnected from the AP on an ERROR..!! \n\r"); } } break; case SL_WLAN_SMART_CONFIG_COMPLETE_EVENT: /** SmartConfig operation finished * The new SSID that was acquired is: * pWlanEventHandler->EventData.smartConfigStartResponse.ssid * We have the possibility that also a private token was sent to the Host: * if(pWlanEventHandler->EventData.smartConfigStartResponse.private_token_len) * then the private token is populated: * pWlanEventHandler->EventData.smartConfigStartResponse.private_token */ SET_STATUS_BIT(g_Status, STATUS_BIT_SMARTCONFIG_DONE); SET_STATUS_BIT(g_Status, STATUS_BIT_SMARTCONFIG_STOPPED); break; case SL_WLAN_SMART_CONFIG_STOP_EVENT: /* SmartConfig stop operation was completed */ SET_STATUS_BIT(g_Status, STATUS_BIT_SMARTCONFIG_STOPPED); CLR_STATUS_BIT(g_Status, STATUS_BIT_SMARTCONFIG_DONE); default: { /* Unexpected Event */ } break; } }
static void SimpleLinkPingReport(SlPingReport_t *report) { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_PING_DONE); UART_PRINT("ping %d\r\n", report->AvgRoundTime); }
//***************************************************************************** // //! \brief sets a state from the state machine //! //! \param cStat Status of State Machine defined in e_StatusBits //! //! \return none //! //***************************************************************************** void Network_IF_SetMCUMachineState(char cStat) { SET_STATUS_BIT(g_ulStatus, cStat); }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pWlanEvent pointer indicating Event type //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pSlWlanEvent) { switch(pSlWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); // // Information about the connected AP (like name, MAC etc) will be // available in 'sl_protocol_wlanConnectAsyncResponse_t' - Applications // can use it if required // // sl_protocol_wlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.STAandP2PModeWlanConnected; // // } break; case SL_WLAN_DISCONNECT_EVENT: { sl_protocol_wlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pSlWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, 'reason_code' // is SL_USER_INITIATED_DISCONNECTION if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("Device disconnected from the AP on application's" "request \n\r"); } else { UART_PRINT("Device disconnected from the AP on an ERROR..!! \n\r"); } } break; case SL_WLAN_STA_CONNECTED_EVENT: { // when device is in AP mode and any client connects to device cc3xxx SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModeStaConnected; // } break; case SL_WLAN_STA_DISCONNECTED_EVENT: { // when client disconnects from device (AP) CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModestaDisconnected; // } break; case SL_WLAN_P2P_DEV_FOUND_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_P2P_DEV_FOUND); // // Information about P2P config details (like Peer device name, own // SSID etc) will be available in 'slPeerInfoAsyncResponse_t' - // Applications can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.P2PModeDevFound; // } break; case SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_P2P_REQ_RECEIVED); memset(g_p2p_dev, '\0', MAXIMAL_SSID_LENGTH + 1); memcpy(g_p2p_dev,pSlWlanEvent->EventData.P2PModeNegReqReceived.go_peer_device_name, pSlWlanEvent->EventData.P2PModeNegReqReceived.go_peer_device_name_len); // // Information about P2P Negotiation req details (like Peer device // name, own SSID etc) will be available in // 'slPeerInfoAsyncResponse_t' - Applications can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.P2PModeNegReqReceived; // } break; case SL_WLAN_CONNECTION_FAILED_EVENT: { // If device gets any connection failed event SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION_FAILED); } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param pNetAppEvent - Pointer indicating device acquired IP //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(pNetAppEvent == NULL) { return; } switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: case SL_NETAPP_IPV6_IPACQUIRED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); UART_PRINT("[NETAPP EVENT] IP acquired by the device\n\r"); // // Information about the IPv4 & IPv6 details (like IP, gateway,dns // etc) will be available in 'SlIpV4AcquiredAsync_t / // SlIpV6AcquiredAsync_t' - Applications can use it if required // // For IPv4: // // SlIpV4AcquiredAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV4; // // For IPv6: // // SlIpV6AcquiredAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipAcquiredV6; // } break; case SL_NETAPP_IP_LEASED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); UART_PRINT("[NETAPP EVENT] IP leased to a client\n\r"); // // Information about the IP-Leased details(like IP-Leased,lease-time, // mac etc) will be available in 'SlIpLeasedAsync_t' - Applications // can use it if required // // SlIpLeasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipLeased; // SlIpLeasedAsync_t *pEventData = NULL; pEventData = &pNetAppEvent->EventData.ipLeased; g_ulStaIp = pEventData->ip_address; } break; case SL_NETAPP_IP_RELEASED_EVENT: { CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); UART_PRINT("[NETAPP EVENT] IP released from a client\n\r"); // // Information about the IP-Released details (like IP-address, mac // etc) will be available in 'SlIpReleasedAsync_t' - Applications // can use it if required // // SlIpReleasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipReleased; // } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event \n\r"); } break; } }
//***************************************************************************** // //! \brief The Function Handles WLAN Events //! //! \param[in] pWlanEvent - Pointer to WLAN Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) { if (!pWlanEvent) { return; } switch(pWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { //slWlanConnectAsyncResponse_t *pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; // copy the new connection data //memcpy(wlan_obj.bssid, pEventData->bssid, SL_BSSID_LENGTH); //memcpy(wlan_obj.ssid_o, pEventData->ssid_name, pEventData->ssid_len); //wlan_obj.ssid_o[pEventData->ssid_len] = '\0'; SET_STATUS_BIT(wlan_obj.status, STATUS_BIT_CONNECTION); #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP) // we must reset the servers in case that the last connection // was lost without any notification being received servers_reset(); #endif } break; case SL_WLAN_DISCONNECT_EVENT: CLR_STATUS_BIT(wlan_obj.status, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(wlan_obj.status, STATUS_BIT_IP_ACQUIRED); #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP) servers_reset(); servers_wlan_cycle_power(); #endif break; case SL_WLAN_STA_CONNECTED_EVENT: { //slPeerInfoAsyncResponse_t *pEventData = &pWlanEvent->EventData.APModeStaConnected; // get the mac address and name of the connected device //memcpy(wlan_obj.bssid, pEventData->mac, SL_BSSID_LENGTH); //memcpy(wlan_obj.ssid_o, pEventData->go_peer_device_name, pEventData->go_peer_device_name_len); //wlan_obj.ssid_o[pEventData->go_peer_device_name_len] = '\0'; SET_STATUS_BIT(wlan_obj.status, STATUS_BIT_CONNECTION); #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP) // we must reset the servers in case that the last connection // was lost without any notification being received servers_reset(); #endif } break; case SL_WLAN_STA_DISCONNECTED_EVENT: CLR_STATUS_BIT(wlan_obj.status, STATUS_BIT_CONNECTION); #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP) servers_reset(); servers_wlan_cycle_power(); #endif break; case SL_WLAN_P2P_DEV_FOUND_EVENT: // TODO break; case SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT: // TODO break; case SL_WLAN_CONNECTION_FAILED_EVENT: // TODO break; default: break; } }
//***************************************************************************** // //! \brief This function handles network events such as IP acquisition, IP //! leased, IP released etc. //! //! \param[in] pNetAppEvent - Pointer to NetApp Event Info //! //! \return None //! //***************************************************************************** void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) { if(pNetAppEvent == NULL) { UART_PRINT("Null pointer\n\r"); LOOP_FOREVER(); } switch(pNetAppEvent->Event) { case SL_NETAPP_IPV4_IPACQUIRED_EVENT: { SlIpV4AcquiredAsync_t *pEventData = NULL; SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); //Ip Acquired Event Data pEventData = &pNetAppEvent->EventData.ipAcquiredV4; UART_PRINT("[NETAPP EVENT] IP Acquired: IP=%d.%d.%d.%d , " "Gateway=%d.%d.%d.%d\n\r", SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.ip,0), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,3), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,2), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,1), SL_IPV4_BYTE(pNetAppEvent->EventData.ipAcquiredV4.gateway,0)); UNUSED(pEventData); } break; case SL_NETAPP_IP_LEASED_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the IP-Leased details(like IP-Leased,lease-time, // mac etc) will be available in 'SlIpLeasedAsync_t' - Applications // can use it if required // // SlIpLeasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipLeased; // } break; case SL_NETAPP_IP_RELEASED_EVENT: { CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the IP-Released details (like IP-address, mac // etc) will be available in 'SlIpReleasedAsync_t' - Applications // can use it if required // // SlIpReleasedAsync_t *pEventData = NULL; // pEventData = &pNetAppEvent->EventData.ipReleased; // } break; default: { UART_PRINT("[NETAPP EVENT] Unexpected event [0x%x] \n\r", pNetAppEvent->Event); } break; } }
//***************************************************************************** // //! On Successful completion of Wlan Connect, This function triggers Connection //! status to be set. //! //! \param pSlWlanEvent pointer indicating Event type //! //! \return None //! //***************************************************************************** void SimpleLinkWlanEventHandler(SlWlanEvent_t *pSlWlanEvent) { switch(pSlWlanEvent->Event) { case SL_WLAN_CONNECT_EVENT: { SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected AP (like name, MAC etc) will be // available in 'sl_protocol_wlanConnectAsyncResponse_t'-Applications // can use it if required // // sl_protocol_wlanConnectAsyncResponse_t *pEventData = NULL; // pEventData = &pWlanEvent->EventData.STAandP2PModeWlanConnected; // // } break; case SL_WLAN_DISCONNECT_EVENT: { sl_protocol_wlanConnectAsyncResponse_t* pEventData = NULL; CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); pEventData = &pSlWlanEvent->EventData.STAandP2PModeDisconnected; // If the user has initiated 'Disconnect' request, //'reason_code' is SL_USER_INITIATED_DISCONNECTION if(SL_USER_INITIATED_DISCONNECTION == pEventData->reason_code) { UART_PRINT("Device disconnected from the AP on application's " "request \n\r"); } else { UART_PRINT("Device disconnected from the AP on an ERROR..!! \n\r"); } } break; case SL_WLAN_STA_CONNECTED_EVENT: { // when device is in AP mode and any client connects to device cc3xxx SET_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); // // Information about the connected client (like SSID, MAC etc) will be // available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModeStaConnected; // } break; case SL_WLAN_STA_DISCONNECTED_EVENT: { // when client disconnects from device (AP) CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_LEASED); // // Information about the connected client (like SSID, MAC etc) will // be available in 'slPeerInfoAsyncResponse_t' - Applications // can use it if required // // slPeerInfoAsyncResponse_t *pEventData = NULL; // pEventData = &pSlWlanEvent->EventData.APModestaDisconnected; // } break; default: { UART_PRINT("[WLAN EVENT] Unexpected event \n\r"); } break; } }