Hello,
I implement application which uses WiFi access point for VoIP purpose. Some time (unfortunately I can't be sure how to reproduce this bug) I see that my RConnection can't be connected (work correctly) to determined WLAN AP when phone is placed in good WiFi coverage with good RSSI level, I receive Be informed I can't check what exactly this error means, as any docs and header files don't include it.
Also my application uses SIP profile based on the same AP that my RConnection.
Please see exact behavior:
1) Start application where WiFi coverage is good. App is connected to the server successfully.
2) Move out WiFi coverage. App show that it is disconneced.
3) Come back to WiFi. And waiting.
4) After Some time SIP Profile is registered. My phone displays the icon of wifi-connectivity. Also I have MS Outlook running on the phone that uses same WiFi Access Point. It also works fine.
5) But my application can't connect to AP. Using logs I see iStatus.Int() == -30180 in RunL() function.
6) Exited the application and restarted. The same behaviour, can't connect.
7) Went to “wlan wizard” of the phone. Disconnected the wlan manually. Restarted my app. Now it connects. iStatus.Int() == 0
Please see code.
Code:
void WiFiMonitor::StartSearch()
{
LOGTXT("WiFiMonitor | StartSearch() | entry");
if (IsActive())
{
return;
}
TCommDbConnPref prefs;
TInt err = iSocketServer.Connect(KESockDefaultMessageSlots);
if(err != KErrNone)
{
LOGERR_ARG("WiFiMonitor | StartSearch() | iSocketServer.Connect() Failure Err :%d", err);
}
err = iConnection.Open(iSocketServer, KConnectionTypeDefault);
if(err != KErrNone)
{
LOGERR_ARG("WiFiMonitor | StartSearch() | iConnection.Open() Failure Code :%d",err);
}
prefs.SetIapId(appUi->l_IAP);
prefs.SetDialogPreference(ECommDbDialogPrefPrompt);
prefs.SetDirection(ECommDbConnectionDirectionOutgoing);
prefs.SetBearerSet(KCommDbBearerWLAN);
LOGTXT("WiFiMonitor | StartSearch() | Set prefs");
iConnection.Start(prefs,iStatus);
LOGTXT("WiFiMonitor | StartSearch() | iConnection.Start()");
SetActive();
LOGTXT("WiFiMonitor | StartSearch() | exit");
}
void WiFiMonitor::RunL( )
{
LOGTXT("WiFiMonitor | RunL() | [callback=CActive] entry");
CArubaFMCClientAppUi* appUi = (CArubaFMCClientAppUi*)CEikonEnv::Static()->EikAppUi();
TInt err = KErrNone;
if ( iStatus.Int ( )== KErrNone && iCallBackFlag )
{
err = iQOSSocket.Open (iSocketServer, KAfInet, KSockDatagram,
KProtocolInetUdp, iConnection );
}
LOGERR_ARG("WiFiMonitor | RunL() | WiFi Error :%d socket error: %d",iStatus.Int(), err);
LOGTXT("WiFiMonitor | RunL() | [callback=CActive] exit");
}
Thanks for help.
-strutv