os/mm/devsoundextensions/mmfcustominterfaces/G711EncoderIntfc/G711EncoderIntfcMsgHdlr/src/G711EncoderIntfcMsgHdlr.cpp
Update contrib.
2 * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
14 * Description: Message handler for G711 encoder interface
21 #include "G711EncoderIntfcMsgHdlr.h"
22 #include "G711EncoderIntfcMsgs.h"
23 #include <G711EncoderIntfc.h>
25 // EXTERNAL DATA STRUCTURES
27 // EXTERNAL FUNCTION PROTOTYPES
33 // LOCAL CONSTANTS AND MACROS
35 // MODULE DATA STRUCTURES
37 // LOCAL FUNCTION PROTOTYPES
39 // FORWARD DECLARATIONS
41 // ============================= LOCAL FUNCTIONS ===============================
43 // ============================ MEMBER FUNCTIONS ===============================
45 // -----------------------------------------------------------------------------
46 // CG711EncoderIntfcMsgHdlr::CG711EncoderIntfcMsgHdlr
47 // C++ default constructor can NOT contain any code, that
49 // -----------------------------------------------------------------------------
51 CG711EncoderIntfcMsgHdlr::CG711EncoderIntfcMsgHdlr(
52 CG711EncoderIntfc* aG711EncoderIntfcCI) :
53 CMMFObject(KUidG711EncoderIntfc)
55 iG711EncoderIntfcCI = aG711EncoderIntfcCI;
58 // -----------------------------------------------------------------------------
59 // CG711EncoderIntfcMsgHdlr::ConstructL
60 // Symbian 2nd phase constructor can leave.
61 // -----------------------------------------------------------------------------
63 void CG711EncoderIntfcMsgHdlr::ConstructL()
67 // -----------------------------------------------------------------------------
68 // CG711EncoderIntfcMsgHdlr::NewL
69 // Two-phased constructor.
70 // -----------------------------------------------------------------------------
72 EXPORT_C CG711EncoderIntfcMsgHdlr* CG711EncoderIntfcMsgHdlr::NewL(
73 TAny* aG711EncoderIntfcCI)
75 CG711EncoderIntfc* errorConcealmentIntfcCI =
76 (CG711EncoderIntfc*)aG711EncoderIntfcCI;
77 CG711EncoderIntfcMsgHdlr* self =
78 new (ELeave) CG711EncoderIntfcMsgHdlr(errorConcealmentIntfcCI);
79 CleanupStack::PushL( self );
81 CleanupStack::Pop( self );
87 EXPORT_C CG711EncoderIntfcMsgHdlr::~CG711EncoderIntfcMsgHdlr()
89 delete iG711EncoderIntfcCI;
92 // ---------------------------------------------------------
93 // CG711EncoderIntfcMsgHdlr::HandleRequest
94 // Handles the messages from the proxy.
95 // Calls a subfunction which determines which custom interface to call.
96 // A subfunction is used to contain multiple leaving functions for a single
98 // (other items were commented in a header).
99 // ---------------------------------------------------------
101 EXPORT_C void CG711EncoderIntfcMsgHdlr::HandleRequest(
102 TMMFMessage& aMessage)
104 ASSERT(aMessage.Destination().InterfaceId() == KUidG711EncoderIntfc);
105 TRAPD(error,DoHandleRequestL(aMessage));
108 aMessage.Complete(error);
112 // ---------------------------------------------------------
113 // CG711EncoderIntfcMsgHdlr::DoHandleRequestL
114 // Determines which custom interface to call.
115 // (other items were commented in a header).
116 // ---------------------------------------------------------
118 void CG711EncoderIntfcMsgHdlr::DoHandleRequestL(TMMFMessage& aMessage)
120 switch(aMessage.Function())
122 case EG711eimSetEncoderMode:
124 DoSetEncoderModeL(aMessage);
127 case EG711eimSetVadMode:
129 DoSetVadModeL(aMessage);
132 case EG711eimGetVadMode:
134 DoGetVadModeL(aMessage);
139 aMessage.Complete(KErrNotSupported);
144 // ---------------------------------------------------------
145 // CG711EncoderIntfcMsgHdlr::DoSetEncoderModeL
146 // Handles the message from the proxy and calls the custom interface method.
147 // The data passed from the proxy is read from the message and passed to
148 // the custom interface.
149 // (other items were commented in a header).
150 // ---------------------------------------------------------
152 void CG711EncoderIntfcMsgHdlr::DoSetEncoderModeL(TMMFMessage& aMessage)
154 TPckgBuf<CG711EncoderIntfc::TEncodeMode> pckgBuf;
155 aMessage.ReadData1FromClientL(pckgBuf);
156 TInt status = iG711EncoderIntfcCI->SetEncoderMode(pckgBuf());
157 aMessage.Complete(status);
160 // ---------------------------------------------------------
161 // CG711EncoderIntfcMsgHdlr::DoSetVadModeL
162 // Handles the message from the proxy and calls the custom interface method.
163 // The data passed from the proxy is read from the message and passed to
164 // the custom interface.
165 // (other items were commented in a header).
166 // ---------------------------------------------------------
168 void CG711EncoderIntfcMsgHdlr::DoSetVadModeL(TMMFMessage& aMessage)
170 TPckgBuf<TBool> pckgBuf;
171 aMessage.ReadData1FromClientL(pckgBuf);
172 TInt status = iG711EncoderIntfcCI->SetVadMode(pckgBuf());
173 aMessage.Complete(status);
176 // ---------------------------------------------------------
177 // CG711EncoderIntfcMsgHdlr::DoGetVadModeL
178 // Handles the message from the proxy and calls the custom interface.
179 // The custom interface returns the data requested and this function
180 // writes it back to the proxy.
181 // (other items were commented in a header).
182 // ---------------------------------------------------------
184 void CG711EncoderIntfcMsgHdlr::DoGetVadModeL(TMMFMessage& aMessage)
187 TInt status = iG711EncoderIntfcCI->GetVadMode(vadMode);
188 if (status == KErrNone)
190 TPckgBuf<TBool> pckgBuf;
192 aMessage.WriteDataToClientL(pckgBuf);
194 aMessage.Complete(status);