accessoryservices/autoaudioasy/src/cautoaudioasypropertyobserver.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 16:29:05 +0300
branchRCL_3
changeset 21 ccb4f6b3db21
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Notify service class about connection state.
*
*/

#include "cautoaudioasypropertyobserver.h" 
#include "autoaudiopskeys.h"
#include "mautoaudioasypropertylistener.h"

#include "acc_debug.h"

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::NewL
// ---------------------------------------------------------------------------
CAutoAudioAsyPropertyObserver* CAutoAudioAsyPropertyObserver::NewL ( TUid aCategory, TUint aKey,
        MAutoAudioAsyPropertyListener& aListener )
	{
    COM_TRACE_1 ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::NewL(), key- %d", aKey );
    return new ( ELeave ) CAutoAudioAsyPropertyObserver ( aCategory, aKey, aListener );
	}

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::CAutoAudioAsyPropertyObserver
// ---------------------------------------------------------------------------
CAutoAudioAsyPropertyObserver::CAutoAudioAsyPropertyObserver ( TUid aCategory, TUint aKey,
        MAutoAudioAsyPropertyListener& aListener ):
    CActive ( EPriorityStandard ),
    iCategory ( aCategory ), iKey ( aKey ), iListener ( aListener )
    {
    CActiveScheduler::Add ( this );    
    iProperty.Attach ( iCategory, iKey );
    iProperty.Subscribe ( iStatus );
    SetActive ();
    }

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver
// ---------------------------------------------------------------------------
CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver ()
    {
    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver");
    Cancel ();
    iProperty.Close ();
    }

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::RunL
// ---------------------------------------------------------------------------
void CAutoAudioAsyPropertyObserver::RunL ()
    {                      
    COM_TRACE_ ( "AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::RunL");

    TInt status = iStatus.Int ();
    COM_TRACE_3 ( "[AccFW:AutoAudioAsy] key 0x%08x/%u changed, status %d", iCategory.iUid, iKey, status );
    // Subscribe for the next change BEFORE invoking the listener to make sure
    // that we never miss any property changes.
    iProperty.Subscribe ( iStatus );
    SetActive ();

    // Notify the listener
    iListener.PropertyChange ( iProperty, iCategory, iKey, status );
    }

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::DoCancel
// ---------------------------------------------------------------------------
void CAutoAudioAsyPropertyObserver::DoCancel ()
    {
    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::DoCancel" );
    iProperty.Cancel ();
    }    

// ---------------------------------------------------------------------------
// CAutoAudioAsyPropertyObserver::RunError
// ---------------------------------------------------------------------------
TInt CAutoAudioAsyPropertyObserver::RunError ( TInt /* aError */ )
	{
    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::RunError" );
    return KErrNone;
	}