diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/serviceframework/src/upnpstatevariable.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/serviceframework/src/upnpstatevariable.cpp Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,581 @@ +/** @file +* Copyright (c) 2005-2006 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: CUpnpStateVariable +* +*/ + + + +// INCLUDE FILES +#include "upnpstatevariable.h" +#include "upnpstring.h" +#include "upnpargument.h" +#include "upnpserviceimplementation.h" +#define KLogFile _L("UPnPStack.txt") +#include "upnpcustomlog.h" + + +// logs +#include "f32file.h" +#include "s32file.h" + +// CONSTANTS +_LIT8(KUi1, "ui1"); +_LIT8(KUi2, "ui2"); +_LIT8(KUi4, "ui4"); +_LIT8(KI1, "i1"); +_LIT8(KI2, "i2"); +_LIT8(KI4, "i4"); +_LIT8(KInt, "int"); +_LIT8(KR4, "r4"); +_LIT8(KR8, "r8"); +_LIT8(KNumber, "number"); +_LIT8(KFixed144, "fixed.14.4"); +_LIT8(KFloat, "float"); +_LIT8(KChar, "char"); +_LIT8(KString, "string"); +_LIT8(KDate, "date"); +_LIT8(KDateTime, "dateTime"); +_LIT8(KDateTimeTz, "dateTime.tz"); +_LIT8(KTime, "time"); +_LIT8(KTimeTz, "time.tz"); +_LIT8(KBoolean, "boolean"); +_LIT8(KBinBase64, "bin.base64"); +_LIT8(KBinHex, "bin.hex"); +_LIT8(KUri, "uri"); +_LIT8(KUuid, "uuid"); +//_LIT8(KDataType, "dataType"); + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::CUpnpStateVariable +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CUpnpStateVariable::CUpnpStateVariable() +{ + +} + + + +void CUpnpStateVariable::ConstructL() + { + iName = HBufC8::NewL(0); + iDataType = HBufC8::NewL(0); + // iDefaultValue = HBufC8::NewL(0); + iRangeMin = HBufC8::NewL(0); + iRangeMax = HBufC8::NewL(0); + iRangeStep = HBufC8::NewL(0); + iValue = HBufC8::NewL(0); + iEventable = HBufC8::NewL(0); + + iParent = NULL; + iMaxEventRate = 0; + iCurrentEventTime = 0; + iReadyForEventing = ETrue; + + } + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CUpnpStateVariable* CUpnpStateVariable::NewL() +{ + CUpnpStateVariable* self = new (ELeave) CUpnpStateVariable(); + self->ConstructL(); + return self; +} + + +// Destructor +CUpnpStateVariable::~CUpnpStateVariable() +{ + delete iName; + delete iDataType; + delete iDefaultValue; + delete iRangeMin; + delete iRangeMax; + delete iRangeStep; + delete iEventable; + + iAllowedValueList.ResetAndDestroy(); + iAllowedValueList.Close(); + delete iValue; + +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::Name +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C const TPtrC8 CUpnpStateVariable::Name() +{ + if ( iName ) + { + return *iName; + } + else + { + return KNullDesC8(); + } +} + +// ----------------------------------------------------------------------------- +EXPORT_C void CUpnpStateVariable::SetNameL( const TDesC8& aName) + { + HBufC8* tmp = aName.AllocL(); + delete iName; + iName = tmp; + } +// CUpnpStateVariable::Value +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C const TPtrC8 CUpnpStateVariable::Value() +{ + LOGS("CUpnpStateVariable::Value()"); + + if ( iValue ) + { + return *iValue; + } + else + { + return KNullDesC8(); + } +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::SetValueL +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CUpnpStateVariable::SetValueL(const TDesC8& aValue, TBool aIsModerated) +{ + LOGS("CUpnpStateVariable::SetValueL(const TDesC8&)"); + + if( iValue ) + { + delete iValue; + iValue = NULL; + } + + iValue = aValue.AllocL(); + iModerated = aIsModerated; + if (iParent) + { + iParent->AddEventVariable(*this, aIsModerated); + } +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::SetValueL +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CUpnpStateVariable::SetValueL(TInt aValue, TBool aIsModerated) +{ + // LOGS("CUpnpStateVariable::SetValueL(TInt)"); + TBuf8<10> num; + num.Num(aValue); + + SetValueL( num, aIsModerated ); +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::Eventable +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C const TPtrC8 CUpnpStateVariable::Eventable() +{ + if ( iEventable ) + { + return *iEventable; + } + else + { + return KNullDesC8(); + } +} + +EXPORT_C void CUpnpStateVariable::SetEventableL(const TDesC8& aEventable) + { + HBufC8* tmp = aEventable.AllocL(); + delete iEventable; + iEventable = tmp; + } +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::GetDefaultValue +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CUpnpStateVariable::GetDefaultValue(TInt& aValue) +{ + if ( iDefaultValue ) + { + TLex8 lex( *iDefaultValue ); + TInt err = lex.Val( aValue ); + + // Check conversion result + if( err != KErrNone ) + aValue = err; + } + else + { + aValue = KErrNotFound; + } +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::DefaultValue +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C const TPtrC8 CUpnpStateVariable::DefaultValue() +{ + if ( iDefaultValue ) + { + return *iDefaultValue; + } + else + { + return KNullDesC8(); + } +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::AllowedValuesLC +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C CDesC8Array* CUpnpStateVariable::AllowedValuesLC() +{ + CDesC8ArrayFlat* values = new (ELeave) CDesC8ArrayFlat(1); + CleanupStack::PushL(values); + + for ( TInt index = 0; index < iAllowedValueList.Count(); index++ ) + { + HBufC8* tmp = iAllowedValueList[index]; + values->AppendL( *tmp ); + } + + return values; +} +EXPORT_C void CUpnpStateVariable::AddAllowedValueL( const TDesC8& aAllowedValue ) + { + iAllowedValueList.Append( aAllowedValue.AllocL() ); + } + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::MaxValue +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpStateVariable::MaxValue() +{ + TInt retValue = KErrNotFound; + if ( iRangeMax ) + { + TLex8 lex( *iRangeMax ); + lex.Val( retValue ); + } + return retValue; +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::MinValue +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpStateVariable::MinValue() +{ + TInt retValue = KErrNotFound; + if ( iRangeMin ) + { + TLex8 lex( *iRangeMin ); + lex.Val( retValue ); + } + return retValue; +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::Step +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CUpnpStateVariable::Step() +{ + TInt retValue = KErrNotFound; + if ( iRangeStep ) + { + TLex8 lex( *iRangeStep ); + lex.Val( retValue ); + } + return retValue; +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::Type +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TArgumentType CUpnpStateVariable::Type() +{ + if ( iDataType ) + { + const TPtrC8 value = *iDataType; + if (value == KUi1()) + { + return EUi1; + } + else if (value ==KUi2()) + { + return EUi2; + } + else if (value ==KUi4()) + { + return EUi4; + } + else if (value ==KI1()) + { + return EI1; + } + else if (value ==KI2()) + { + return EI2; + } + else if (value ==KI4()) + { + return EI4; + } + else if (value ==KInt()) + { + return EInt; + } + else if (value ==KR4()) + { + return ER4; + } + else if (value ==KR8()) + { + return ER8; + } + else if (value ==KNumber()) + { + return ENumber; + } + else if (value ==KFixed144()) + { + return EFixed144; + } + else if (value ==KFloat()) + { + return EFloat; + } + else if (value ==KChar()) + { + return EChar; + } + else if (value ==KString()) + { + return EString; + } + else if (value ==KDate()) + { + return EDate; + } + else if (value ==KDateTime()) + { + return EDateTime; + } + else if (value ==KDateTimeTz()) + { + return EDateTimeTz; + } + else if (value ==KTime()) + { + return ETime; + } + else if (value ==KTimeTz()) + { + return ETimeTz; + } + else if (value ==KBoolean()) + { + return EBoolean; + } + else if (value ==KBinBase64()) + { + return EBinBase64; + } + else if (value ==KBinHex()) + { + return EBinHex; + } + else if (value ==KUri()) + { + return EUri; + } + else if (value ==KUuid()) + { + return EUuid; + } + else + { + + } + } + + return EUnknown; +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::SetParentImplementation +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpStateVariable::SetParentImplementation(CUpnpServiceImplementation &aParent) +{ + iParent = &aParent; +} + +// ----------------------------------------------------------------------------- +// CUpnpStateVariable::SetParentImplementation +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CUpnpStateVariable::IsModerated() +{ + return iModerated; +} + +EXPORT_C void CUpnpStateVariable::SetTypeL(const TDesC8& aType) + { + HBufC8* tmp = aType.AllocL(); + delete iDataType; + iDataType = tmp; + } + +TBool CUpnpStateVariable::ReadyForEventing() +{ + return iReadyForEventing; +} + +void CUpnpStateVariable::SetMaxEventRate(TInt aMaxRate, TInt aNormalRate) +{ + iMaxEventRate = aMaxRate; + iReadyForEventing = ETrue; + iCurrentEventTime = aMaxRate; + iNormalEventRate = aNormalRate; +} + +TInt CUpnpStateVariable::MaxEventRate() +{ + return iMaxEventRate; +} + +void CUpnpStateVariable::EventTick() +{ + if(iMaxEventRate > 0) + { + iCurrentEventTime = iCurrentEventTime + iNormalEventRate; + + if(iCurrentEventTime >= iMaxEventRate) + { + iReadyForEventing = ETrue; + iCurrentEventTime = 0; + + iEventTime.UniversalTime(); + } + else + { + iTime.UniversalTime(); + + TInt64 int64(iMaxEventRate); + TInt64 diffTime((iTime.MicroSecondsFrom(iEventTime)).Int64()); + + if(diffTime >= int64) + { + iReadyForEventing = ETrue; + iCurrentEventTime = 0; + + iEventTime.UniversalTime(); + } + else + { + iCurrentEventTime = diffTime; + + iReadyForEventing = EFalse; + } + } + } +} + +void CUpnpStateVariable::SetDefaultValueL(const TDesC8& aDefaultValue ) + { + HBufC8* tmp = aDefaultValue .AllocL(); + delete iDefaultValue; + iDefaultValue = tmp; + } + +void CUpnpStateVariable::SetRangeMinL(const TDesC8& aRangeMin ) + { + if( &aRangeMin ) + { + HBufC8* tmp = aRangeMin.AllocL(); + delete iRangeMin; + iRangeMin = tmp; + } + } + +void CUpnpStateVariable::SetRangeMaxL(const TDesC8& aRangeMax ) + { + if( &aRangeMax ) + { + HBufC8* tmp = aRangeMax.AllocL(); + delete iRangeMax; + iRangeMax = tmp; + } + } + +void CUpnpStateVariable::SetRangeStepL(const TDesC8& aRangeStep ) + { + HBufC8* tmp = aRangeStep.AllocL(); + delete iRangeStep; + iRangeStep = tmp; + } + +// End of File