dbgagents/trkagent/app/s60/TrkSettingsData.cpp
author ravikurupati
Tue, 02 Mar 2010 10:33:16 +0530
changeset 0 c6b0df440bee
permissions -rw-r--r--
Initial contribution of EPL licensed sources

/*
* Copyright (c) 2005 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: 
*
*/



// INCLUDE FILES
#include "TrkSettingsData.h"

// ================= MEMBER FUNCTIONS =========================================

// ----------------------------------------------------------------------------
// CTrkSettingsData::NewL
// Two-phase constructor
// ----------------------------------------------------------------------------
//
CTrkSettingsData* CTrkSettingsData::NewL(RTrkSrvCliSession& aTrkSession)
{
    CTrkSettingsData* data = new(ELeave) CTrkSettingsData(aTrkSession);
    CleanupStack::PushL(data);
    data->ConstructL();
    CleanupStack::Pop(); // data
    return data;
}

// Destructor
//
CTrkSettingsData::~CTrkSettingsData()
{
}

// Constructor
//
CTrkSettingsData::CTrkSettingsData(RTrkSrvCliSession& aTrkSession)
:iTrkSession(aTrkSession)
{
    iConnTypeIndex = 1;

	iPortNumber = KDefaultUsbPortNumber;
	iBaudRateIndex = 8;
}

// Epoc default constructor
//
void CTrkSettingsData::ConstructL()
{
    iTrkSession.GetCurrentConnData(iTrkConnData);
	iConnTypeIndex = iTrkConnData.iConnType;

#ifdef __OEM_TRK__
	if (iConnTypeIndex>ETrkDcc)
#else
	if (iConnTypeIndex>ETrkBt)
#endif
	{
		iTrkConnData.iConnType = ETrkBt;
		iConnTypeIndex = ETrkBt;
	}
	iPlugAndPlay = iTrkConnData.iPlugPlay;
	iPortNumber = iTrkConnData.iPortNumber;
	iBaudRateIndex = GetIndexForBaudRate(iTrkConnData.iRate);
	
	if(iPlugAndPlay == 1)
	  iPlugAndPlayType = 0;
	else
	  iPlugAndPlayType = 1;
	
}

TInt CTrkSettingsData::SaveSettings()
{
	iTrkConnData.iConnType = (TTrkConnType)iConnTypeIndex;
	iTrkConnData.iRate = GetBaudRateForIndex(iBaudRateIndex);
	iTrkConnData.iPortNumber = iPortNumber;
	
	if(iPlugAndPlayType == 1)
	    iPlugAndPlay = 0;
	else
	    iPlugAndPlay = 1;
	
	
	switch (iTrkConnData.iConnType)
	{
		case ETrkUsbDbgTrc:
		{
			iTrkConnData.iCommType = EDbgTrcComm;
			iTrkConnData.iPDD.Copy(KDefaultUsbPDD);
			iTrkConnData.iLDD.Copy(KDefaultUsbLDD);
			iTrkConnData.iCSY.Copy(KDefaultUsbCSY);
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		case ETrkBt:
		{
			iTrkConnData.iCommType = EBtSocket;
			iTrkConnData.iPDD = KNullDesC;
			iTrkConnData.iLDD = KNullDesC;
			iTrkConnData.iCSY = KNullDesC;
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		case ETrkXti:
		{
			iTrkConnData.iCommType = EXti;
			iTrkConnData.iPDD = KNullDesC;
			iTrkConnData.iLDD.Copy(KTrkXTILDD);
			iTrkConnData.iCSY = KNullDesC;
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		case ETrkDcc:
		{
			iTrkConnData.iCommType = EDcc;
			iTrkConnData.iPDD = KNullDesC;
			iTrkConnData.iLDD.Copy(KTrkDCCLDD);
			iTrkConnData.iCSY = KNullDesC;
			iTrkConnData.iPortNumber = 42;
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		case ETrkUsb:
		{
			iTrkConnData.iCommType = ESerialComm;
			iTrkConnData.iPDD.Copy(KDefaultUsbPDD);
			iTrkConnData.iLDD.Copy(KDefaultUsbLDD);
			iTrkConnData.iCSY.Copy(KDefaultUsbCSY);
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		case ETrkIr:
		{
			iTrkConnData.iCommType = ESerialComm;
			iTrkConnData.iPDD.Copy(KDefaultIrPDD);
			iTrkConnData.iLDD.Copy(KDefaultIrLDD);
			iTrkConnData.iCSY.Copy(KDefaultIrCSY);
			iTrkConnData.iPlugPlay = iPlugAndPlay;
			break;
		}
		default:
		{
			iTrkConnData.iCommType = ESerialComm;
			break;
		}
	}
	return iTrkSession.SetCurrentConnData(iTrkConnData);
}

TInt CTrkSettingsData::GetIndexForBaudRate(TUint aRate)
{
	switch (aRate)
	{
		case 300:     return 0;
		case 1200:    return 1;
		case 2400:    return 2;
		case 4800:    return 3;
		case 9600:    return 4;
		case 19200:   return 5;
		case 38400:   return 6;
		case 57600:   return 7;
		case 115200:  return 8;
		case 234000:  return 9;
		case 460800:  return 10;
		case 576000:  return 11;
		case 1152000: return 12;
		case 4000000: return 13;
		
		default: return 8;
		
	}
	
}

TUint CTrkSettingsData::GetBaudRateForIndex(TInt aIndex)
{
	switch (aIndex)
	{
		case 0:  return 300;
		case 1:  return 1200;
		case 2:  return 2400;
		case 3:  return 4800;
		case 4:  return 9600;
		case 5:  return 19200;
		case 6:  return 38400;
		case 7:  return 57600;
		case 8:  return 115200;
		case 9:  return 234000;
		case 10: return 460800;
		case 11: return 576000;
		case 12: return 1152000;
		case 13: return 4000000;
		
		default: return 115200;
		
	}
	
}
// End of File