diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloadformatdefs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloadformatdefs.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,153 @@ +/* +* Copyright (c) 2006 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: Provides DTMF payload format spesific definitions. +* +*/ + + + + +#ifndef DTMFPAYLOADFORMATDEFS_H +#define DTMFPAYLOADFORMATDEFS_H + +// INCLUDES +#include + +#ifdef _DEBUG + #include + #define _DEBUG_DTMF_WRITE + #define _DEBUG_DTMF_READ + #define _DEBUG_DTMF_STIMER + #define _DEBUG_DTMF_DECODE + #define _DEBUG_DTMF_ENCODE +#endif + +// CONSTANTS +// Redundant events handled, RFC 2833 recommendation +const TInt KDTMFDefaultRedundancyCount( 5 ); +const TUint KMaxDtmfRedCount( 5 ); + +// Redundancy header = 4 bytes, DTMF event size = 4 bytes +const TUint KDTMFDefaultPayloadSize( KMaxDtmfRedCount * 4 * 2 + 1 ); + +// Maximum is -63 dBm0, preferred -8 to -3 RFC 2833bis6 4.3.3 +const TUint KDTMFDefaultToneVolume( 4 ); +const TUint KDTMFDefaultModulation( 0 ); + +const TUint KDTMFLowGroupFrequencies[] = + { + 941/*0*/, 697, 697, 697, 770/*4*/, 770, 770, 852/*7*/, 852, 852, 941/***/, + 941/*#*/, 697/*A*/, 770/*B*/, 852/*C*/, 941/*D*/ + }; + +const TUint KDTMFHighGroupFrequencies[] = + { + 1336/*0*/, 1209, 1336, 1477, 1209/*4*/, 1336, 1477, 1209/*7*/, 1336, 1477, + 1209/***/, 1477/*#*/, 1633/*A*/, 1633/*B*/, 1633/*C*/, 1633/*D*/ + }; + +const TInt KDtmfGroupFrequencyCount = 16; + +// Local/inband DTMF tone playing parameters +const TUint KDTMFDefToneOnLengthInUs = 300000; +const TUint KDTMFDefToneOffLengthInUs = 300000; +const TUint KDTMFDefPauseLengthInUs = 2000000; +const TUint KDTMFDefUpdateIntervalInUs = 50000; + +// Limit for local playback of tone to avoid getting stucked tones +// (RFC2833bis12 2.5.2.2) +const TUint KDTMFMaxTonePlaybackTime = KDTMFDefToneOnLengthInUs * 3; +const TUint KDTMFMaxDurationFieldValue = 0xFFFF; + +// Number of bits used for value(s) saving in payload header +const TInt KEventBlockLengthInBytes = 4; +const TInt KEventFieldBits = 8; +const TInt KVolFieldBits = 6; +const TInt KDurationFieldBits = 16; +const TInt KBlockPTBits = 7; +const TInt KModulationBits = 9; +const TInt KFrequencyBits = 12; +const TInt KTimeStampOffsetBits = 14; +const TInt KBlockLengthBits = 10; + +// Event codes for DTMFs +const TInt KEventCodeForAsterisk = 10; +const TInt KEventCodeForHashMark = 11; +const TInt KEventCodeForA = 12; +const TInt KEventCodeForB = 13; +const TInt KEventCodeForC = 14; +const TInt KEventCodeForD = 15; + +// MACROS +#ifdef _DEBUG_DTMF_WRITE + #define DP_DTMF_WRITE(a) RDebug::Print(a); + #define DP_DTMF_WRITE2(a, b) RDebug::Print(a, b); + #define DP_DTMF_WRITE3(a, b, c) RDebug::Print(a, b, c); + #define DP_DTMF_WRITE4(a, b, c, d) RDebug::Print(a, b, c, d); +#else + #define DP_DTMF_WRITE(a); + #define DP_DTMF_WRITE2(a, b); + #define DP_DTMF_WRITE3(a, b, c); + #define DP_DTMF_WRITE4(a, b, c, d); +#endif + +#ifdef _DEBUG_DTMF_READ + #define DP_DTMF_READ(a) RDebug::Print(a); + #define DP_DTMF_READ2(a, b) RDebug::Print(a, b); + #define DP_DTMF_READ3(a, b, c) RDebug::Print(a, b, c); +#else + #define DP_DTMF_READ(a); + #define DP_DTMF_READ2(a, b); + #define DP_DTMF_READ3(a, b, c); +#endif + +#ifdef _DEBUG_DTMF_STIMER + #define DP_DTMF_STIMER(a) RDebug::Print(a); + #define DP_DTMF_STIMER2(a, b) RDebug::Print(a, b); + #define DP_DTMF_STIMER3(a, b, c) RDebug::Print(a, b, c); +#else + #define DP_DTMF_STIMER(a); + #define DP_DTMF_STIMER2(a, b); + #define DP_DTMF_STIMER3(a, b, c); +#endif + +#ifdef _DEBUG_DTMF_DECODE + #define DP_DTMF_DECODE(a) RDebug::Print(a); + #define DP_DTMF_DECODE2(a, b) RDebug::Print(a, b); + #define DP_DTMF_DECODE3(a, b, c) RDebug::Print(a, b, c); + #define DP_DTMF_DECODE5(a, b, c, d, e) RDebug::Print(a, b, c, d, e); +#else + #define DP_DTMF_DECODE(a); + #define DP_DTMF_DECODE2(a, b); + #define DP_DTMF_DECODE3(a, b, c); + #define DP_DTMF_DECODE5(a, b, c, d, e); +#endif + +#ifdef _DEBUG_DTMF_ENCODE + +#endif + + +// DATA TYPES +enum TDTMFPayloadFormat + { + EDTMFPayloadFormatNotDefined, + EDTMFPayloadFormatEvent, + EDTMFPayloadFormatTone, + EDTMFPayloadFormatRedEvents + }; + +#endif // DTMFPAYLOADFORMATDEFS_H + +// End of File