I am working on a project where we use the RConnection object to manage Wi-Fi and GPRS connections. Our application needs to run on MR, FP1 and FP2 phones, so we use the backward compatibility feature of the Symbian OS and build against the S60 3rd Edition SDK (Symbian OS 9.1).
So far all phones on which we tested worked perfectly with respect to connection management except the N96. The connection attempts always results in connection failures. The test environment is always the same and the access points used to test with the N96 are exactly the same as with all other phones so signal quality is not in cause. Furthermore, the access points are perfectly useable by the phone's browser.
The following describes with more details what we have experienced.
We synchronize our application's known access points with the phone's database and this seems to work perfectly since all configured access points are listed in our application. Lets say that there are access points with IDs 9 and 10.
When we scan the air for the available access points, an access point with ID 11 is found. We cannot connect to it, since it is not configured in the phone's database nor in our application. Yet one of the two known access point is available at that time (this is known for the test environment). Why is this unknown access point returned ?
The application offers the possibility to select the access point to which it should connect and when it is told to attempt a connection to AP ID 9, the connection succeeds. But even though this access point is WLAN and is properly configured as such, the phone indicates that it connects in GPRS. Once the connection is established the signal strength level is monitored. Upon the first report, the signal strength is reported as low (> 90).
Why is the access point connected in GPRS? And, why is this signal strength value returned since we are very close to the access point.
At other times a connection attempt done in the exact same way as the last point will result in a failure of the RConnection::Start() method. The returned error is TRequestStatus(-2). The access point is available and close to the phone.
The API used for those various operations are:
- Database synchronization:
- Access point scanning:
- RConnectionMonitor::GetPckgAttribute(EBearerIdWLAN, 0, KIapAvailability, iapBuf, status)
- Access point connection:
- Access point signal strength monitoring:
- RConnectionMonitor::GetUintAttribute(uConnectionId, 0, KIAPId, uIApId, status)
- RConnectionMonitor::GetPckgAttribute(uConnectionId, 0, KClientInfo, clientBuf, status)
- RConnectionMonitor::GetIntAttribute(uConnectionId, 0, KSignalStrength, nStrength, status)
Is there known issues or has anyone ever got any problems with any of these APIs on the N96 phone ?
Our N96 phone info is as follows:
Software version: 11.101
Software version date: 23-09-2008
Custom version: 11.101.098.1
Custom version date: 23-09-2008
Language set 002
Thanks for your help,