sbsv2/raptor/test/smoke_suite/test_resources/tracecompiler/testTC/src/wlanhwinitpermparser.cpp
changeset 13 c327db0664bb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tracecompiler/testTC/src/wlanhwinitpermparser.cpp	Mon May 17 20:20:32 2010 +0100
@@ -0,0 +1,249 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  The class for parsing the tuning data stored in PERM server
+*
+*/
+
+
+#include <stddef.h>
+#include <es_sock.h>
+#include "gendebug.h"
+#include "wlanhwinitpermparser.h"
+#include "bcmnvmem.h"
+#include "lmac_firmware.h"
+#include "plt_firmware.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "wlanhwinitpermparserTraces.h"
+#endif
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+CWlanHwInitPermParser::CWlanHwInitPermParser() :
+    iTuningData(NULL),
+    iNvsData(NULL)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:CWlanHwInitPermParser()" ) ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_CWLANHWINITPERMPARSER, "CWlanHwInitPermParser:CWlanHwInitPermParser()" );	
+}
+
+
+void CWlanHwInitPermParser::ConstructL()
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:ConstructL()" ) ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_CONSTRUCTL, "CWlanHwInitPermParser:ConstructL()" );	
+	iTuningData = HBufC8::NewL( (sizeof(WlanHalApi::SNvMem) - offsetof(WlanHalApi::SNvMem, PL_2G_hdb)) );   
+	iNvsData = HBufC8::NewL( sizeof(WlanHalApi::SNvMem) );   
+}
+
+
+CWlanHwInitPermParser* CWlanHwInitPermParser::NewL()
+{
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_NEWL, "CWlanHwInitPermParser::NewL()" );
+	CWlanHwInitPermParser* self = new( ELeave ) CWlanHwInitPermParser;
+
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+
+	return self;
+}
+
+
+CWlanHwInitPermParser::~CWlanHwInitPermParser()
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:~CWlanHwInitPermParser()" ) ) );
+	OstTrace0( TRACE_NORMAL, DUP1_CWLANHWINITPERMPARSER_CWLANHWINITPERMPARSER, "CWlanHwInitPermParser:~CWlanHwInitPermParser()" );
+	delete iTuningData;
+	iTuningData = NULL;
+	delete iNvsData;
+	iNvsData = NULL;
+}
+
+void CWlanHwInitPermParser::CompareNvsBuffer()
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:CompareNvsBuffer()") ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_COMPARENVSBUFFER, "CWlanHwInitPermParser:CompareNvsBuffer()" );
+	TUint8* pNvsBuffer = (TUint8*)iNvsData->Ptr();
+	TUint8* normalFirmwareNvsBuffer = (TUint8*) (normal_firmware + KNvMemValueOffset32);
+	TUint8* pltFirmwareNvsBuffer = (TUint8*) (plt_firmware + KNvMemValueOffset32);
+	
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:CompareNvsBuffer() sizeof(WlanHalApi::SNvMem): %d"), sizeof(WlanHalApi::SNvMem) ) );
+	OstTrace1( TRACE_NORMAL, DUP1_CWLANHWINITPERMPARSER_COMPARENVSBUFFER, "CWlanHwInitPermParser:CompareNvsBuffer() sizeof(WlanHalApi::SNvMem): %d", sizeof(WlanHalApi::SNvMem));
+	
+	/* checking the changes that have been made */
+	for( TUint32 i = 0 ; i < sizeof(WlanHalApi::SNvMem) ; i++)
+	{
+		if(normalFirmwareNvsBuffer[i] != pNvsBuffer[i])
+		{
+			TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:Normal NVS changed[0x%04X]:orig 0x%02X, new 0x%02X"), i, normalFirmwareNvsBuffer[i], pNvsBuffer[i]) );
+			OstTraceExt3( TRACE_NORMAL, DUP2_CWLANHWINITPERMPARSER_COMPARENVSBUFFER, "CWlanHwInitPermParser:Normal NVS changed[0x%x]:orig 0x%x, new 0x%x", i, normalFirmwareNvsBuffer[i], pNvsBuffer[i] );
+		}
+	}
+
+	/* also for plt firmware */
+	for( TUint32 i = 0 ; i < sizeof(WlanHalApi::SNvMem) ; i++)
+	{
+		if(pltFirmwareNvsBuffer[i] != pNvsBuffer[i])
+		{
+			TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:PLT NVS changed[0x%04X]:orig 0x%02X, new 0x%02X"), i, pltFirmwareNvsBuffer[i], pNvsBuffer[i]) );
+			OstTraceExt3( TRACE_NORMAL, DUP3_CWLANHWINITPERMPARSER_COMPARENVSBUFFER, "CWlanHwInitPermParser:PLT NVS changed[0x%x]:orig 0x%x, new 0x%x", i, pltFirmwareNvsBuffer[i], pNvsBuffer[i] );		
+		}
+	}	
+}
+
+// ---------------------------------------------------------
+// CWlanHwInitPermParser::GetNvsBuffer
+// ---------------------------------------------------------
+//
+TPtr8 CWlanHwInitPermParser::GetNvsBuffer()
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:GetNvsBuffer()" ) ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_GETNVSBUFFER, "CWlanHwInitPermParser:GetNvsBuffer()" );
+	return iNvsData->Des();
+}
+
+// ---------------------------------------------------------
+// CWlanHwInitPermParser::GetTuningBuffer
+// ---------------------------------------------------------
+//
+TPtr8 CWlanHwInitPermParser::GetTuningBuffer()
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:GetTuningBuffer()" ) ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_GETTUNINGBUFFER, "CWlanHwInitPermParser:GetTuningBuffer()" );
+	return iTuningData->Des();
+}
+
+
+// ---------------------------------------------------------
+// CWlanHwInitPermParser::UpdateNvsData
+// ---------------------------------------------------------
+//
+void CWlanHwInitPermParser::UpdateNvsData(nvsUpdateList updateList)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:UpdateNvsData()" ) ) );
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:updateList 0x%X"), updateList ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_UPDATENVSDATA, "CWlanHwInitPermParser:UpdateNvsData()" );
+	OstTrace1( TRACE_NORMAL, DUP1_CWLANHWINITPERMPARSER_UPDATENVSDATA, "CWlanHwInitPermParser:updateList 0x%x", updateList );
+	
+	WlanHalApi::SNvMem* pNvsStruct = (WlanHalApi::SNvMem*)iNvsData->Ptr();
+
+	if( (sizeof(WlanHalApi::SNvMem) - offsetof(WlanHalApi::SNvMem, PL_2G_hdb)) == iTuningData->Length() ) //only use if the tuning data is the same size as the structure...
+	{
+		if(updateList == UPDATE_ALL)
+		{
+			TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:UpdateNvsData:UPDATE_ALL" ) ) );
+			OstTrace0( TRACE_NORMAL, DUP2_CWLANHWINITPERMPARSER_UPDATENVSDATA, "CWlanHwInitPermParser:UpdateNvsData:UPDATE_ALL" );
+			//void * memcpy ( void * destination, const void * source, size_t num );
+			memcpy( (&pNvsStruct->PL_2G_hdb), iTuningData->Ptr(), iTuningData->Length() );		
+		}
+	}
+	else
+	{
+			TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:size mismatch data-%d, structure-%d"), iTuningData->Length(), sizeof(WlanHalApi::SNvMem)) );
+			OstTraceExt2( TRACE_NORMAL, DUP3_CWLANHWINITPERMPARSER_UPDATENVSDATA, "CWlanHwInitPermParser:size mismatch data-%d, structure-%d", iTuningData->Length(), sizeof(WlanHalApi::SNvMem) );			
+	}
+
+	if(updateList & UPDATE_MAC_ADDR)
+	{
+		//Update Mac address
+		TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:UPDATE_MAC_ADDR" ) ) );
+		TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:Current Mac Addr - %02X:%02X:%02X:%02X:%02X:%02X"),  pNvsStruct->whamac[0], pNvsStruct->whamac[1], pNvsStruct->whamac[2], pNvsStruct->whamac[3], pNvsStruct->whamac[4], pNvsStruct->whamac[5] ) );
+		TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:Mac Addr to use - %02X:%02X:%02X:%02X:%02X:%02X"), iMacAddress.iMacAddress[0], iMacAddress.iMacAddress[1], iMacAddress.iMacAddress[2], iMacAddress.iMacAddress[3], iMacAddress.iMacAddress[4], iMacAddress.iMacAddress[5]) );
+		OstTrace0( TRACE_NORMAL, DUP4_CWLANHWINITPERMPARSER_UPDATENVSDATA, "CWlanHwInitPermParser:UPDATE_MAC_ADDR" );
+		TBuf<80> buf;
+		buf.AppendFormat(_L("CWlanHwInitPermParser:Current Mac Addr - %02X:%02X:%02X:%02X:%02X:%02X"),  pNvsStruct->whamac[0], pNvsStruct->whamac[1], pNvsStruct->whamac[2], pNvsStruct->whamac[3], pNvsStruct->whamac[4], pNvsStruct->whamac[5] );
+		TPtrC16 currentMacPtr((TUint16*)buf.Ptr(), buf.Size());
+		OstTraceExt1( TRACE_NORMAL, DUP5_CWLANHWINITPERMPARSER_UPDATENVSDATA, "%S", currentMacPtr );		
+		buf.Zero();
+		buf.AppendFormat(_L("CWlanHwInitPermParser:Mac Addr to use - %02X:%02X:%02X:%02X:%02X:%02X"), iMacAddress.iMacAddress[0], iMacAddress.iMacAddress[1], iMacAddress.iMacAddress[2], iMacAddress.iMacAddress[3], iMacAddress.iMacAddress[4], iMacAddress.iMacAddress[5] );
+		TPtrC16 newMacPtr((TUint16*)buf.Ptr(), buf.Size());
+		OstTraceExt1( TRACE_NORMAL, DUP6_CWLANHWINITPERMPARSER_UPDATENVSDATA, "%S", newMacPtr );
+		
+		/* Copy the MAC address */
+		for( TUint32 i = 0 ; i < KMacAddrLength ; i++)
+		{
+			pNvsStruct->whamac[i] = iMacAddress.iMacAddress[i];
+		}
+		TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:Final Mac Addr - %02X:%02X:%02X:%02X:%02X:%02X"),  pNvsStruct->whamac[0], pNvsStruct->whamac[1], pNvsStruct->whamac[2], pNvsStruct->whamac[3], pNvsStruct->whamac[4], pNvsStruct->whamac[5] ) );
+		buf.Zero();
+		buf.AppendFormat(_L("CWlanHwInitPermParser:Final Mac Addr - %02X:%02X:%02X:%02X:%02X:%02X"), pNvsStruct->whamac[0], pNvsStruct->whamac[1], pNvsStruct->whamac[2], pNvsStruct->whamac[3], pNvsStruct->whamac[4], pNvsStruct->whamac[5] );
+		TPtrC16 finalMacPtr((TUint16*)buf.Ptr(), buf.Size());
+		OstTraceExt1( TRACE_NORMAL, DUP7_CWLANHWINITPERMPARSER_UPDATENVSDATA, "%S", finalMacPtr );
+	}
+
+	CompareNvsBuffer();
+}
+
+
+void CWlanHwInitPermParser::GenerateDefaultTuningData(void)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:GenerateDefaultTuningData()" ) ) );    
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_GENERATEDEFAULTTUNINGDATA, "CWlanHwInitPermParser:GenerateDefaultTuningData()" );
+	
+	//use nvs file to create default tuning data
+	TPtr8 tuningPtr( GetTuningBuffer() );
+	WlanHalApi::SNvMem* pNvsStruct = (WlanHalApi::SNvMem*)iNvsData->Ptr();
+	
+	tuningPtr.Copy(&pNvsStruct->PL_2G_hdb, (sizeof(WlanHalApi::SNvMem) - offsetof(WlanHalApi::SNvMem, PL_2G_hdb)));	
+}
+
+void CWlanHwInitPermParser::SetMacAddress(const TMacAddr& pMacAddress)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:SetMacAddress()" ) ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_SETMACADDRESS, "CWlanHwInitPermParser:SetMacAddress()" );
+	
+	memcpy(iMacAddress.iMacAddress, pMacAddress.iMacAddress, KMacAddrLength);
+}
+
+// ---------------------------------------------------------
+// CWlanHwInitPermParser::GetTuningValues
+// ---------------------------------------------------------
+//
+TInt CWlanHwInitPermParser::GetTuningValues(TDes8& aData)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:GetTuningValues()" ) ) );    
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_GETTUNINGVALUES, "CWlanHwInitPermParser:GetTuningValues()" );
+	
+	aData.Copy(GetTuningBuffer());
+
+	return KErrNone;
+}
+
+
+// ---------------------------------------------------------
+// CWlanHwInitPermParser::SetTuningValues
+// ---------------------------------------------------------
+//
+TInt CWlanHwInitPermParser::SetTuningValues(TDesC8& aData, nvsUpdateList updateList)
+{
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:SetTuningValues()" ) ) );
+	TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:updateList 0x%X"), updateList ) );
+	OstTrace0( TRACE_NORMAL, CWLANHWINITPERMPARSER_SETTUNINGVALUES, "CWlanHwInitPermParser:SetTuningValues()" );
+	OstTrace1( TRACE_NORMAL, DUP1_CWLANHWINITPERMPARSER_SETTUNINGVALUES, "CWlanHwInitPermParser:updateList 0x%x", updateList );
+	
+	TPtr8 tuningPtr( GetTuningBuffer() );
+	TUint8* pStoredTuningData = (TUint8*)tuningPtr.Ptr();
+		
+	if(updateList & UPDATE_ALL)
+	{
+		TraceDump( INFO_LEVEL, ( _L( "CWlanHwInitPermParser:UPDATE_ALL" ) ) );
+		OstTrace0( TRACE_NORMAL, DUP2_CWLANHWINITPERMPARSER_SETTUNINGVALUES, "CWlanHwInitPermParser:UPDATE_ALL" );		
+		//void * memcpy ( void * destination, const void * source, size_t num );						
+		memcpy( pStoredTuningData, aData.Ptr(), (sizeof(WlanHalApi::SNvMem) - offsetof(WlanHalApi::SNvMem, PL_2G_hdb) ) );		
+	}
+
+	return KErrNone;
+}