multimediacommscontroller/mmccdtmfpayloadformat/inc/dtmfpayloadformatdefs.h
changeset 0 1bce908db942
--- /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 <e32base.h>
+
+#ifdef _DEBUG 
+    #include <e32svr.h>
+    #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