
Chapter 19: Wireless Wide-Area Networking
Initializing the WWAN Driver
203
Psion Mobile Devices Developers Guide
~WWANReadyStateListener()
{
if (WwanReadyEvent != 0)
{
CloseHandle(WwanReadyEvent);
WwanReadyEvent = 0;
}
}
HANDLE GetWwanReadyEvent(){ return WwanReadyEvent; }
virtual void OnReadyState( const WWAN_READY_STATE &ReadyState )
{
if ((ReadyState.State & WWAN_READY_STATE_INITIALIZED) != 0 )
{
if (WwanReadyEvent != 0)
{
SetEvent(WwanReadyEvent);
}
}
}
private:
HANDLE WwanReadyEvent;
};
bool InitializeWWANAndWait()
{
WWanRequestParameters params = {0};
WWAN_READY_STATE* wwanReadyStatePtr = 0;
WwanRequestStatus retVal;
// See if the WWAN namespace has been initialized, and get the ready state.
retVal = WirelessWAN::GetReadyState(params, &wwanReadyStatePtr);
if(WwanRequestNotInitialized == retVal)
{
// The namespace is not initialized, attempt to do so:
if (WwanResultSuccess != WirelessWAN::Initialize())
{
// Error initializing the WWAN namespace.
return false;
}
// Try again.
retVal = WirelessWAN::GetReadyState(params, &wwanReadyStatePtr);
}
if ( retVal != WwanRequestSuccess ||
params.resultCode != WwanResultSuccess ||
wwanReadyStatePtr == 0)
{
// Unable to get the ready state. See return value/result code for reason.
return false;
}
ULONG readyState = wwanReadyStatePtr->State;
// Memory was allocated by "GetReadyState(...)"
free(wwanReadyStatePtr);
if ((readyState & WWAN_READY_STATE_INITIALIZED) != 0 )
{
// Already in the ready state.
return true;
}
// The wwan driver (or modem) is not in a usable state yet.
Comentarios a estos manuales