os/mm/devsoundextensions/mmfcustominterfaces/SpeechEncoderConfig/SpeechEncoderConfigProxy/src/SpeechEncoderConfigProxy.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). 
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description:   Interface proxy for speech encoder configuration.
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
sl@0
    20
// INCLUDE FILES
sl@0
    21
#include "SpeechEncoderConfigProxy.h"
sl@0
    22
#include "SpeechEncoderConfigMsgs.h"
sl@0
    23
#include <CustomCommandUtility.h>
sl@0
    24
#include <CustomInterfaceUtility.h>
sl@0
    25
sl@0
    26
// EXTERNAL DATA STRUCTURES
sl@0
    27
sl@0
    28
// EXTERNAL FUNCTION PROTOTYPES  
sl@0
    29
sl@0
    30
// CONSTANTS
sl@0
    31
sl@0
    32
// MACROS
sl@0
    33
sl@0
    34
// LOCAL CONSTANTS AND MACROS
sl@0
    35
sl@0
    36
// MODULE DATA STRUCTURES
sl@0
    37
sl@0
    38
// LOCAL FUNCTION PROTOTYPES
sl@0
    39
sl@0
    40
// FORWARD DECLARATIONS
sl@0
    41
sl@0
    42
// ============================= LOCAL FUNCTIONS ===============================
sl@0
    43
sl@0
    44
// ================= MEMBER FUNCTIONS =======================
sl@0
    45
sl@0
    46
// -----------------------------------------------------------------------------
sl@0
    47
// CSpeechEncoderConfigProxy::CSpeechEncoderConfigProxy
sl@0
    48
// C++ default constructor can NOT contain any code, that
sl@0
    49
// might leave.
sl@0
    50
// -----------------------------------------------------------------------------
sl@0
    51
//
sl@0
    52
CSpeechEncoderConfigProxy::CSpeechEncoderConfigProxy(
sl@0
    53
                            TMMFMessageDestinationPckg aMessageHandler, 
sl@0
    54
                            MCustomCommand& aCustomCommand,
sl@0
    55
                            CCustomInterfaceUtility* aCustomInterfaceUtility) :
sl@0
    56
	iCustomCommand(aCustomCommand),
sl@0
    57
	iMessageHandler(aMessageHandler),
sl@0
    58
	iCustomInterfaceUtility(aCustomInterfaceUtility)
sl@0
    59
    {
sl@0
    60
    }
sl@0
    61
sl@0
    62
sl@0
    63
// -----------------------------------------------------------------------------
sl@0
    64
// CSpeechEncoderConfigProxy::ConstructL
sl@0
    65
// Symbian 2nd phase constructor can leave.
sl@0
    66
// -----------------------------------------------------------------------------
sl@0
    67
//
sl@0
    68
void CSpeechEncoderConfigProxy::ConstructL()
sl@0
    69
    {
sl@0
    70
    }
sl@0
    71
sl@0
    72
// -----------------------------------------------------------------------------
sl@0
    73
// CSpeechEncoderConfigProxy::NewL
sl@0
    74
// Two-phased constructor.
sl@0
    75
// -----------------------------------------------------------------------------
sl@0
    76
//
sl@0
    77
EXPORT_C CSpeechEncoderConfigProxy* CSpeechEncoderConfigProxy::NewL(
sl@0
    78
                               TMMFMessageDestinationPckg aMessageHandler, 
sl@0
    79
                               MCustomCommand& aCustomCommand,
sl@0
    80
                               CCustomInterfaceUtility* aCustomInterfaceUtility)
sl@0
    81
    {
sl@0
    82
    CSpeechEncoderConfigProxy* self = new(ELeave) CSpeechEncoderConfigProxy(
sl@0
    83
                                                      aMessageHandler,
sl@0
    84
                                                      aCustomCommand,
sl@0
    85
                                                      aCustomInterfaceUtility);
sl@0
    86
    CleanupStack::PushL( self );
sl@0
    87
    self->ConstructL();
sl@0
    88
    CleanupStack::Pop( self );
sl@0
    89
    return self;
sl@0
    90
    }
sl@0
    91
    
sl@0
    92
// Destructor
sl@0
    93
EXPORT_C CSpeechEncoderConfigProxy::~CSpeechEncoderConfigProxy()
sl@0
    94
    {
sl@0
    95
    iCustomInterfaceUtility->RemoveCustomInterface(iMessageHandler);
sl@0
    96
    delete iCustomInterfaceUtility;
sl@0
    97
    }
sl@0
    98
sl@0
    99
// ---------------------------------------------------------
sl@0
   100
// CSpeechEncoderConfigProxy::GetSupportedBitrates
sl@0
   101
// Calls a  subfunction which sends the appropriate custom command for this
sl@0
   102
// function to its message handler. A subfunction is used
sl@0
   103
// to contain multiple leaving functions for a single trap.
sl@0
   104
// (other items were commented in a header).
sl@0
   105
// ---------------------------------------------------------
sl@0
   106
//
sl@0
   107
EXPORT_C TInt CSpeechEncoderConfigProxy::GetSupportedBitrates(
sl@0
   108
                                           RArray<TUint>& aSupportedBitrates)
sl@0
   109
    {
sl@0
   110
    TInt status;
sl@0
   111
    TRAP(status, GetSupportedBitratesL(aSupportedBitrates));
sl@0
   112
    return status;
sl@0
   113
    }
sl@0
   114
sl@0
   115
// ---------------------------------------------------------
sl@0
   116
// CSpeechEncoderConfigProxy::GetSupportedBitratesL
sl@0
   117
// Sends the custom command for this function to its message handler.
sl@0
   118
// This requires two commands. The first is a request for the number of
sl@0
   119
// supported bitrates. A buffer is allocated locally to hold this number of
sl@0
   120
// bitrates that will be returned. A pointer to this buffer is sent with the
sl@0
   121
// next command which is a request for the bitrates. This buffer will be filled
sl@0
   122
// with the bitrate values. These bitrates are then copied into the array
sl@0
   123
// provided to this function and the local buffer is deleted.
sl@0
   124
// (other items were commented in a header).
sl@0
   125
// ---------------------------------------------------------
sl@0
   126
//
sl@0
   127
void CSpeechEncoderConfigProxy::GetSupportedBitratesL(
sl@0
   128
                                            RArray<TUint>& aSupportedBitrates)
sl@0
   129
    {
sl@0
   130
	aSupportedBitrates.Reset();
sl@0
   131
sl@0
   132
	TPckgBuf<TUint> numberOfBitratesPckg;
sl@0
   133
	User::LeaveIfError(iCustomCommand.CustomCommandSync(
sl@0
   134
	                                           iMessageHandler, 
sl@0
   135
                                               ESecmGetNumOfSupportedBitrates, 
sl@0
   136
                                               KNullDesC8,
sl@0
   137
                                               KNullDesC8,
sl@0
   138
                                               numberOfBitratesPckg));
sl@0
   139
    HBufC8* buf = HBufC8::NewLC(numberOfBitratesPckg()*sizeof(TUint));
sl@0
   140
    // buf is left on cleanup 
sl@0
   141
    TPtr8 ptr = buf->Des();
sl@0
   142
sl@0
   143
    User::LeaveIfError(iCustomCommand.CustomCommandSync(
sl@0
   144
                                               iMessageHandler, 
sl@0
   145
                                               ESecmGetSupportedBitrates, 
sl@0
   146
                                               KNullDesC8,
sl@0
   147
                                               KNullDesC8,
sl@0
   148
                                               ptr));
sl@0
   149
   	RDesReadStream stream(ptr);
sl@0
   150
    CleanupClosePushL(stream); // stream on cleanup
sl@0
   151
   	for (TInt i=0; i<numberOfBitratesPckg(); i++)
sl@0
   152
      	{
sl@0
   153
   		aSupportedBitrates.AppendL(stream.ReadUint32L());
sl@0
   154
   		}
sl@0
   155
   	CleanupStack::PopAndDestroy(&stream);
sl@0
   156
   	CleanupStack::PopAndDestroy(buf);
sl@0
   157
    }
sl@0
   158
sl@0
   159
// ---------------------------------------------------------
sl@0
   160
// CSpeechEncoderConfigProxy::SetBitrate
sl@0
   161
// Sends the custom command for this function to its message handler.
sl@0
   162
// (other items were commented in a header).
sl@0
   163
// ---------------------------------------------------------
sl@0
   164
//
sl@0
   165
EXPORT_C TInt CSpeechEncoderConfigProxy::SetBitrate(TUint aBitrate)
sl@0
   166
	{
sl@0
   167
	TPckgBuf<TInt> bitratePckg(aBitrate);
sl@0
   168
	TInt status = iCustomCommand.CustomCommandSync(iMessageHandler,
sl@0
   169
	                                               ESecmSetBitrate,
sl@0
   170
	                                               bitratePckg,
sl@0
   171
	                                               KNullDesC8);
sl@0
   172
	return status;
sl@0
   173
	}
sl@0
   174
sl@0
   175
// ---------------------------------------------------------
sl@0
   176
// CSpeechEncoderConfigProxy::GetBitrate
sl@0
   177
// Sends the custom command for this function to its message handler.
sl@0
   178
// (other items were commented in a header).
sl@0
   179
// ---------------------------------------------------------
sl@0
   180
//
sl@0
   181
EXPORT_C TInt CSpeechEncoderConfigProxy::GetBitrate(TUint& aBitrate)
sl@0
   182
	{
sl@0
   183
	TInt bitrate = 0;
sl@0
   184
	TPckgBuf<TInt> bitratePckg(bitrate);
sl@0
   185
	TInt status = iCustomCommand.CustomCommandSync(iMessageHandler,
sl@0
   186
	                                               ESecmGetBitrate,
sl@0
   187
	                                               KNullDesC8,
sl@0
   188
	                                               KNullDesC8,
sl@0
   189
	                                               bitratePckg);
sl@0
   190
	if (status == KErrNone)
sl@0
   191
	    aBitrate = bitratePckg();
sl@0
   192
	return status;
sl@0
   193
	}
sl@0
   194
sl@0
   195
// ---------------------------------------------------------
sl@0
   196
// CSpeechEncoderConfigProxy::SetVadMode
sl@0
   197
// Sends the custom command for this function to its message handler.
sl@0
   198
// (other items were commented in a header).
sl@0
   199
// ---------------------------------------------------------
sl@0
   200
//
sl@0
   201
EXPORT_C TInt CSpeechEncoderConfigProxy::SetVadMode(TBool aVadMode)
sl@0
   202
	{
sl@0
   203
	TPckgBuf<TBool> pckgBuf(aVadMode);
sl@0
   204
	TInt status = iCustomCommand.CustomCommandSync(iMessageHandler,
sl@0
   205
	                                               ESecmSetVadMode,
sl@0
   206
	                                               pckgBuf,
sl@0
   207
	                                               KNullDesC8);
sl@0
   208
	return status;
sl@0
   209
	}
sl@0
   210
sl@0
   211
// ---------------------------------------------------------
sl@0
   212
// CSpeechEncoderConfigProxy::GetVadMode
sl@0
   213
// Sends the custom command for this function to its message handler.
sl@0
   214
// (other items were commented in a header).
sl@0
   215
// ---------------------------------------------------------
sl@0
   216
//
sl@0
   217
EXPORT_C TInt CSpeechEncoderConfigProxy::GetVadMode(TBool& aVadMode)
sl@0
   218
	{
sl@0
   219
	TInt vadMode = EFalse;
sl@0
   220
	TPckgBuf<TBool> pckgBuf(vadMode);
sl@0
   221
	TInt status = iCustomCommand.CustomCommandSync(iMessageHandler,
sl@0
   222
	                                               ESecmGetVadMode,
sl@0
   223
	                                               KNullDesC8,
sl@0
   224
	                                               KNullDesC8,
sl@0
   225
	                                               pckgBuf);
sl@0
   226
	if (status == KErrNone)
sl@0
   227
	    aVadMode = pckgBuf();
sl@0
   228
	return status;
sl@0
   229
	}
sl@0
   230
sl@0
   231
sl@0
   232
sl@0
   233
// End of File