|
1 // MmfDevSoundCustomInterfaceExtensions.h |
|
2 |
|
3 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
4 // All rights reserved. |
|
5 // This component and the accompanying materials are made available |
|
6 // under the terms of "Eclipse Public License v1.0" |
|
7 // which accompanies this distribution, and is available |
|
8 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
9 // |
|
10 // Initial Contributors: |
|
11 // Nokia Corporation - initial contribution. |
|
12 // |
|
13 // Contributors: |
|
14 // |
|
15 // Description: |
|
16 // |
|
17 |
|
18 /** |
|
19 @file |
|
20 @publishedPartner |
|
21 @released |
|
22 */ |
|
23 |
|
24 #ifndef MMFDEVSOUNDCUSTOMINTERFACEEXTENSIONS_H |
|
25 #define MMFDEVSOUNDCUSTOMINTERFACEEXTENSIONS_H |
|
26 |
|
27 //INCLUDES |
|
28 #include <mmf/common/mmfcontrollerframework.h> |
|
29 #include <mmf/common/mcustomcommand.h> |
|
30 #include <mmf/common/mcustominterface.h> |
|
31 #include <a3f/mmfdevsoundcustominterfaceextensions.hrh> |
|
32 |
|
33 //CLASS DECLARATION |
|
34 /** |
|
35 Mixins for client-side Custom Interface Extension. |
|
36 */ |
|
37 class MDevSoundCIClientExtension |
|
38 { |
|
39 public: |
|
40 /** |
|
41 Must be called after successfully creating ECOM implementation. |
|
42 @param aCustomCommand Reference to implementation of CI Extension Support interface. |
|
43 @return an error code KErrNone if successful, otherwise one of the system wide error codes. |
|
44 */ |
|
45 virtual TInt Setup(MCustomCommand& aCustomCommand) = 0; |
|
46 /** |
|
47 Called to obtain a pointer to the Custom Interface Extension. |
|
48 This allows a Custom or Extension Interface, that uses a pattern different to the standard Custom Interface, to be implemented. |
|
49 Note that ownership of the interface will depend on the UID. |
|
50 @param aUid UID of the required interface. |
|
51 @param aInterface Used to return pointer to the interface. Must be NULL if no matching interface. |
|
52 @return an error code KErrNone if successful, otherwise one of the system wide error codes. |
|
53 */ |
|
54 virtual TInt CustomInterfaceExtension(TUid aUid, TAny*& aInterface) = 0; |
|
55 /** |
|
56 Equivalent to destructor. Called to destroy plugin. |
|
57 */ |
|
58 virtual void Release() = 0; |
|
59 /** |
|
60 Called by framework during construction (after Setup) and is used to pass a destructor key for ECom. |
|
61 The passed UID must be retained for the lifetime of the plugin and, on a subsequent call to Release(), |
|
62 REComSession::DestroyedImplementation() must be called by the plugin, using the stored UID. |
|
63 @param aDestructorKey The Uid returned by REComSession::CreateImplementationL() or similar. |
|
64 */ |
|
65 virtual void PassDestructorKey(TUid aDestructorKey) = 0; |
|
66 }; |
|
67 |
|
68 //CLASS DECLARATION |
|
69 /** |
|
70 Mixins for server-side Custom Interface Extension. |
|
71 */ |
|
72 class MDevSoundCIServerExtension |
|
73 { |
|
74 public: |
|
75 /** |
|
76 Will be called by framework after successfully creating ECOM implementation. |
|
77 @param aInterface Reference to implementation of CI Extension Support interface. |
|
78 @return KErrNone if successful. System wide error on failure. |
|
79 */ |
|
80 virtual TInt Setup(MCustomInterface& aInterface) = 0; |
|
81 /** |
|
82 Called by the Multimedia framework when a message is received. |
|
83 The implementation of this method is responsibile for completing the message. |
|
84 @param aMessage Message received by MM framework |
|
85 @return KErrNone if successfully handled. KErrNotSupported if message is not handled. |
|
86 @leave System wide error. |
|
87 */ |
|
88 virtual TInt HandleMessageL(const RMmfIpcMessage& aMessage) = 0; |
|
89 /** |
|
90 Equivalent to destructor. Called to destroy plugin. |
|
91 */ |
|
92 virtual void Release() = 0; |
|
93 /** |
|
94 Called by framework during construction (after Setup) and is used to pass a destructor key for ECom. |
|
95 The passed UID must be retained for the lifetime of the plugin and, on a subsequent call to Release(), |
|
96 REComSession::DestroyedImplementation() must be called by the plugin, using the stored UID. |
|
97 @param aDestructorKey The Uid returned by REComSession::CreateImplementationL() or similar. |
|
98 */ |
|
99 virtual void PassDestructorKey(TUid aDestructorKey) = 0; |
|
100 }; |
|
101 |
|
102 |
|
103 #endif |