diff -r 8116cc943311 -r 5c72fd91570d services/terminalmodeservice_plat/inc/upnptmserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/services/terminalmodeservice_plat/inc/upnptmserver.h Tue Aug 31 16:06:48 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 // CBase +#include +#include +#include + +//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& 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& 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& 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& 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& aUnusedProfileIdList ); + +private: + CUpnpTmServer(); + void ConstructL( CUpnpTmServerDeviceInfo& aDeviceInfo, + MUpnpTmServerObserver& aUpnpRemoteServer ); + +private: + // The "body"/implementation + CUpnpTmServerImpl* iTmServerImpl; + }; + +#endif // __UPNPTMSERVER_H__ +