accessoryservices/accessoryserver/inc/Server/AccSrvNotificationQueue.h
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/accessoryserver/inc/Server/AccSrvNotificationQueue.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,314 @@
+/*
+* Copyright (c) 2002-2008 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:  Subsession handles are stored here for later handling
+*
+*/
+
+
+
+#ifndef CACCSRVNOTIFICATIONQUEUE_H
+#define CACCSRVNOTIFICATIONQUEUE_H
+
+//  INCLUDES
+#include <e32std.h>
+#include <AccPolGenericID.h>
+#include <AccPolGenericIDArray.h>
+#include <AccPolAccessoryMode.h>
+#include <AsyCmdTypes.h>
+#include <AccessoryTypes.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+enum TMsgID
+    {
+    EConnectAccessory,                      //ConnaecAccessory
+    ENewAccessoryConnected,                 //NotifyNewAccessoryConnected
+    EAccessoryConnectionStatusChanged,      //NotifyAccessoryConnectionStatusChanged
+    EAccessoryConnectionStatusAsyncChanged, //GetAccessoryConnectionStatusAsync
+    EAccessoryModeChanged,                  //NotifyAccessoryModeChanged
+    EAccessoryModeAsyncChanged,             //GetAccessoryModeAsync
+    EAccessoryDisconnected,                 //NotifyAccessoryDisconnected
+    EAccessoryValueChangedTInt,             //NotifyAccessoryValueChangedTInt
+    EAccessoryValueChangedTBool,            //NotifyAccessoryValueChangedTBool
+    EAccessoryValueChangedObject,           //NotifyAccessoryValueChangedObject
+    EBluetoothAudioLinkOpenReq,             //NotifyBluetoothAudioLinkOpenReq
+    EBluetoothAudioLinkCloseReq,            //NotifyBluetoothAudioLinkCloseReq
+    EAccessoryAudioLinkOpened,              //NotifyAccessoryAudioLinkOpened
+    EAccessoryAudioLinkClosed,              //NotifyAccessoryAudioLinkClosed
+    EAccessoryAudioLinkOpen,                //AccessoryAudioLinkOpen
+    EAccessoryAudioLinkClose,               //AccessoryAudioLinkClose
+    EBluetoothAudioLinkOpenResp,            //BluetoothAudioLinkOpenResp
+    EBluetoothAudioLinkCloseResp,           //BluetoothAudioLinkCloseResp
+    ENotifyProcessCommand,                  //NotifyProcessCommand
+    ESetValue,                              //SetValueL
+    EGetValue,                              //GetValueL
+    EUnknown                                //Initialisation value for error tracking
+    };
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MQueueObserver;
+
+// CLASS DECLARATION
+
+/**
+*  Queue class for observers to register and complete messages
+*
+*  @lib AccServer.lib
+*  @since S60 3.1
+*/
+NONSHARABLE_CLASS( CAccSrvNotificationQueue ) : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CAccSrvNotificationQueue* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CAccSrvNotificationQueue();
+
+    public: // New functions
+
+        /**
+        * Register a observer to the queue.
+        * @since S60 3.1
+        * @param aMsgID    Message to which the observer is registered to.
+        * @param aCallback Handle to observer.
+        * @return void
+        */
+        void RegisterControlMessage( TMsgID aMsgID,
+                                     MQueueObserver* aCallback );
+
+        /**
+        * Cancels registeration to the queue.
+        * @since S60 3.1
+        * @param aMsgID    Message to which the observer registereation is cancelled.
+        * @param aCallback Handle to observer.
+        * @return void
+        */
+        void CancelControlMessage( TMsgID aMsgID,
+                                   MQueueObserver* aCallback );
+
+        /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @since S60 3.1
+        * @param aMsgID     Message to complete.
+        * @param aErrorCode Error code for call-back.
+        * @param aUniqueID  Generic IDs Unique ID for call-back.
+        * @return void
+        */
+        void CompleteControlMessageL( TMsgID aMsgID,
+                                      TInt aErrorCode,
+                                      TInt aUniqueID );
+
+        /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @since S60 3.1
+        * @param aMsgID       Message to complete.
+        * @param aCmdResponse Response value from ASY for call-back.
+        * @param aErrorCode   Error code for call-back.
+        * @param aTrId        Transaction ID for call-back.
+        * @return void
+        */
+        void CompleteValueMessageL( TMsgID aMsgID,
+                                    TAccValueTypeTBool aCmdResponse,
+                                    TInt aErrorCode,
+                                    TInt aTrId );
+
+        /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @since S60 3.1
+        * @param aMsgID       Message to complete.
+        * @param aCmdResponse Response value from ASY for call-back.
+        * @param aErrorCode   Error code for call-back.
+        * @param aTrId        Transaction ID for call-back.
+        * @return void
+        */
+        void CompleteValueMessageL( TMsgID aMsgID,
+                                    TAccValueTypeTInt aCmdResponse,
+                                    TInt aErrorCode,
+                                    TInt aTrId );
+
+        /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @since S60 3.1
+        * @param aMsgID       Message to complete.
+        * @param aCmdResponse Response value from ASY for call-back.
+        * @param aErrorCode   Error code for call-back.
+        * @param aTrId        Transaction ID for call-back.
+        * @return void
+        */
+        void CompleteValueMessageL( TMsgID aMsgID,
+                                    TDesC8& aCmdResponse,
+                                    TInt aErrorCode,
+                                    TInt aTrId );
+
+        /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @since S60 3.1
+        * @param aMsgID                 Message to complete.
+        * @param aCmdn                  ASY command for call-back.
+        * @param aTrId                  Transaction ID for call-back.
+        * @param aASYCommandParamRecord ASY command parameters for call-back.
+        * @param aPtrBuf Pointer to CBufFlat buffer where CAccPolObjectCon object
+        *                is externalized to.
+        * @return void
+        */
+        void CompleteASYCmdL( TMsgID aMsgID,
+                              TProcessCmdId aCmdn,
+                              TInt aTrId,
+                              TASYCommandParamRecord& aASYCommandParamRecord,
+                              TPtr8* aPtrBuf=NULL );
+
+       /**
+        * Completes the message(s) from the queue. Call-back will be called
+        * for all registered observers for message given as a parameter.
+        * @param aMsgID       Message to complete.
+        * @param aTrId        Transaction ID for call-back.
+        * @param aPtrBuf      Response value from ASY for call-back.
+        *                     Pointer to CBufFlat buffer where CAccPolObjectCon object 
+        *                     is externalized to.
+        * @param aErrorCode   Error code for call-back.
+        * @return void
+        */
+        void CompleteValueMessageL( TMsgID aMsgID,
+                                    TInt aTrId,
+                                    TPtr8* aPtrBuf,
+                                    TInt aErrorCode );
+
+
+        /**
+        * Gets the number of waiting control messages.
+        * @since S60 3.2
+        * @param aMsgID                 Message to check.
+        * @return The number of waiting messages
+        */
+        TInt ControlMessagesWaiting( TMsgID aMsgID );
+        
+    public: // Functions from base classes
+
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CAccSrvNotificationQueue();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * Return reference to correct member array.
+        */
+        RArray<MQueueObserver*>* ControlMessageArray( TMsgID aMsgID );
+
+    public:     // Data
+
+    protected:  // Data
+
+    private:    // Data
+
+        // Outstanding subsessions for "ConnectAccessory" request
+        RArray<MQueueObserver *> iConnectAccessory; //not owned
+
+        // Outstanding subsessions for "NewAccessoryConnected" notification
+        RArray<MQueueObserver *> iNewAccessoryConnectedArray; //not owned
+
+        // Outstanding subsessions for "AccessoryDisconnected" notification
+        RArray<MQueueObserver *> iAccessoryDisconnectedArray; //not owned
+
+        // Outstanding subsessions for "AccessoryModeChanged" notification
+        RArray<MQueueObserver *> iAccessoryModeChangedArray; //not owned
+
+        // Outstanding subsessions for "GetAccessoryModeAsync"
+        RArray<MQueueObserver *> iGetAccessoryModeAsyncArray; //not owned
+
+        // Outstanding subsessions for "AccessoryConnectionStatusChanged" notification
+        RArray<MQueueObserver *> iAccessoryConnectionStatusChangedArray; //not owned
+
+        // Outstanding subsessions for "GetAccessoryConnectionStatusAsync"
+        RArray<MQueueObserver *> iGetAccessoryConnectionStatusAsyncArray; //not owned
+
+        // Outstanding subsessions for "AccessoryAudioLinkOpen" requests
+        RArray<MQueueObserver *> iAccessoryAudioLinkOpenArray; //not owned
+
+        // Outstanding subsessions for "NotifyAccessoryAudioLinkOpened" notification
+        RArray<MQueueObserver *> iAccessoryAudioLinkOpenedArray; //not owned
+
+        // Outstanding subsessions for "AccessoryAudioLinkClosed" notification
+        RArray<MQueueObserver *> iAccessoryAudioLinkClosedArray; //not owned
+
+        // Outstanding subsessions for "AccessoryAudioLinkClose" request
+        RArray<MQueueObserver *> iAccessoryAudioLinkCloseArray; //not owned
+
+        // Outstanding subsessions for "BluetoothAudioLinkOpenReq" notification
+        RArray<MQueueObserver *> iBluetoothAudioLinkOpenReqArray; //not owned
+
+        // Outstanding subsessions for "BluetoothAudioLinkCloseReq" notification
+        RArray<MQueueObserver *> iBluetoothAudioLinkCloseReqArray; //not owned
+
+        // Outstanding subsessions for "BluetoothAudioLinkOpenResp" notification
+        RArray<MQueueObserver *> iBluetoothAudioLinkOpenRespArray; //not owned
+
+        // Outstanding subsessions for "BluetoothAudioLinkCloseResp" notification
+        RArray<MQueueObserver *> iBluetoothAudioLinkCloseRespArray; //not owned
+
+        // Outstanding subsessions for "NotifyProcessCommand" request
+        RArray<MQueueObserver *> iNotifyProcessCommandArray; //not owned
+
+        // Outstanding subsessions for "AccessoryValueChangedTBool" notification
+        RArray<MQueueObserver *> iNotifyAccessoryValueChangedTBoolArray; //not owned
+
+        // Outstanding subsessions for "AccessoryValueChangedTInt" notification
+        RArray<MQueueObserver *> iNotifyAccessoryValueChangedTIntArray; //not owned
+
+        // Outstanding subsessions for "AccessoryValueChangedObject" notification
+        RArray<MQueueObserver *> iNotifyAccessoryValueChangedObjectArray; //not owned
+
+        // Outstanding subsessions for SetValueL request
+        RArray<MQueueObserver *> iSetValueArray; //not owned
+
+        // Outstanding subsessions for GetValueL request
+        RArray<MQueueObserver *> iGetValueArray; //not owned
+
+    public:     // Friend classes
+
+    protected:  // Friend classes
+
+    private:    // Friend classes
+
+    };
+
+#endif      // CACCSRVNOTIFICATIONQUEUE_H
+
+// End of File