fax/faxclientandserver/Test/TE_FAX/TE_FaxBase.cpp
changeset 20 244d7c5f118e
parent 19 1f776524b15c
child 23 6b1d113cdff3
--- a/fax/faxclientandserver/Test/TE_FAX/TE_FaxBase.cpp	Fri Mar 19 09:55:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-// Copyright (c) 1997-2009 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:
-// Telephony Fax Test base test code.
-// 
-//
-
-/**
- @file
- @internalComponent
-*/
-
-#include "faxdefn.h"
-#include "fax_reversebytes.h"
-#include "FAXSET.H"
-#include "CFAX32.H"
-
-#include "TE_FaxBase.h"
-
- #include <commsdattypesv1_1.h>
-
- using namespace CommsDat;
-
-
-//
-// Constants...
-//
-const TInt KFaxTestLogPeriod = 5*1000000;
-_LIT(KTEFaxINIFileName, "Z:\\TestData\\Configs\\TE_Fax.INI");
-_LIT8(KTEFaxINIDestNumber, "DestPhoneNumber");
-
-
-/**
- *  Default constructor.
- */	
-CFaxTestStep::CFaxTestStep()
-	{
-	// NOP
-	} // CFaxTestStep::CFaxTestStep
-
-
-/**
- *  Default destructor.
- */	
-CFaxTestStep::~CFaxTestStep()
-	{
-	// NOP
-	} // CFaxTestStep::~CFaxTestStep
-
-
-/**
- *  Pre-amble function called before all tests.
- *
- *  @return Test verdict for this test.
- */	
-TVerdict CFaxTestStep::doTestStepPreambleL()
-	{
-	//
-	// Mark for memory leaks!!!
-	//
-	__UHEAP_MARK;
-
-	//
-	// Create an Active Scheduler...
-	//
-	iScheduler = new(ELeave) CActiveScheduler();
-	CActiveScheduler::Install(iScheduler);
-
-	return TestStepResult();
-	} // CFaxTestStep::doTestStepPreambleL
-
-
-/**
- *  Post-amble function called before all tests.
- *
- *  @return Test verdict for this test.
- */	
-TVerdict CFaxTestStep::doTestStepPostambleL()
-	{
-	delete iScheduler;
-	iScheduler = NULL;
-	
-	//
-	// Check the heap for memory leaks...
-	//
-	__UHEAP_MARKEND;
-
-	return TestStepResult();
-	} // CFaxTestStep::doTestStepPostambleL
-
-
-/**
- *  Initialise the Fax settings based on default values and CommDB settings.
- *
- *  @param aFaxSettings  Fax Settings stucture to initialise.
- */	
-void CFaxTestStep::ReadDestPhoneNumberFromIniFileL(TDes8& aPhoneNumber)
-	{
-	//
-	// Open the INI file...
-	//
-	RFs  fs;
-	RFile  file;
-	TInt  result;
-
-	result = fs.Connect();
-	TESTCHECKL(result, KErrNone);
-	CleanupClosePushL(fs);
-
-	result = file.Open(fs, KTEFaxINIFileName, EFileShareAny | EFileRead);
-	if (result != KErrNone)
-		{
-		INFO_PRINTF2(_L("Cannot load TE_Fax.ini file! (Error %d)"), result);
-		TESTCHECKL(result, KErrNone);
-		}
-	CleanupClosePushL(file);
-
-	//
-	// Get the file size and and then load the file into memory...
-	//
-	TInt  fileSize;
-
-	result = file.Size(fileSize);
-	TESTCHECKL(result, KErrNone);
-	TESTL(fileSize > 0);
-
-	HBufC8*  fileContents = HBufC8::NewLC(fileSize);
-	TPtr8  fileContentsPtr(fileContents->Des());
-
-	result = file.Read(0, fileContentsPtr);
-	TESTCHECKL(result, KErrNone);
-
-	//
-	// Parse the contents of the file...
-	//
-	TLex8  lexInput(fileContentsPtr);
-
-	while (!lexInput.Eos())
-		{
-		TPtrC8  token(lexInput.NextToken());
-		lexInput.SkipSpace();
-
-		if (token.Find(KTEFaxINIDestNumber) == KErrNone) 
-			{
-			lexInput.SkipSpaceAndMark();
-
-			TPtrC8  phoneNumberPtr(lexInput.NextToken());
-			TBuf<32>  phoneNumber;
-
-			phoneNumber.Copy(phoneNumberPtr);
-			INFO_PRINTF2(_L("Phone number read from INI file as \"%S\"."), &phoneNumber);
-
-			aPhoneNumber.Copy(phoneNumber);
-			}
-		}
-
-	//
-	// Done, clean up...
-	//
-	CleanupStack::PopAndDestroy(fileContents);
-	CleanupStack::PopAndDestroy(&file);
-	CleanupStack::PopAndDestroy(&fs);
-	} // CFaxTestStep::ReadDestPhoneNumberFromIniFileL
-
-
-/**
- *  Initialise the Fax settings based on default values and CommDB settings.
- *
- *  @param aFaxSettings  Fax Settings stucture to initialise.
- */	
-void CFaxTestStep::ReadFaxCommDBSettingsL(TFaxSettings& aFaxSettings)
-	{
-	INFO_PRINTF1(_L("Reading Fax settings from the CommDB."));
-
-	//
-	// Initialise the default values...
-	//
-	aFaxSettings.iFaxId.Zero();
-	aFaxSettings.iMaxSpeed             = 14400;
-	aFaxSettings.iMinSpeed             = 2400;
-	aFaxSettings.iPreferredResolution  = EFaxFine;
-	aFaxSettings.iPreferredCompression = EModifiedHuffman;
-	aFaxSettings.iPreferredECM         = EFalse;
-	aFaxSettings.iFaxOnDemandDelay     = 20;
-	aFaxSettings.iVerbose              = 1;
-
-	//
-	// Now we now read the Comm DB modem settings - we must have
-	// these to run...
-	//
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_2);
-#else
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_1);
-#endif
-	CleanupStack::PushL(db);
-
-	//
-	// Read the currently selected connection preference and find preferred IAP...
-	//
-	TInt prefRank = 1;
-	
-	CCDConnectionPrefsRecord *connectionPrefs =
-		static_cast<CCDConnectionPrefsRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord));
-	CleanupStack::PushL(connectionPrefs);
-	connectionPrefs->iRanking = prefRank;
-	connectionPrefs->iDirection = ECommDbConnectionDirectionOutgoing;
-	connectionPrefs->FindL(*db);
-	
-	// The following code is a temporary solution until an issue has been resolved in CommsDat
-	// start
-	CCDIAPRecord* tempPIapRecord =
-		static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-	tempPIapRecord->SetRecordId(connectionPrefs->iDefaultIAP);
-	connectionPrefs->iDefaultIAP.iLinkedRecord = tempPIapRecord;
-	
-	CCDIAPRecord* pIapRecord = (CCDIAPRecord*)connectionPrefs->iDefaultIAP.iLinkedRecord;
-	pIapRecord->SetRecordId(connectionPrefs->iDefaultIAP);
-	pIapRecord->LoadL(*db);
-	
-	CCDBearerRecordBase* tempBearerRecord =
-		static_cast<CCDBearerRecordBase*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
-	tempBearerRecord->SetRecordId(pIapRecord->iBearer);
-	pIapRecord->iBearer.iLinkedRecord = tempBearerRecord;
-
-	CCDBearerRecordBase* pBearerRecord = (CCDBearerRecordBase*) pIapRecord->iBearer.iLinkedRecord;
-	pBearerRecord->SetRecordId(pIapRecord->iBearer);
-	pBearerRecord->LoadL(*db);
-	// end
-	
-	TUint32 iapId = pBearerRecord->iRecordTag;
-
-	//
-	// Get bearer number from IAP table, it is assumed bearer type will be a modem...
-	//
-	CMDBField<TUint32>* bearerField = new(ELeave) CMDBField<TUint32>(KCDTIdIAPBearer);
-	CleanupStack::PushL(bearerField);
-	bearerField->SetRecordId(iapId);
-	bearerField->LoadL(*db);
-	TUint32 modemId = *bearerField;
-	CleanupStack::PopAndDestroy(bearerField);
-	
-	//
-	// Get modem parameters...
-	//
-	CCDModemBearerRecord *modemRecord =
-		static_cast<CCDModemBearerRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
-	CleanupStack::PushL(modemRecord);
-	modemRecord->SetRecordId(modemId);
-	modemRecord->LoadL(*db);
-	iPortDriverName = modemRecord->iCsyName;
-	iCommPortName = modemRecord->iPortName;
-	iFaxInitString = modemRecord->iFaxInitString;
-	iModemInitString = modemRecord->iModemInitString;
-	
-	TUint32 faxClass;
-	faxClass = modemRecord->iFaxClassPref;
-	aFaxSettings.iFaxClass = (TFaxClass) faxClass;
-
-	CleanupStack::PopAndDestroy(3); // db, connectionPrefs, modemId
-	
-	} // CFaxTestStep::ReadFaxCommDBSettingsL
-
-
-/**
- *  Begin Fax Transfer.  We only launch it once the elements of
- *  session->iFaxSessionParameters are all set up.  We call it with a
- *  TRequestStatus and while waiting for the fax to end, we also display
- *  the status of the fax every second.
- *
- *  @param aFaxSession   Fax Session already in use.
- */	
-TInt CFaxTestStep::BeginFaxTransfer(CFaxTransfer* aFaxSession)
-	{
-	TRequestStatus  threadStatus;
-	TRequestStatus  timerStatus;
-	RTimer  timer;
-	TFaxPhase  lastPhase = ENotYetStarted;
-	TInt  result;
-
-	result = aFaxSession->Start(threadStatus);
-	if (result == KErrNone)
-		{
-		timer.CreateLocal ();
-		timer.After(timerStatus, KFaxTestLogPeriod);
-
-		for (;;)
-			{
-			User::WaitForRequest(timerStatus, threadStatus);
-			if (timerStatus != KRequestPending)
-				{
-				if (aFaxSession->Progress())
-					{
-					INFO_PRINTF1(_L("Cancelling - no progress!"));
-					aFaxSession->Cancel();
-					}
-				else
-					{
-					lastPhase = aFaxSession->iProgress.iPhase;
-					if (lastPhase != ENotYetStarted)
-						{
-						INFO_PRINTF6(_L("Phase %c Speed %d Resolution %d Compression %dD ECM %d"),
-									 aFaxSession->iProgress.iPhase,
-									 aFaxSession->iProgress.iSpeed,
-									 aFaxSession->iProgress.iResolution,
-									 aFaxSession->iProgress.iCompression+1,
-									 aFaxSession->iProgress.iECM);
-						INFO_PRINTF4(_L("Line %d Page %d Connected to \"%S\""),
-									 aFaxSession->iProgress.iLines,
-									 aFaxSession->iProgress.iPage,
-									 &aFaxSession->iProgress.iAnswerback);
-						}
-					timer.After(timerStatus, KFaxTestLogPeriod);
-					}
-				}
-			else if (threadStatus != KRequestPending)
-				{
-				aFaxSession->Stop();
-
-				timer.Cancel();
-				User::WaitForRequest(timerStatus);
-				timer.Close ();
-
-				result = threadStatus.Int();
-				break;
-				}
-			}
-		}
-
-	if (result == KFaxErrNoHangup)
-		{
-		//
-		// KFaxErrNoHangup is a phase E error and can be safely ignored.
-		//
-		result = KErrNone;
-		}
-
-	return (result);
-	} // CFaxTestStep::BeginFaxTransfer()
-
-
-void CFaxTestStep::GenerateHeaderFileL(TFaxSettings& aFaxSettings, const TUint8* aFont,
-									   TInt aWidth, TInt aHeight)
-{
-	TFaxHeaderInfo  faxHeader;
-
-	//
-	// Declare the font size...
-	//
-	faxHeader.iHeaderFontWidthInBytes  = aWidth;
-	faxHeader.iHeaderFontHeightInLines = aHeight;
-
-	//
-	// Work out the number of characters we can get in the scan line, so that we can
-	// create a modifiable buffer to hold the header line and fill it with spaces
-	//
-	TInt  charactersPerLine = KFaxBytesPerScanLine / faxHeader.iHeaderFontWidthInBytes;
-	HBufC8*  textBuff = HBufC8::New(charactersPerLine);
-	CleanupStack::PushL(textBuff);
-
-	if (!textBuff)
-		{
-		User::Leave (KErrNoMemory);
-		}
-
-	TPtr8  textLine = textBuff->Des();
-	textLine.Fill(' ', charactersPerLine);
-
-	//
-	// Work out the margin we leave on each side of the page in characters
-	// this is specified as 74 pixels in T.4.
-	//
-	TInt  margin = (74 / (8 * faxHeader.iHeaderFontWidthInBytes));
-
-	//
-	// THE FOLLOWING LAYOUT IS PURELY FOR TEST PURPOSES AND SHOULDN'T
-	// BE TAKEN TO BE A DEFINITIVE HEADER LAYOUT
-	//
-	//
-	// assume we have the date and time on the lefthand side as dd/mm/yyyy hh:mm
-	// 0000000001111111
-	// 1234567890123456
-	// fill in the separators
-	//
-	textLine.Replace(margin + 3, 1, _L8 ("/"));
-	textLine.Replace(margin + 6, 1, _L8 ("/"));
-	textLine.Replace(margin + 14, 1, _L8 (":"));
-
-	//
-	// Set up the offsets to the data...
-	//
-	faxHeader.iOffsetToDay    = margin + 1;
-	faxHeader.iOffsetToMonth  = margin + 4;
-	faxHeader.iOffsetToYear   = margin + 7;
-	faxHeader.iOffsetToHour   = margin + 12;
-	faxHeader.iOffsetToMinute = margin + 15;
-
-	//
-	// Assume we have the page info on the righthand side as pp/tt
-	// 54321
-	// fill in the separator
-	//
-	textLine.Replace(charactersPerLine - margin - 3, 1, _L8 ("/"));
-
-	//
-	// Set up the offsets to the data
-	//
-	faxHeader.iOffsetToTotalPages  = charactersPerLine - margin - 2;
-	faxHeader.iOffsetToCurrentPage = charactersPerLine - margin - 5;
-
-	//
-	// Fill the header line with appropriate information
-	//
-	textLine.Replace(faxHeader.iOffsetToMinute + 4, aFaxSettings.iFaxId.Length (),
-					 aFaxSettings.iFaxId);
-
-	//
-	// HEADER LAYOUT NOW FINISHED
-	//
-	// Now we can write the fax header info to the header info file
-	//
-	CFaxHeaderLines*  testheader = CFaxHeaderLines::NewL();
-	CleanupStack::PushL(testheader);
-
-	testheader->WriteFaxHeaderInfoL(faxHeader);
-
-	//
-	// Now we generate the scan line and write the header line bitmap
-	// via a loop for each rowInFont in the font.
-	//
-	TInt rowInFont;
-
-	for (rowInFont = 0;  rowInFont < faxHeader.iHeaderFontHeightInLines;  rowInFont++)
-		{
-		TRawScanLine  image;
-
-		image.SetMax ();
-		image.FillZ ();
-		
-		TInt offsetInImage = 0;
-
-		for (TInt characterPosition = 0;  characterPosition < charactersPerLine;  characterPosition++)
-			{
-			for (TInt fontByte = 0;  fontByte < faxHeader.iHeaderFontWidthInBytes;  fontByte++)
-				{
-				image[offsetInImage++] = (TUint8) ~ KReverseByte[*(aFont + ((textLine[characterPosition] - 32) * faxHeader.iHeaderFontHeightInLines * faxHeader.iHeaderFontWidthInBytes) + (rowInFont * faxHeader.iHeaderFontWidthInBytes) + fontByte)];
-				}
-			}
-		testheader->WriteRawHeaderLineL(rowInFont, image);
-		}
-
-	//
-	// Now we replace the first ten characters in the header text line with digits
-	// and write out the font line...
-	//
-	textLine.Replace(0, 10, _L8 ("0123456789"));	
-
-	for (rowInFont = 0;  rowInFont < faxHeader.iHeaderFontHeightInLines;  rowInFont++)
-		{
-		TRawScanLine image;
-
-		image.SetMax ();
-		image.FillZ ();
-
-		TInt offsetInImage = 0;
-
-		for (TInt characterPosition = 0;  characterPosition < charactersPerLine;  characterPosition++)
-			{
-			for (TInt fontByte = 0;  fontByte < faxHeader.iHeaderFontWidthInBytes;  fontByte++)
-				{
-				image[offsetInImage++] = (TUint8) ~ KReverseByte[*(aFont + ((textLine[characterPosition] - 32) * faxHeader.iHeaderFontHeightInLines * faxHeader.iHeaderFontWidthInBytes) + (rowInFont * faxHeader.iHeaderFontWidthInBytes) + fontByte)];
-				}
-			}
-		testheader->WriteRawFontLineL(rowInFont, image);
-		}
-
-	CleanupStack::PopAndDestroy(testheader);
-	CleanupStack::PopAndDestroy(textBuff);
-	} // CFaxTestStep::GenerateHeaderFileL
-