bluetoothengine/btnotif/btnotifwrapper/src/btnotifwrapper.cpp
branchRCL_3
changeset 56 9386f31cc85b
parent 55 613943a21004
child 61 269724087bed
--- a/bluetoothengine/btnotif/btnotifwrapper/src/btnotifwrapper.cpp	Tue Aug 31 15:25:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +0,0 @@
-/*
-* ============================================================================
-*  Name        : btnotifwrapper.cpp
-*  Part of     : bluetoothengine / btnotif
-*  Description : Wrapper for Bluetooth Notifiers
-*
-*  Copyright © 2009 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:
-*  Nokia Corporation
-* ============================================================================
-* Template version: 4.1
-*/
-
-#include "btnotifwrapper.h"
-#include <btnotif.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <btextnotifierspartner.h>
-#endif
-
-/**  Identifier of the active object. */
-const TInt KWrapperActive = 10;
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-CBTNotifWrapper::CBTNotifWrapper( const TUid& aUid, const TUid& aChannel )
-:   MEikSrvNotifierBase2(),
-    iUid( aUid ),
-    iChannel( aChannel ),
-    iResponsePtr( NULL, 0 )
-    {
-    }
-
-
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::ConstructL()
-    {
-    // lazy initialization: members are created and destroyed when needed.
-    }
-
-
-// ---------------------------------------------------------------------------
-// NewLC
-// ---------------------------------------------------------------------------
-//
-CBTNotifWrapper* CBTNotifWrapper::NewLC( const TUid& aUid, const TUid& aChannel )
-    {
-    CBTNotifWrapper* self = new( ELeave ) CBTNotifWrapper( aUid, aChannel );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-CBTNotifWrapper::~CBTNotifWrapper()
-    {
-    Cancel();   // Cleans up buffers
-    delete iActive;
-    iBTNotif.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// Frees all the resources i.e. destruct ourselves.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::Release()
-    {
-    delete this;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// ?implementation_description
-// ---------------------------------------------------------------------------
-//
-MEikSrvNotifierBase2::TNotifierInfo CBTNotifWrapper::RegisterL()
-    {
-    return Info();
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// ?implementation_description
-// ---------------------------------------------------------------------------
-//
-MEikSrvNotifierBase2::TNotifierInfo CBTNotifWrapper::Info() const
-    {
-    MEikSrvNotifierBase2::TNotifierInfo info;
-    info.iUid = iUid;
-    info.iChannel = iChannel;
-    info.iPriority = MEikSrvNotifierBase2::ENotifierPriorityVHigh;
-    return info;
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// ?implementation_description
-// ---------------------------------------------------------------------------
-//
-TPtrC8 CBTNotifWrapper::StartL(const TDesC8& aBuffer)
-    {
-    if( !IsSync() )
-        {
-        // due to the charasteristics of Bluetooth and UI operations,
-        // most of Bluetooth notifiers do not support synchronous version.
-        User::Leave( KErrNotSupported );
-        }
-    // Call notifier server and get response.
-    if( !iBTNotif.Handle() )
-        {
-        User::LeaveIfError( iBTNotif.Connect() );
-        }
-    User::LeaveIfError( iBTNotif.StartNotifier( iUid, aBuffer ) );
-    iBTNotif.Close();
-    return KNullDesC8();
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// ?implementation_description
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::StartL(const TDesC8& aBuffer, TInt aReplySlot, 
-    const RMessagePtr2& aMessage)
-    {
-    if( !iMessage.IsNull() )
-        {
-        aMessage.Complete( KErrAlreadyExists );
-        return;
-        }
-
-    // Call notifier server and get response.
-    if( !iBTNotif.Handle() )
-        {
-        User::LeaveIfError( iBTNotif.Connect() );
-        }
-    if( !iActive )
-        {
-        iActive = CBtSimpleActive::NewL( *this, KWrapperActive );
-        }
-
-    // We need to store the parameters locally, as aBuffer is destroyed after
-    // returning from this call. We do it on the heap, so we do not permanently
-    // consume memory for the buffer.
-
-    iParamsBuf.CreateL( aBuffer );
-    TInt len = aMessage.GetDesMaxLength( aReplySlot );
-    
-    iResponseBuf.CreateL( len );
-    aMessage.ReadL( aReplySlot, iResponseBuf );
-
-    iBTNotif.StartNotifierAndGetResponse( iActive->RequestStatus(),
-                iUid, iParamsBuf, iResponseBuf );
-    iActive->GoActive();
-    // record the request
-    iReplySlot = aReplySlot;
-    iMessage = aMessage;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// ?implementation_description
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::Cancel()
-    {
-    // Call notifier server to cancel.
-    if( iActive  )
-        {
-        iActive->Cancel(); 
-        }
-    if( !iMessage.IsNull() )
-        {
-        iMessage.Complete( KErrCancel );
-        }
-    iReplySlot = 0;
-    iParamsBuf.Close();
-    iResponseBuf.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// Synchronous notifier update.
-// ---------------------------------------------------------------------------
-//
-TPtrC8 CBTNotifWrapper::UpdateL(const TDesC8& aBuffer)
-    {
-    // Call notifier server and get response.
-    TBuf8<256> response;
-    if( !iBTNotif.Handle() )
-        {
-        User::LeaveIfError( iBTNotif.Connect() );
-        }
-    User::LeaveIfError( iBTNotif.UpdateNotifier( iUid, aBuffer, response ) );
-    return response;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MEikSrvNotifierBase2.
-// Asynchronous notifier update.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage)
-    {
-    (void) aReplySlot;
-    (void) aBuffer;
-    if( iMessage.IsNull() )
-        {
-        // There is no outstanding request, can't relate this to anything.
-        aMessage.Complete( KErrNotFound );
-        return;
-        }
-    // Call notifier server and get response.
-    // Async updates are just for updating parameters, so they are still 
-    // done synchronously between here and btnotif, as they don't 
-    // require any user feedback or other response with
-    // asynchronous/long cycles.
-    TPtrC8 response = UpdateL( aBuffer );
-    aMessage.WriteL( aReplySlot, response );
-    aMessage.Complete( KErrNone );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MBtSimpleActiveObserver.
-// Callback to notify that an outstanding request has completed.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus )
-    {
-    ASSERT( aActive->RequestId() == KWrapperActive );
-    (void) aActive;
-    if( !iMessage.IsNull() )
-        {
-        TInt err( aStatus );
-        if( !err )
-            {
-            err = iMessage.Write( iReplySlot, iResponseBuf );
-            }
-        iMessage.Complete( err );
-        }
-    // Clean up after usage.
-    iBTNotif.Close();
-    delete iActive;
-    iActive = NULL;
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class MBtSimpleActiveObserver.
-// Cancel and clean up all requests related to the active object.
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::CancelRequest( TInt aRequestId )
-    {
-    ASSERT( aRequestId == KWrapperActive );
-    (void) aRequestId;
-    iBTNotif.CancelNotifier( iUid );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MBtSimpleActiveObserver.
-// 
-// ---------------------------------------------------------------------------
-//
-void CBTNotifWrapper::HandleError( CBtSimpleActive* aActive, 
-        TInt aError )
-    {
-    // RequestCompletedL() is not leavable.
-    (void) aActive;
-    (void) aError;
-    }
-
-// ---------------------------------------------------------------------------
-// Check if this is a synchronous notifier or not.
-// ---------------------------------------------------------------------------
-//
-TBool CBTNotifWrapper::IsSync() const
-    {
-    return ( iUid == KBTGenericInfoNotifierUid );
-    }