haitest/bspsvs/suite/bsp/sound/src/sound_util.cpp
changeset 0 cec860690d41
equal deleted inserted replaced
-1:000000000000 0:cec860690d41
       
     1 /*
       
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     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".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "sound_util.h"
       
    19 
       
    20 // Translation table for RMdaDevSound::TMdaSoundEncoding set
       
    21 
       
    22 _LIT(KStrEMdaSoundEncoding8BitPCM,			"EMdaSoundEncoding8BitPCM");
       
    23 _LIT(KStrEMdaSoundEncoding16BitPCM,			"EMdaSoundEncoding16BitPCM");
       
    24 _LIT(KStrEMdaSoundEncoding8BitALaw,			"EMdaSoundEncoding8BitALaw");
       
    25 _LIT(KStrEMdaSoundEncoding8BitMuLaw,		"EMdaSoundEncoding8BitMuLaw");
       
    26 
       
    27 // NB! Wrong member for negative testing
       
    28 _LIT(KStrEMdaSoundEncoding40BitPCM,			"EMdaSoundEncoding40BitPCM");
       
    29 _LIT(KStrNull,								"");
       
    30 
       
    31 const CDataWrapperBase::TEnumEntryTable		TSoundUtil::iEnumTableSoundEncoding[] =
       
    32 	{
       
    33 //	Enum as a descriptor					Enum
       
    34 	KStrEMdaSoundEncoding8BitPCM,			RMdaDevSound::EMdaSoundEncoding8BitPCM,
       
    35 	KStrEMdaSoundEncoding16BitPCM,			RMdaDevSound::EMdaSoundEncoding16BitPCM,
       
    36 	KStrEMdaSoundEncoding8BitALaw,			RMdaDevSound::EMdaSoundEncoding8BitALaw,
       
    37 	KStrEMdaSoundEncoding8BitMuLaw,			RMdaDevSound::EMdaSoundEncoding8BitMuLaw,
       
    38 	KStrEMdaSoundEncoding40BitPCM,			0x00000040,
       
    39 	KStrNull,								-1
       
    40 	};
       
    41 
       
    42 /**
       
    43  * Loading of generinc sound driver required for RMDaDevSound interface
       
    44  * 
       
    45  * @param aLll 				LDD driver name
       
    46  * @param aPdd				PDD driver name
       
    47  *
       
    48  * @return					System wide error
       
    49  *
       
    50  * @leave					no
       
    51  */
       
    52 TInt	TSoundUtil::LoadSoundDrivers(const TDesC& aLdd, const TDesC& aPdd)
       
    53 	{
       
    54 	TInt rerr = KErrNone;
       
    55 	
       
    56 	rerr = User::LoadPhysicalDevice(aPdd);
       
    57 	if(rerr != KErrNone && rerr != KErrAlreadyExists)
       
    58 		{
       
    59 		return rerr;
       
    60 		}
       
    61 	rerr = User::LoadLogicalDevice(aLdd);	
       
    62 	if(rerr != KErrNone && rerr != KErrAlreadyExists)
       
    63 		{
       
    64 		return rerr;
       
    65 		}
       
    66 	return KErrNone;	
       
    67 	}
       
    68 
       
    69 /**
       
    70  * Un-loading of generinc sound driver required for RMDaDevSound interface
       
    71  * 
       
    72  * @param aLll 				LDD driver name
       
    73  * @param aPdd				PDD driver name
       
    74  *
       
    75  * @return					System wide error
       
    76  *
       
    77  * @leave					no
       
    78  */
       
    79 TInt	TSoundUtil::FreeSoundDrivers(const TDesC& aLdd, const TDesC& aPdd)
       
    80 	{
       
    81 	TInt rerr = KErrNone;
       
    82 	
       
    83 	rerr = User::FreePhysicalDevice(aPdd);
       
    84 	if(rerr != KErrNone && rerr != KErrAlreadyExists)
       
    85 		{
       
    86 		return rerr;
       
    87 		}
       
    88 	rerr = User::FreeLogicalDevice(aLdd);	
       
    89 	if(rerr != KErrNone && rerr != KErrAlreadyExists)
       
    90 		{
       
    91 		return rerr;
       
    92 		}
       
    93 	return KErrNone;	
       
    94 	}
       
    95 
       
    96 /**
       
    97  * Store current RBuf8 content into the binary file
       
    98  * 
       
    99  * @param aFile 			file name to save audio data
       
   100  *
       
   101  * @return					System wide error
       
   102  *
       
   103  * @leave					System wide error
       
   104  */
       
   105 TInt	TSoundUtil::RAudioBuffer::SaveAudioDataL(const TDesC& aFile)
       
   106 	{	
       
   107 	RFs fsSession;
       
   108 	::CleanupClosePushL(fsSession);
       
   109 	User::LeaveIfError(fsSession.Connect()); 	
       
   110 	TInt err = KErrNone;
       
   111 	RFile file;
       
   112 	err = file.Create(fsSession, aFile, EFileStream | EFileWrite);
       
   113 	if (!err)
       
   114 		{
       
   115 		err = file.Write(*this);
       
   116 
       
   117 		file.Close();
       
   118 		}	
       
   119 	fsSession.Close();
       
   120 	CleanupStack::PopAndDestroy();		
       
   121 	return err;
       
   122 	}
       
   123 
       
   124 /**
       
   125  * Load binary file content into RBuf8
       
   126  * 
       
   127  * @param aFile 			file name where to load audio data
       
   128  *
       
   129  * @return					System wide error
       
   130  *
       
   131  * @leave					System wide error
       
   132  */
       
   133 TInt	TSoundUtil::RAudioBuffer::LoadAudioDataL(const TDesC& aFile)
       
   134 	{
       
   135 	RFs fsSession;
       
   136 	::CleanupClosePushL(fsSession);
       
   137 	User::LeaveIfError(fsSession.Connect());	
       
   138 	TFindFile	findFile(fsSession);
       
   139 	TInt err = findFile.FindByDir(aFile, KStrNull);
       
   140 	if ( err == KErrNone )
       
   141 		{
       
   142 		const TDesC&	fileName=findFile.File();
       
   143 		RFile file;
       
   144 		err = file.Open(fsSession, fileName, EFileStream | EFileRead);
       
   145 		if (!err)
       
   146 			{
       
   147 			err = file.Read(*this);
       
   148 			file.Close();
       
   149 			}
       
   150 		}
       
   151 	fsSession.Close();
       
   152 	CleanupStack::PopAndDestroy();		
       
   153 	return err;	
       
   154 	}
       
   155 
       
   156 /**
       
   157  * Delete file
       
   158  * 
       
   159  * @param aFile 			file name to delete
       
   160  *
       
   161  * @return					System wide error
       
   162  *
       
   163  * @leave					System wide error
       
   164  */
       
   165 TInt	TSoundUtil::DeleteFileL(const TDesC& aFile)
       
   166 	{
       
   167 	RFs fsSession;
       
   168 	CleanupClosePushL(fsSession);
       
   169 	User::LeaveIfError(fsSession.Connect());
       
   170 	TInt err;
       
   171 	err = fsSession.Delete(aFile);	
       
   172 	fsSession.Close();
       
   173 	CleanupStack::PopAndDestroy();
       
   174 	return err;
       
   175 	}