--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/haitest/bspsvs/suite/e32/src/T_TCommCapsV01Data.cpp Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,465 @@
+/*
+* Copyright (c) 2005-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:
+*
+*/
+
+#include "T_TCommCapsV01Data.h"
+
+/*@{*/
+_LIT(KStrNull, " ");
+
+_LIT(KCmdConstructor, "new");
+_LIT(KCmdDestructor, "~");
+_LIT(KCmdiDataBits, "iDataBits");
+_LIT(KCmdiFifo, "iFifo");
+_LIT(KCmdiHandshake, "iHandshake");
+_LIT(KCmdiParity, "iParity");
+_LIT(KCmdiRate, "iRate");
+_LIT(KCmdiSIR, "iSIR");
+_LIT(KCmdiSignals, "iSignals");
+_LIT(KCmdiStopBits, "iStopBits");
+
+_LIT(KFldExpected, "expected");
+
+_LIT(KLogError, "Error=%d");
+/*@}*/
+
+_LIT(KStrKCapsData5, "KCapsData5");
+_LIT(KStrKCapsData6, "KCapsData6");
+_LIT(KStrKCapsData7, "KCapsData7");
+_LIT(KStrKCapsData8, "KCapsData8");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableDataBits[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsData5, KCapsData5,
+ KStrKCapsData6, KCapsData6,
+ KStrKCapsData7, KCapsData7,
+ KStrKCapsData8, KCapsData8,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsHasFifo, "KCapsHasFifo");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableFifo[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsHasFifo, KCapsHasFifo,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsObeyXoffSupported, "KCapsObeyXoffSupported");
+_LIT(KStrKCapsSendXoffSupported, "KCapsSendXoffSupported");
+_LIT(KStrKCapsObeyCTSSupported, "KCapsObeyCTSSupported");
+_LIT(KStrKCapsFailCTSSupported, "KCapsFailCTSSupported");
+_LIT(KStrKCapsObeyDSRSupported, "KCapsObeyDSRSupported");
+_LIT(KStrKCapsFailDSRSupported, "KCapsFailDSRSupported");
+_LIT(KStrKCapsObeyDCDSupported, "KCapsObeyDCDSupported");
+_LIT(KStrKCapsFailDCDSupported, "KCapsFailDCDSupported");
+_LIT(KStrKCapsFreeRTSSupported, "KCapsFreeRTSSupported");
+_LIT(KStrKCapsFreeDTRSupported, "KCapsFreeDTRSupported");
+_LIT(KStrKCapsObeyDTRSupported, "KCapsObeyDTRSupported");
+_LIT(KStrKCapsObeyRTSSupported, "KCapsObeyRTSSupported");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableHandshake[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsObeyXoffSupported, KCapsObeyXoffSupported,
+ KStrKCapsSendXoffSupported, KCapsSendXoffSupported,
+ KStrKCapsObeyCTSSupported, KCapsObeyCTSSupported,
+ KStrKCapsFailCTSSupported, KCapsFailCTSSupported,
+ KStrKCapsObeyDSRSupported, KCapsObeyDSRSupported,
+ KStrKCapsFailDSRSupported, KCapsFailDSRSupported,
+ KStrKCapsObeyDCDSupported, KCapsObeyDCDSupported,
+ KStrKCapsFailDCDSupported, KCapsFailDCDSupported,
+ KStrKCapsFreeRTSSupported, KCapsFreeRTSSupported,
+ KStrKCapsFreeDTRSupported, KCapsFreeDTRSupported,
+ KStrKCapsObeyDTRSupported, KCapsObeyDTRSupported,
+ KStrKCapsObeyRTSSupported, KCapsObeyRTSSupported,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsParityNone, "KCapsParityNone");
+_LIT(KStrKCapsParityEven, "KCapsParityEven");
+_LIT(KStrKCapsParityOdd, "KCapsParityOdd");
+_LIT(KStrKCapsParityMark, "KCapsParityMark");
+_LIT(KStrKCapsParitySpace, "KCapsParitySpace");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableParity[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsParityNone, KCapsParityNone,
+ KStrKCapsParityEven, KCapsParityEven,
+ KStrKCapsParityOdd, KCapsParityOdd,
+ KStrKCapsParityMark, KCapsParityMark,
+ KStrKCapsParitySpace, KCapsParitySpace,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsBps50, "KCapsBps50");
+_LIT(KStrKCapsBps75, "KCapsBps75");
+_LIT(KStrKCapsBps110, "KCapsBps110");
+_LIT(KStrKCapsBps134, "KCapsBps134");
+_LIT(KStrKCapsBps150, "KCapsBps150");
+_LIT(KStrKCapsBps300, "KCapsBps300");
+_LIT(KStrKCapsBps600, "KCapsBps600");
+_LIT(KStrKCapsBps1200, "KCapsBps1200");
+_LIT(KStrKCapsBps1800, "KCapsBps1800");
+_LIT(KStrKCapsBps2000, "KCapsBps2000");
+_LIT(KStrKCapsBps2400, "KCapsBps2400");
+_LIT(KStrKCapsBps3600, "KCapsBps3600");
+_LIT(KStrKCapsBps4800, "KCapsBps4800");
+_LIT(KStrKCapsBps7200, "KCapsBps7200");
+_LIT(KStrKCapsBps9600, "KCapsBps9600");
+_LIT(KStrKCapsBps19200, "KCapsBps19200");
+_LIT(KStrKCapsBps38400, "KCapsBps38400");
+_LIT(KStrKCapsBps57600, "KCapsBps57600");
+_LIT(KStrKCapsBps115200, "KCapsBps115200");
+_LIT(KStrKCapsBps230400, "KCapsBps230400");
+_LIT(KStrKCapsBps460800, "KCapsBps460800");
+_LIT(KStrKCapsBps576000, "KCapsBps576000");
+_LIT(KStrKCapsBps1152000, "KCapsBps1152000");
+_LIT(KStrKCapsBps4000000, "KCapsBps4000000");
+_LIT(KStrKCapsBps921600, "KCapsBps921600");
+_LIT(KStrKCapsBpsAutobaud, "KCapsBpsAutobaud");
+_LIT(KStrKCapsBpsSpecial, "KCapsBpsSpecial");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableRate[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsBps50, KCapsBps50,
+ KStrKCapsBps75, KCapsBps75,
+ KStrKCapsBps110, KCapsBps110,
+ KStrKCapsBps134, KCapsBps134,
+ KStrKCapsBps150, KCapsBps150,
+ KStrKCapsBps300, KCapsBps300,
+ KStrKCapsBps600, KCapsBps600,
+ KStrKCapsBps1200, KCapsBps1200,
+ KStrKCapsBps1800, KCapsBps1800,
+ KStrKCapsBps2000, KCapsBps2000,
+ KStrKCapsBps2400, KCapsBps2400,
+ KStrKCapsBps3600, KCapsBps3600,
+ KStrKCapsBps4800, KCapsBps4800,
+ KStrKCapsBps7200, KCapsBps7200,
+ KStrKCapsBps9600, KCapsBps9600,
+ KStrKCapsBps19200, KCapsBps19200,
+ KStrKCapsBps38400, KCapsBps38400,
+ KStrKCapsBps57600, KCapsBps57600,
+ KStrKCapsBps115200, KCapsBps115200,
+ KStrKCapsBps230400, KCapsBps230400,
+ KStrKCapsBps460800, KCapsBps460800,
+ KStrKCapsBps576000, KCapsBps576000,
+ KStrKCapsBps1152000, KCapsBps1152000,
+ KStrKCapsBps4000000, KCapsBps4000000,
+ KStrKCapsBps921600, KCapsBps921600,
+ KStrKCapsBpsAutobaud, KCapsBpsAutobaud,
+ KStrKCapsBpsSpecial, KCapsBpsSpecial,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsSIR115kbps, "KCapsSIR115kbps");
+_LIT(KStrKCapsSIR2400bpsOnly, "KCapsSIR2400bpsOnly");
+_LIT(KStrKCapsSIR4Mbs, "KCapsSIR4Mbs");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableSir[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsSIR115kbps, KCapsSIR115kbps,
+ KStrKCapsSIR2400bpsOnly, KCapsSIR2400bpsOnly,
+ KStrKCapsSIR4Mbs, KCapsSIR4Mbs,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsSignalCTSSupported, "KCapsSignalCTSSupported");
+_LIT(KStrKCapsSignalDSRSupported, "KCapsSignalDSRSupported");
+_LIT(KStrKCapsSignalDCDSupported, "KCapsSignalDCDSupported");
+_LIT(KStrKCapsSignalRNGSupported, "KCapsSignalRNGSupported");
+_LIT(KStrKCapsSignalRTSSupported, "KCapsSignalRTSSupported");
+_LIT(KStrKCapsSignalDTRSupported, "KCapsSignalDTRSupported");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableSignals[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsSignalCTSSupported, KCapsSignalCTSSupported,
+ KStrKCapsSignalDSRSupported, KCapsSignalDSRSupported,
+ KStrKCapsSignalDCDSupported, KCapsSignalDCDSupported,
+ KStrKCapsSignalRNGSupported, KCapsSignalRNGSupported,
+ KStrKCapsSignalRTSSupported, KCapsSignalRTSSupported,
+ KStrKCapsSignalDTRSupported, KCapsSignalDTRSupported,
+ KStrNull, -1
+ };
+
+_LIT(KStrKCapsStop1, "KCapsStop1");
+_LIT(KStrKCapsStop2, "KCapsStop2");
+const CDataWrapperBase::TEnumEntryTable CT_TCommCapsV01Data::iEnumTableStopBits[] =
+ {
+// Enum as a descriptor Enum
+ KStrKCapsStop1, KCapsStop1,
+ KStrKCapsStop2, KCapsStop2,
+ KStrNull, -1
+ };
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_TCommCapsV01Data::CT_TCommCapsV01Data()
+: CDataWrapperBase()
+, iCommCaps(NULL)
+ {
+ }
+
+CT_TCommCapsV01Data::~CT_TCommCapsV01Data()
+/**
+ * Public destructor
+ */
+ {
+ DestroyData();
+ }
+
+void CT_TCommCapsV01Data::DestroyData()
+ {
+ delete iCommCaps;
+ iCommCaps=NULL;
+ }
+
+TDes8* CT_TCommCapsV01Data::Descriptor()
+/**
+ * Return a pointer to the buffer
+ *
+ * @return pointer to the buffer
+ */
+ {
+ return iCommCaps;
+ }
+
+TAny* CT_TCommCapsV01Data::GetObject()
+/**
+ * Return a pointer to the object that the data wraps
+ *
+ * @return pointer to the object that the data wraps
+ */
+ {
+ return iCommCaps;
+ }
+
+TBool CT_TCommCapsV01Data::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Process a command read from the ini file
+ *
+ * @param aCommand The command to process
+ * @param aSection The section in the ini containing data for the command
+ * @param aAsyncErrorIndex Command index for async calls to return errors to
+ *
+ * @return ETrue if the command is processed
+ *
+ * @leave System wide error
+ */
+ {
+ TBool ret=ETrue;
+ TInt err=KErrNone;
+
+ if ( aCommand==KCmdConstructor )
+ {
+ err=DoCmdConstructor();
+ }
+ else if ( aCommand==KCmdDestructor )
+ {
+ DoCmdDestructor();
+ }
+ else if ( aCommand==KCmdiDataBits )
+ {
+ DoCmdiDataBits(aSection);
+ }
+ else if ( aCommand==KCmdiFifo )
+ {
+ DoCmdiFifo(aSection);
+ }
+ else if ( aCommand==KCmdiHandshake )
+ {
+ DoCmdiHandshake(aSection);
+ }
+ else if ( aCommand==KCmdiParity )
+ {
+ DoCmdiParity(aSection);
+ }
+ else if ( aCommand==KCmdiRate )
+ {
+ DoCmdiRate(aSection);
+ }
+ else if ( aCommand==KCmdiSIR )
+ {
+ DoCmdiSIR(aSection);
+ }
+ else if ( aCommand==KCmdiSignals )
+ {
+ DoCmdiSignals(aSection);
+ }
+ else if ( aCommand==KCmdiStopBits )
+ {
+ DoCmdiStopBits(aSection);
+ }
+ else
+ {
+ ret=CDataWrapperBase::DoCommandL(aCommand, aSection, aAsyncErrorIndex);
+ }
+
+ if ( err!=KErrNone )
+ {
+ ERR_PRINTF2(KLogError, err);
+ SetError(err);
+ }
+
+ return ret;
+ }
+
+TCommCapsV01& CT_TCommCapsV01Data::GetCommCapsV01()
+ {
+ return (*iCommCaps)();
+ }
+
+TInt CT_TCommCapsV01Data::DoCmdConstructor()
+ {
+ DestroyData();
+ TRAPD(err, iCommCaps=new (ELeave) TCommCaps());
+ iCommCaps->FillZ();
+ return err;
+ }
+
+void CT_TCommCapsV01Data::DoCmdDestructor()
+ {
+ DestroyData();
+ }
+
+void CT_TCommCapsV01Data::DoCmdiDataBits(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iDataBits;
+ INFO_PRINTF2(_L("iDataBits : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableDataBits, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiFifo(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iFifo;
+ INFO_PRINTF2(_L("iFifo : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableFifo, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiHandshake(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iHandshake;
+ INFO_PRINTF2(_L("iHandshake : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableHandshake, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiParity(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iParity;
+ INFO_PRINTF2(_L("iParity : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableParity, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiRate(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iRate;
+ INFO_PRINTF2(_L("iRate : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableRate, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiSIR(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iSIR;
+ INFO_PRINTF2(_L("iSIR : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableSir, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiSignals(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iSignals;
+ INFO_PRINTF2(_L("iSignals : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableSignals, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+void CT_TCommCapsV01Data::DoCmdiStopBits(const TDesC& aSection)
+ {
+ TUint actual=GetCommCapsV01().iStopBits;
+ INFO_PRINTF2(_L("iStopBits : 0x%X"), actual);
+
+ TUint expected;
+ if ( GetOrFromConfig(aSection, KFldExpected(), iEnumTableStopBits, expected) )
+ {
+ if ( expected!=actual )
+ {
+ ERR_PRINTF1(_L("Expected Value does not match actual"));
+ SetBlockResult(EFail);
+ }
+ }
+ }