//***************************************************************************** // //! Network_IF_DeInitDriver //! The function de-initializes a CC3200 device //! //! \param None //! //! \return none // //***************************************************************************** void Network_IF_DeInitDriver(void) { UART_PRINT("SL Disconnect...\n\r"); // // Disconnect from the AP // Network_IF_DisconnectFromAP(); // // Stop the simplelink host // sl_Stop(SL_STOP_TIMEOUT); // // Reset the state to uninitialized // Network_IF_ResetMCUStateMachine(); }
//***************************************************************************** // //! Network_IF_ConnectAP Connect to an Access Point using the specified SSID //! //! \param[in] pcSsid is a string of the AP's SSID //! \param[in] SecurityParams is Security parameter for AP //! //! \return On success, zero is returned. On error, -ve value is returned // //***************************************************************************** long Network_IF_ConnectAP(char *pcSsid, SlSecParams_t SecurityParams) { #ifndef NOTERM char acCmdStore[128]; unsigned short usConnTimeout; unsigned char ucRecvdAPDetails; #endif long lRetVal; unsigned long ulIP = 0; unsigned long ulSubMask = 0; unsigned long ulDefGateway = 0; unsigned long ulDns = 0; // // Disconnect from the AP // Network_IF_DisconnectFromAP(); // // This triggers the CC3200 to connect to specific AP // lRetVal = sl_WlanConnect((signed char *)pcSsid, strlen((const char *)pcSsid), NULL, &SecurityParams, NULL); ASSERT_ON_ERROR(lRetVal); // // Wait for ~10 sec to check if connection to desire AP succeeds // while(g_usConnectIndex < 15) { #ifndef SL_PLATFORM_MULTI_THREADED _SlNonOsMainLoopTask(); #else osi_Sleep(1); #endif MAP_UtilsDelay(8000000); if(IS_CONNECTED(g_ulStatus) && IS_IP_ACQUIRED(g_ulStatus)) { break; } g_usConnectIndex++; } #ifndef NOTERM // // Check and loop until AP connection successful, else ask new AP SSID name // while(!(IS_CONNECTED(g_ulStatus)) || !(IS_IP_ACQUIRED(g_ulStatus))) { // // Disconnect the previous attempt // Network_IF_DisconnectFromAP(); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); UART_PRINT("Device could not connect to %s\n\r",pcSsid); do { ucRecvdAPDetails = 0; UART_PRINT("\n\r\n\rPlease enter the AP(open) SSID name # "); // // Get the AP name to connect over the UART // lRetVal = GetCmd(acCmdStore, sizeof(acCmdStore)); if(lRetVal > 0) { // remove start/end spaces if any lRetVal = TrimSpace(acCmdStore); // // Parse the AP name // strncpy(pcSsid, acCmdStore, lRetVal); if(pcSsid != NULL) { ucRecvdAPDetails = 1; pcSsid[lRetVal] = '\0'; } } }while(ucRecvdAPDetails == 0); // // Reset Security Parameters to OPEN security type // SecurityParams.Key = (signed char *)""; SecurityParams.KeyLen = 0; SecurityParams.Type = SL_SEC_TYPE_OPEN; UART_PRINT("\n\rTrying to connect to AP: %s ...\n\r",pcSsid); // // Get the current timer tick and setup the timeout accordingly // usConnTimeout = g_usConnectIndex + 15; // // This triggers the CC3200 to connect to specific AP // lRetVal = sl_WlanConnect((signed char *)pcSsid, strlen((const char *)pcSsid), NULL, &SecurityParams, NULL); ASSERT_ON_ERROR(lRetVal); // // Wait ~10 sec to check if connection to specifed AP succeeds // while(!(IS_CONNECTED(g_ulStatus)) || !(IS_IP_ACQUIRED(g_ulStatus))) { #ifndef SL_PLATFORM_MULTI_THREADED _SlNonOsMainLoopTask(); #else osi_Sleep(1); #endif MAP_UtilsDelay(8000000); if(g_usConnectIndex >= usConnTimeout) { break; } g_usConnectIndex++; } } #endif // // Put message on UART // UART_PRINT("\n\rDevice has connected to %s\n\r",pcSsid); // // Get IP address // lRetVal = Network_IF_IpConfigGet(&ulIP,&ulSubMask,&ulDefGateway,&ulDns); ASSERT_ON_ERROR(lRetVal); // // Send the information // UART_PRINT("Device IP Address is %d.%d.%d.%d \n\r\n\r", SL_IPV4_BYTE(ulIP, 3),SL_IPV4_BYTE(ulIP, 2), SL_IPV4_BYTE(ulIP, 1),SL_IPV4_BYTE(ulIP, 0)); return 0; }
//***************************************************************************** // //! Network_IF_ConnectAP Connect to an Access Point using the specified SSID //! //! \param pcSsid is a string of the AP's SSID //! //! \return none // //***************************************************************************** int Network_IF_ConnectAP(char *pcSsid, SlSecParams_t SecurityParams) { char acCmdStore[128]; unsigned short usConnTimeout; int iRetVal; unsigned long ulIP = 0; unsigned long ulSubMask = 0; unsigned long ulDefGateway = 0; unsigned long ulDns = 0; unsigned char ucRecvdAPDetails; Network_IF_DisconnectFromAP(); // // This triggers the CC3200 to connect to specific AP // sl_WlanConnect(pcSsid, strlen(pcSsid), NULL, &SecurityParams, NULL); // // Wait to check if connection to DIAGNOSTIC_AP succeeds // while(g_usConnectIndex < 10) { MAP_UtilsDelay(8000000); g_usConnectIndex++; if(IS_CONNECTED(g_ulStatus)) { break; } } // // Check and loop until async event from network processor indicating Wlan // Connect success was received // while(!(IS_CONNECTED(g_ulStatus))) { // // Disconnect the previous attempt // CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_CONNECTION); CLR_STATUS_BIT(g_ulStatus, STATUS_BIT_IP_AQUIRED); UART_PRINT("Device could not connect to %s\n\r",pcSsid); do { ucRecvdAPDetails = 0; UART_PRINT("\n\r\n\rPlease enter the AP(open) SSID name # "); // // Get the AP name to connect over the UART // iRetVal = GetCmd(acCmdStore, sizeof(acCmdStore)); if(iRetVal > 0) { // // Parse the AP name // pcSsid = strtok(acCmdStore, ":"); if(pcSsid != NULL) { ucRecvdAPDetails = 1; } } } while(ucRecvdAPDetails == 0); UART_PRINT("\n\rTrying to connect to AP: %s ...\n\r",pcSsid); /*UART_PRINT("Key: %s, Len: %d, KeyID: %d, Type: %d\n\r", SecurityParams.Key, SecurityParams.KeyLen , SecurityParams.Type); */ // // Get the current timer tick and setup the timeout accordingly // usConnTimeout = g_usConnectIndex + 10; // // This triggers the CC3200 to connect to specific AP // sl_WlanConnect(pcSsid, strlen(pcSsid), NULL, &SecurityParams, NULL); // // Wait to check if connection to specifed AP succeeds // while(!(IS_CONNECTED(g_ulStatus))) { if(g_usConnectIndex >= usConnTimeout) { break; } MAP_UtilsDelay(8000000); g_usConnectIndex++; } } // // Wait until IP is acquired // while(!(IS_IP_ACQUIRED(g_ulStatus))); // // Put message on UART // UART_PRINT("\n\rDevice has connected to %s\n\r",pcSsid); // // Get IP address // Network_IF_IpConfigGet(&ulIP,&ulSubMask,&ulDefGateway,&ulDns); // // Send the information // UART_PRINT("Device IP Address is %d.%d.%d.%d \n\r\n\r", SL_IPV4_BYTE(ulIP, 3),SL_IPV4_BYTE(ulIP, 2), SL_IPV4_BYTE(ulIP, 1),SL_IPV4_BYTE(ulIP, 0)); return 0; }