Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static long ConfigureSimpleLinkToDefaultState()
- {
- SlVersionFull ver = {0};
- _WlanRxFilterOperationCommandBuff_t RxFilterIdMask = {0};
- unsigned char ucVal = 1;
- unsigned char ucConfigOpt = 0;
- unsigned char ucConfigLen = 0;
- unsigned char ucPower = 0;
- long lRetVal = -1;
- long lMode = -1;
- lMode = sl_Start(0, 0, 0);
- ASSERT_ON_ERROR(lMode);
- if(mode==1){//broadcaster
- // If the device is not in station-mode, try configuring it in station-mode
- if (ROLE_AP != lMode)
- {
- if (ROLE_STA == lMode)
- {
- // If the device is in STA mode, we need to wait for this event
- // before doing anything
- while(!IS_IP_ACQUIRED(g_ulStatus))
- {
- #ifndef SL_PLATFORM_MULTI_THREADED
- _SlNonOsMainLoopTask();
- #endif
- }
- }
- // Switch to AP role and restart
- lRetVal = sl_WlanSetMode(ROLE_AP);
- ASSERT_ON_ERROR(lRetVal);
- lRetVal = sl_Stop(0xFF);
- ASSERT_ON_ERROR(lRetVal);
- lRetVal = sl_Start(0, 0, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Check if the device is in station again
- if (ROLE_AP != lRetVal)
- {
- // We don't want to proceed if the device is not coming up in AP-mode
- //return DEVICE_NOT_IN_STATION_MODE;
- return DEVICE_NOT_IN_AP_MODE;
- }
- }
- }else if(mode==2){// receiver
- // If the device is not in station-mode, try configuring it in station-mode
- if (ROLE_STA != lMode)
- {
- if (ROLE_AP == lMode)
- {
- // If the device is in AP mode, we need to wait for this event
- // before doing anything
- while(!IS_IP_ACQUIRED(g_ulStatus))
- {
- #ifndef SL_PLATFORM_MULTI_THREADED
- _SlNonOsMainLoopTask();
- #endif
- }
- }
- // Switch to STA role and restart
- lRetVal = sl_WlanSetMode(ROLE_STA);
- ASSERT_ON_ERROR(lRetVal);
- lRetVal = sl_Stop(0xFF);
- ASSERT_ON_ERROR(lRetVal);
- lRetVal = sl_Start(0, 0, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Check if the device is in station again
- if (ROLE_STA != lRetVal)
- {
- // We don't want to proceed if the device is not coming up in STA-mode
- return DEVICE_NOT_IN_STATION_MODE;
- }
- }
- }
- // Get the device's version-information
- ucConfigOpt = SL_DEVICE_GENERAL_VERSION;
- ucConfigLen = sizeof(ver);
- lRetVal = sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION, &ucConfigOpt,&ucConfigLen, (unsigned char *)(&ver));
- ASSERT_ON_ERROR(lRetVal);
- UART_PRINT("Host Driver Version: %s\n\r",SL_DRIVER_VERSION);
- UART_PRINT("Build Version %d.%d.%d.%d.31.%d.%d.%d.%d.%d.%d.%d.%d\n\r",
- ver.NwpVersion[0],ver.NwpVersion[1],ver.NwpVersion[2],ver.NwpVersion[3],
- ver.ChipFwAndPhyVersion.FwVersion[0],ver.ChipFwAndPhyVersion.FwVersion[1],
- ver.ChipFwAndPhyVersion.FwVersion[2],ver.ChipFwAndPhyVersion.FwVersion[3],
- ver.ChipFwAndPhyVersion.PhyVersion[0],ver.ChipFwAndPhyVersion.PhyVersion[1],
- ver.ChipFwAndPhyVersion.PhyVersion[2],ver.ChipFwAndPhyVersion.PhyVersion[3]);
- // Set connection policy to Auto + SmartConfig
- // (Device's default connection policy)
- lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Remove all profiles
- lRetVal = sl_WlanProfileDel(0xFF);
- ASSERT_ON_ERROR(lRetVal);
- //
- // Device in station-mode. Disconnect previous connection if any
- // The function returns 0 if 'Disconnected done', negative number if already
- // disconnected Wait for 'disconnection' event if 0 is returned, Ignore
- // other return-codes
- //
- if(mode==2){
- lRetVal = sl_WlanDisconnect();
- if(0 == lRetVal)
- {
- // Wait
- while(IS_CONNECTED(g_ulStatus))
- {
- #ifndef SL_PLATFORM_MULTI_THREADED
- _SlNonOsMainLoopTask();
- #endif
- }
- }
- }
- // Enable DHCP client
- lRetVal = sl_NetCfgSet(SL_IPV4_STA_P2P_CL_DHCP_ENABLE,1,1,&ucVal);
- ASSERT_ON_ERROR(lRetVal);
- // Disable scan
- ucConfigOpt = SL_SCAN_POLICY(0);
- lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , ucConfigOpt, NULL, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Set Tx power level for station mode
- // Number between 0-15, as dB offset from max power - 0 will set max power
- ucPower = 0;
- lRetVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,
- WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (unsigned char *)&ucPower);
- ASSERT_ON_ERROR(lRetVal);
- // Set PM policy to normal
- lRetVal = sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Unregister mDNS services
- lRetVal = sl_NetAppMDNSUnRegisterService(0, 0);
- ASSERT_ON_ERROR(lRetVal);
- // Remove all 64 filters (8*8)
- memset(RxFilterIdMask.FilterIdMask, 0xFF, 8);
- lRetVal = sl_WlanRxFilterSet(SL_REMOVE_RX_FILTER, (_u8 *)&RxFilterIdMask,
- sizeof(_WlanRxFilterOperationCommandBuff_t));
- ASSERT_ON_ERROR(lRetVal);
- lRetVal = sl_Stop(SL_STOP_TIMEOUT);
- ASSERT_ON_ERROR(lRetVal);
- InitializeAppVariables();
- return lRetVal; // Success
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement