--- /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__
+