// ----------------------------------------------------------------------------- // CPhSrvSubSessionEmergencyNum::CmdSubSessionDialEmergencyCall // // Initiates emergency call // // ----------------------------------------------------------------------------- // void CPhSrvSubSessionEmergencyNum::CmdSubSessionDialEmergencyCallL( const RMessage2& aMessage ) { _DPRINT( 4, "PhSrv.CPhSrvSubSessionEmergencyNum.DialEM" ); // debug print // Submit a new request to the call manager MPhSrvEmergencyNegotiatorCall& callNegotiator = PhoneSession().PhoneServer().EmergencyCallNegotiatorL(); callNegotiator.EmergencyDialL( aMessage ); }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionImageHandler::~CPhSrvSubSessionImageHandler // // Destructor. // ----------------------------------------------------------------------------- // CPhSrvSubSessionImageHandler::~CPhSrvSubSessionImageHandler() { _DPRINT( 4, "CPhSrvSubSessionImageHandler::Dtor" ) iVTBitMaps.ResetAndDestroy(); iOperatorLogos.ResetAndDestroy(); PhoneSession().PhoneServer().DisconnectFBS(); iFs.Close(); _DPRINT( 4, "CPhSrvSubSessionImageHandler::Dtor>" ) }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionCommandHandler::CmdSubSessionComHandCancelL // // Handle command handler client's cancel request. // ----------------------------------------------------------------------------- // void CPhSrvSubSessionCommandHandler::CmdSubSessionComHandCancelL( const RMessage2& aMessage ) { // Ask the command handler negotiator to delete any pending request for // this subsession. It will panic the client if one can't be found. MPhSrvComHandNegotiator& comHandNegotiator = PhoneSession().PhoneServer().ComHandNegotiatorL(); comHandNegotiator.NegotiatorRequestCancel( *this ); aMessage.Complete( KErrNone ); }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionEmergencyNum::PhSrvMessageProcessorHandleMessageL // // Framework function. Handle any op-codes here. // ----------------------------------------------------------------------------- // void CPhSrvSubSessionEmergencyNum::PhSrvMessageProcessorHandleMessageL( const RMessage2& aMessage ) { TBool permissionStatus ( EFalse ); // Check needed capabilities TBool hasCapNetworkControlAndServices ( EFalse ); hasCapNetworkControlAndServices = aMessage.HasCapability( ECapabilityNetworkControl, ECapabilityNetworkServices ); switch( aMessage.Function() ) { case EPhoneServerEmergencyNumberSubSessionClose: CmdSubSessionCloseL( aMessage ); permissionStatus = ETrue; break; case EPhoneServerEmergencyNumberSubSessionIsEmergencyNumber: CmdSubSessionIsEmergencyNumberL( aMessage ); permissionStatus = ETrue; break; case EPhoneServerEmergencyNumberSubsessionEmergencyDial: if ( hasCapNetworkControlAndServices ) { CmdSubSessionDialEmergencyCallL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerEmergencyNumberSubsessionEmergencyDialCancel: if ( hasCapNetworkControlAndServices ) { CmdSubSessionDialEmergencyCallCancelL( aMessage ); permissionStatus = ETrue; } break; default: PhoneSession().PanicClient( aMessage, EPhCltServerInitiatedPanicInvalidRequest ); break; } // If caps are not ok if( !permissionStatus ) { aMessage.Complete( KErrPermissionDenied ); } }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionCommandHandler::CmdSubSessionComHandForwardRequestL // // Setup an asynchronous request to handle external interface // command handler requests. // ----------------------------------------------------------------------------- // void CPhSrvSubSessionCommandHandler::CmdSubSessionComHandForwardRequestL( const RMessage2& aMessage ) { // Read parameters from client's address space. TPhCltComHandCommandParameters comHandParams; TPckg< TPhCltComHandCommandParameters > pComHandParams( comHandParams ); Read( aMessage, 0, pComHandParams ); // Submit a new request to the command handler manager. MPhSrvComHandNegotiator& comHandNegotiator = PhoneSession().PhoneServer().ComHandNegotiatorL(); comHandNegotiator.NegotiatorRequestL( aMessage, comHandParams, *this ); }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionEmergencyNum::CmdSubSessionIsEmergencyNumberL // // Check if the specified number is an emergency number // // ----------------------------------------------------------------------------- // void CPhSrvSubSessionEmergencyNum::CmdSubSessionIsEmergencyNumberL( const RMessage2& aMessage ) { _DPRINT( 4, "PhSrv.CPhSrvSubSessionEmergencyNum:Start"); // Read from client-side TPhCltTelephoneNumber number; TPckg< TPhCltTelephoneNumber > pNumber( number ); Read( aMessage, 0, pNumber ); const TPhCltEmergencyNumberQueryMode mode = static_cast< TPhCltEmergencyNumberQueryMode >( aMessage.Int2() ); // Is this an emergency number? const TBool isEmergencyNumber = PhoneSession().PhoneServer().EmergencyNumberManagerL(). EmergencyNumberManagerIsEmergencyNumberL( number, mode ); const TPckg< TBool > pIsEmergencyNumber( isEmergencyNumber ); // Write back to client if ( mode == EPhCltEmergencyNumberQueryModeAdvanced && isEmergencyNumber || mode == EPhCltEmergencyNumberQueryModeNormalWriteback && isEmergencyNumber ) { TPckg< TPhCltTelephoneNumber > pNumber2( number ); Write( aMessage, 0, pNumber2 // write emergency number back. ); } Write( aMessage, 1, // write emergency number check result back. pIsEmergencyNumber ); aMessage.Complete( KErrNone ); _DPRINT( 4, "PhSrv.CPhSrvSubSessionEmergencyNum.End" ); // debug print }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionCommandHandler::PhSrvMessageProcessorHandleMessageL // // Framework function. Handle any op-codes here. // ----------------------------------------------------------------------------- // void CPhSrvSubSessionCommandHandler::PhSrvMessageProcessorHandleMessageL( const RMessage2& aMessage ) { TBool permissionStatus ( EFalse ); // Check needed capabilities TBool hasCapNetworkControlAndServices( EFalse ); TBool hasCapNetworkServices( EFalse ); TBool hasCapWriteDeviceData( EFalse ); hasCapNetworkControlAndServices = aMessage.HasCapability( ECapabilityNetworkControl, ECapabilityNetworkServices ); hasCapNetworkServices = aMessage.HasCapability( ECapabilityNetworkServices ); hasCapWriteDeviceData = aMessage.HasCapability( ECapabilityWriteDeviceData ); switch( aMessage.Function() ) { case EPhoneServerComHandSubSessionClose: CmdSubSessionClose( aMessage ); permissionStatus = ETrue; break; case EPhoneServerComHandSubSessionAtd: if ( hasCapNetworkControlAndServices ) { CmdSubSessionComHandAtdL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionAta: if ( hasCapNetworkControlAndServices ) { CmdSubSessionComHandAtaL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionChld: if ( hasCapNetworkServices ) { CmdSubSessionComHandChldL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionChup: if ( hasCapNetworkServices ) { CmdSubSessionComHandChupL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionVts: if ( hasCapNetworkServices ) { CmdSubSessionComHandVtsL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionCancel: if ( IsCancelAllowed( aMessage ) ) { CmdSubSessionComHandCancelL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionMuteMic: if ( hasCapWriteDeviceData ) { CmdSubSessionComHandMuteMicL( aMessage ); permissionStatus = ETrue; } break; case EPhoneServerComHandSubSessionMuteRingingTone: if ( hasCapWriteDeviceData ) { CmdSubSessionComHandMuteRingingToneL( aMessage ); permissionStatus = ETrue; } break; default: PhoneSession().PanicClient( aMessage, EPhCltServerInitiatedPanicInvalidRequest ); break; } // If caps are not ok if( !permissionStatus ) { aMessage.Complete( KErrPermissionDenied ); } }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionIhf::CmdSubSessionClose // // Close the sub-session. // ----------------------------------------------------------------------------- // void CPhSrvSubSessionCommandHandler::CmdSubSessionClose( const RMessage2& aMessage ) { PhoneSession().CloseSubSession( aMessage ); }
// ----------------------------------------------------------------------------- // CPhSrvSubSessionEmergencyNum::CmdSubSessionCloseL // // Close the sub-session // ----------------------------------------------------------------------------- // void CPhSrvSubSessionEmergencyNum::CmdSubSessionCloseL( const RMessage2& aMessage ) { PhoneSession().CloseSubSession( aMessage ); }