// -----------------------------------------------------------------------------
// 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>" )    
    }
示例#3
0
// -----------------------------------------------------------------------------
// 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 );
        }
    }
示例#5
0
// -----------------------------------------------------------------------------
// 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
    }
示例#7
0
// -----------------------------------------------------------------------------
// 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 );
        }        
    }
示例#8
0
// -----------------------------------------------------------------------------
// 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 );
    }