services/terminalmodeservice_plat/inc/upnptmserver.h
changeset 24 e9457ebcc4df
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/services/terminalmodeservice_plat/inc/upnptmserver.h	Fri Jul 23 08:57:49 2010 +0300
@@ -0,0 +1,159 @@
+/**
+* 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: CUpnpTmServer class declaration
+*
+*/
+
+#ifndef __UPNPTMSERVER_H__
+#define __UPNPTMSERVER_H__
+
+//  Include Files
+#include <e32base.h>    // CBase 
+#include <upnptmserverdeviceinfo.h>
+#include <upnptmserverobserver.h>
+#include <upnpremotableapp.h>
+
+//Forward Declaration
+class CUpnpTmServerImpl;
+
+
+/**
+ * The Main interface for the Terminal Mode Service. 
+ * The client of this class (Automotive Server or equivalent) is responsible
+ * for registering/unregistering the remotable apps and updating the status 
+ * of the running apps. 
+ * The client should also "start" and "stop" the service through the API
+ * provided in this class
+ */
+class CUpnpTmServer: public CBase
+    {
+public:
+    /**
+    * Standard Symbian Two-phased constructor. 
+    * @param aDeviceInfo The IAP and device Settings that the 
+    * 					 Terminal Mode Service needs to operate. 
+    * 					 A valid IAP ID is mandatory. 
+    * @param aUpnpTmServerObserver	The callback interface that the client
+    * 											application must implement.
+    */  
+    IMPORT_C static CUpnpTmServer* NewL( CUpnpTmServerDeviceInfo& aDeviceInfo,
+                                   MUpnpTmServerObserver& aUpnpTmServerObserver );
+    ~CUpnpTmServer();
+
+public:
+    /**
+    * Method to register a single App (aka Remotable App ). 
+    * The caller must create a CUpnpRemotableApp object and 
+    * populate it before calling this method. 
+    * @param aRemotableApp	A pointer to a Remotable App object.
+	*						"Ownership" of the object is passed.
+	*						Must not be NULL.
+    */    
+    IMPORT_C void RegisterAppL( CUpnpRemotableApp* aRemotableApp );
+    /**
+    * Method to register a list of Apps (aka Remotable Apps). 
+    * The caller must create all the CUpnpRemotableApp objects 
+    * and populate them before calling this method. 
+    * This list of apps will be appended to existing list of
+    * registered apps. 
+    * @param aRemotableAppList	A RPointerArray of Remotable App objects.
+	*							"Ownership" of all the objects is passed.
+	*		         			None of the objects must be NULL.
+    */    
+    IMPORT_C void RegisterAppsL( const RPointerArray<CUpnpRemotableApp>& aRemotableAppList );
+    /**
+    * Method to unregister a single App from the service. 
+    * The specified App must be registered with the 
+    * Terminal Mode Service. 
+    * @param aAppId	The ID of the app to be unregistered
+    */    
+    IMPORT_C TInt UnRegisterApp( TUint aAppId );
+    /**
+    * Method to unregister multiple Apps from the service. 
+    * The specified Apps must be registered with the 
+    * Terminal Mode Service. 
+    * In case of duplicate appIDs ,TM service will sort out the duplicate ones
+    * and will unregister only once for a particular appID.
+    * Even if a single app from the requested array is unable to get 
+    * un-registered the method should return KErrNotFound.
+    * @param aAppIdArray The list of IDs of the apps to be unregistered
+    */    
+    IMPORT_C TInt UnRegisterApps( const RArray<TUint>& aAppIdArray );  
+    /**
+     * Method to set the XML signature of the registered apps
+     * This is done as specified in XML Signature Syntax.
+     * The signature value is opaque to the TM Service.
+     * @param aSignature XML formatted buffer
+     */
+    IMPORT_C void SetXmlSignatureL( const TDesC8& aSignature );    
+    /**
+    * Method to Start the Terminal Moder Server Device and its services.
+    * This must be called to initiate all the UPnP related
+    * activities. 
+    */    
+    IMPORT_C void StartL();
+    /**
+    * Method to Stop the Terminal Moder Server Device and its services.
+    * No further UPnP related activities will occur after this. 
+    */    
+    IMPORT_C void StopL();
+    /**
+    * Method to fetch the Remotable App object by passing the 
+    * App ID of the same. Method is invoked by the Automotive Server
+    * when it wishes to modify any of the existing remotable app.
+    * @param aAppId App ID of the requested App
+    * @param aErr[out] Error code
+    * @return Returns reference to CUpnpRemotableApp object 
+    */ 
+    IMPORT_C CUpnpRemotableApp& GetRemotableApp( TUint aAppId, TInt& aErr );
+    /**
+    * Method through which the notification of applications whose status 
+    * has changed is sent across to the Car Kit through the Service .
+    * TM Service ignores the duplicate appIDs and sends only the list of
+    * unique appIDs.
+    * @param aUpdatedAppIdList List of appIDs whose status has changed
+    */    
+    IMPORT_C void UpdateAppStatusL( const RArray<TUint>& aUpdatedAppIdList );
+    /**
+    * Method through which the notification of applications whose entries
+    * in the application list have changed is sent across to the Car Kit 
+    * through the Service.
+    * TM Service ignores the duplicate appIDs and sends only the list of
+    * unique appIDs.
+    * @param aUpdatedAppIdList List of appIDs whose entries haave changed
+    */  
+    IMPORT_C void UpdateAppListL( const RArray<TUint>& aUpdatedAppIdList );
+    /**
+    * Method through which the notification of profileIDs which are not used
+    * used by any Terminal Mode service hosted on the Terminal Mode device
+    * is sent across to the Car Kit through the Service.
+    * TM Service ignores the duplicate profileIDs and sends only the list of
+    * unique profileIDs.
+    * @param aUnusedProfileIdList List of profile IDs for profiles which are 
+    *                  currently not being used by any Terminal Mode service 
+    */  
+    IMPORT_C void UpdateUnusedProfileIdsL( const RArray<TUint>& aUnusedProfileIdList );
+    
+private:
+    CUpnpTmServer();
+    void ConstructL( CUpnpTmServerDeviceInfo& aDeviceInfo, 
+                             MUpnpTmServerObserver& aUpnpRemoteServer );
+
+private:
+    // The "body"/implementation   
+    CUpnpTmServerImpl*   iTmServerImpl;   
+    };
+
+#endif  // __UPNPTMSERVER_H__
+