--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btmac/src/ATCodec/atcparam.cpp Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,179 @@
+/*
+* 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: The parameter of an AT command.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <s32strm.h>
+#include "atcodec.h"
+#include "debug.h"
+
+const TUint KCharDoubleQuote = (TUint) '"';
+_LIT8(KDesDoubleQuote, "\"");
+
+// ================= MEMBER FUNCTIONS =======================
+
+EXPORT_C TATParam::TATParam()
+ : iValue(KNullDesC8), iValueInt(0), iType(EATNullParam)
+ {
+ }
+
+EXPORT_C TATParam::TATParam(const TDesC8& aValue, TATParamType aType)
+ : iValueInt(0), iType(aType)
+ {
+ iValue.Copy(aValue.Left(iValue.MaxLength())); // to prevent panic for exceeding iValue length
+ iValue.Trim();
+ if (EATDQStringParam == aType)
+ AddDQ();
+ TRACE_INFO((_L8("param type %d, '%S'"), iType, &iValue))
+ }
+
+EXPORT_C TATParam::TATParam(TInt aValue)
+ : iValueInt(aValue), iType(EATIntParam)
+ {
+ iValue.Num(aValue, EDecimal);
+ TRACE_INFO((_L8("param type %d, '%S'"), iType, &iValue))
+ }
+
+// -----------------------------------------------------------------------------
+// TATParam::Int
+// -----------------------------------------------------------------------------
+EXPORT_C TInt TATParam::Int(TInt& aValue) const
+ {
+ if (iType == EATIntParam)
+ {
+ aValue = iValueInt;
+ return KErrNone;
+ }
+ return KErrNotFound;
+ }
+
+// -----------------------------------------------------------------------------
+// TATParam::Str
+// -----------------------------------------------------------------------------
+EXPORT_C const TDesC8& TATParam::Des() const
+ {
+ return iValue;
+ }
+
+// -----------------------------------------------------------------------------
+// TATParam::Type
+// -----------------------------------------------------------------------------
+EXPORT_C TATParamType TATParam::Type() const
+ {
+ return iType;
+ }
+
+// -----------------------------------------------------------------------------
+// TATParam::SetValue
+// -----------------------------------------------------------------------------
+EXPORT_C TInt TATParam::SetValue(const TDesC8& aValue, TATParamType aType)
+ {
+ if (aValue.Length() > KMaxATParamSize)
+ {
+ return KErrArgument;
+ }
+
+ iType = aType;
+ TInt err = KErrNone;
+ switch (iType)
+ {
+ case EATNullParam:
+ {
+ iValue.Zero();
+ break;
+ }
+ case EATIntParam:
+ {
+ TLex8 lex(aValue);
+ err = lex.Val(iValueInt);
+ if (!err)
+ {
+ iValue.Copy(aValue);
+ iValue.Trim();
+ }
+ break;
+ }
+ case EATStringParam:
+ {
+ iValue.Copy(aValue);
+ iValue.Trim();
+ break;
+ }
+ case EATDQStringParam:
+ {
+ iValue.Copy(aValue);
+ iValue.Trim();
+ AddDQ();
+ break;
+ }
+ }
+ TRACE_INFO((_L8("param type %d, '%S'"), iType, &iValue))
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// TATParam::SetValue
+// -----------------------------------------------------------------------------
+EXPORT_C void TATParam::SetInt(TInt aValue)
+ {
+ iValueInt = aValue;
+ iValue.Num(aValue, EDecimal);
+ iType = EATIntParam;
+ }
+
+EXPORT_C void TATParam::ExternalizeL(RWriteStream& aStream) const
+ {
+ aStream << iValue;
+ aStream.WriteInt32L(KStreamVersion1);
+ aStream.WriteInt32L(iValueInt);
+ aStream.WriteInt32L(iType);
+ }
+
+EXPORT_C void TATParam::InternalizeL(RReadStream& aStream)
+ {
+ TInt32 version = aStream.ReadInt32L();
+
+ if (version == KStreamVersion1)
+ {
+ aStream >> iValue;
+ iValueInt = aStream.ReadInt32L();
+ iType = static_cast<TATParamType>(aStream.ReadInt32L());
+ }
+ }
+
+void TATParam::AddDQ()
+ {
+ if (iValue.Length())
+ {
+ if (iValue[0] != KCharDoubleQuote)
+ {
+ iValue.Insert(0, KDesDoubleQuote);
+ }
+ if (iValue[iValue.Length() - 1] != KCharDoubleQuote)
+ {
+ iValue.Append(KDesDoubleQuote);
+ }
+ }
+ else
+ {
+ iValue.Append(KDesDoubleQuote);
+ iValue.Append(KDesDoubleQuote);
+ }
+ }
+
+// End of file