diff -r 4096754ee773 -r 52a167391590 localconnectivityservice/generichid/src/hidfield.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/generichid/src/hidfield.cpp Wed Sep 01 12:20:40 2010 +0100 @@ -0,0 +1,638 @@ +/* +* Copyright (c) 2004-2007 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: Hid field implementation +* +*/ + + +#include +#include +#include +#include + +#include "hidreportroot.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// NewL() +// --------------------------------------------------------------------------- +// +CField* CField::NewL() + { + CField* self = NewLC(); + CleanupStack::Pop(); + return self; + } + +// --------------------------------------------------------------------------- +// NewLC() +// --------------------------------------------------------------------------- +// +CField* CField::NewLC() + { + // Two-phase construction isn't necessary at present: + CField* self = new (ELeave) CField; + CleanupStack::PushL(self); + return self; + } + +// --------------------------------------------------------------------------- +// CField() +// --------------------------------------------------------------------------- +// +CField::CField() + { + // nothing else to do + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CField::~CField() + { + iUsageList.Close(); + } + +// --------------------------------------------------------------------------- +// UsagePage() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::UsagePage() const + { + return iUsagePage; + } + +// --------------------------------------------------------------------------- +// ReportId() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::ReportId() const + { + return iReportId; + } + +// --------------------------------------------------------------------------- +// Offset() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::Offset() const + { + return (iReportId == 0) ? iPos : (iPos+KSizeOfByte); + } + +// --------------------------------------------------------------------------- +// Size() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::Size() const + { + return iSize; + } + +// --------------------------------------------------------------------------- +// Count() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::Count() const + { + return iCount; + } + +// --------------------------------------------------------------------------- +// LogicalMin() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::LogicalMin() const + { + return iLogicalMin; + } + +// --------------------------------------------------------------------------- +// LogicalMax() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::LogicalMax() const + { + return iLogicalMax; + } + +// --------------------------------------------------------------------------- +// UsageMin() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::UsageMin() const + { + return iUsageMin; + } + +// --------------------------------------------------------------------------- +// UsageMax() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::UsageMax() const + { + return iUsageMax; + } + +// --------------------------------------------------------------------------- +// PhysicalMin() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::PhysicalMin() const + { + return iPhysicalMin; + } + +// --------------------------------------------------------------------------- +// PhysicalMax() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::PhysicalMax() const + { + return iPhysicalMax; + } + +// --------------------------------------------------------------------------- +// Unit() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::Unit() const + { + return iUnit; + } + +// --------------------------------------------------------------------------- +// UnitExponent() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::UnitExponent() const + { + return iUnitExponent; + } + +// --------------------------------------------------------------------------- +// DesignatorIndex() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::DesignatorIndex() const + { + return iDesignatorIndex; + } + +// --------------------------------------------------------------------------- +// DesignatorMin() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::DesignatorMin() const + { + return iDesignatorMin; + } + +// --------------------------------------------------------------------------- +// DesignatorMax() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::DesignatorMax() const + { + return iDesignatorMax; + } + +// --------------------------------------------------------------------------- +// StringMin() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::StringMin() const + { + return iStringMin; + } + +// --------------------------------------------------------------------------- +// StringMax() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::StringMax() const + { + return iStringMax; + } + +// --------------------------------------------------------------------------- +// StringIndex() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::StringIndex() const + { + return iStringIndex; + } + +// --------------------------------------------------------------------------- +// UsageArray() +// --------------------------------------------------------------------------- +// +EXPORT_C TArray CField::UsageArray() const + { + return iUsageList.Array(); + } + +// --------------------------------------------------------------------------- +// HasUsage() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::HasUsage(const TInt aUsage) const + { + return iUsageList.Find(aUsage) != KErrNotFound; + } + +// --------------------------------------------------------------------------- +// AddUsageL +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::AddUsageL(const TInt aUsage) + { + User::LeaveIfError(iUsageList.Append(aUsage)); + } + +// --------------------------------------------------------------------------- +// ClearUsageList() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::ClearUsageList() + { + iUsageList.Reset(); + } + +// --------------------------------------------------------------------------- +// LastUsage() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::LastUsage() const + { + TInt usage = 0; + if (iUsageList.Count() > 0) + { + usage = iUsageList[iUsageList.Count()-1]; + } + return usage; + } + +// --------------------------------------------------------------------------- +// Attributes() +// --------------------------------------------------------------------------- +// +EXPORT_C TUint32 CField::Attributes() const + { + return iAttributes; + } + +// --------------------------------------------------------------------------- +// Type() +// --------------------------------------------------------------------------- +// +EXPORT_C CField::TType CField::Type() const + { + return iType; + } + +// --------------------------------------------------------------------------- +// IsVariable() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsVariable() const + { + return (( iAttributes & KFieldAttributeVariable ) != 0); + } + +// --------------------------------------------------------------------------- +// IsArray() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsArray() const + { + return ( ( iAttributes & KFieldAttributeVariable ) == 0); + } + +// --------------------------------------------------------------------------- +// IsConstant() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsConstant() const + { + return (( iAttributes & KFieldAttributeConstant ) != 0 ); + } + +// --------------------------------------------------------------------------- +// IsData() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsData() const + { + // Field atribute first bit present if data is constat or is it data. + // If first bit is zero field attibute data is set. + return ( ( iAttributes & KFieldAttributeConstant ) == 0 ); + } + +// --------------------------------------------------------------------------- +// SetType() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetType(const TType& aType) + { + iType = aType; + } + +// --------------------------------------------------------------------------- +// SetUsagePage() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUsagePage(const TInt aUsagePage) + { + iUsagePage = aUsagePage; + } + +// --------------------------------------------------------------------------- +// Destructor() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetReportId(const TInt aId) + { + iReportId = aId; + } + +// --------------------------------------------------------------------------- +// SetOffset() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetOffset(const TInt aOffset) + { + iPos = aOffset; + } + +// --------------------------------------------------------------------------- +// SetSize() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetSize(const TInt aSize) + { + iSize = aSize; + } + +// --------------------------------------------------------------------------- +// SetCount() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetCount(const TInt aCount) + { + iCount = aCount; + } + +// --------------------------------------------------------------------------- +// SetLogicalMin() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetLogicalMin(const TInt aMin) + { + iLogicalMin = aMin; + } + +// --------------------------------------------------------------------------- +// SetLogicalMax() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetLogicalMax(const TInt aMax) + { + iLogicalMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetUsageMin() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUsageMin(const TInt aMin) + { + iUsageMin = aMin; + } + +// --------------------------------------------------------------------------- +// SetUsageMax() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUsageMax(const TInt aMax) + { + iUsageMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetAttributes() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetAttributes(const TUint32 aAttributes) + { + iAttributes = aAttributes; + } + +// --------------------------------------------------------------------------- +// SetPhysicalMin() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetPhysicalMin(TInt aValue) + { + iPhysicalMin = aValue; + } + +// --------------------------------------------------------------------------- +// SetPhysicalMax() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetPhysicalMax(TInt aValue) + { + iPhysicalMax = aValue; + } + +// --------------------------------------------------------------------------- +// SetUnit() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUnit(TInt aValue) + { + iUnit = aValue; + } + +// --------------------------------------------------------------------------- +// SetUnitExponent() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUnitExponent(TInt aValue) + { + iUnitExponent = aValue; + } + +// --------------------------------------------------------------------------- +// SetDesignatorIndex() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetDesignatorIndex(TInt aValue) + { + iDesignatorIndex = aValue; + } + +// --------------------------------------------------------------------------- +// SetDesignatorMin() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetDesignatorMin(TInt aValue) + { + iDesignatorMin = aValue; + } + +// --------------------------------------------------------------------------- +// SetDesignatorMax() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetDesignatorMax(TInt aValue) + { + iDesignatorMax = aValue; + } + +// --------------------------------------------------------------------------- +// SetStringMin() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetStringMin(TInt aValue) + { + iStringMin = aValue; + } + +// --------------------------------------------------------------------------- +// SetStringMax() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetStringMax(TInt aValue) + { + iStringMax = aValue; + } + +// --------------------------------------------------------------------------- +// SetStringIndex() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetStringIndex(TInt aValue) + { + iStringIndex = aValue; + } + +// --------------------------------------------------------------------------- +// SetLogicalRange() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetLogicalRange(TInt aMin, TInt aMax) + { + iLogicalMin = aMin; + iLogicalMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetUsageRange() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetUsageRange(TInt aMin, TInt aMax) + { + iUsageMin = aMin; + iUsageMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetPhysicalRange +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetPhysicalRange(TInt aMin, TInt aMax) + { + iPhysicalMin = aMin; + iPhysicalMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetStringRange() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetStringRange(TInt aMin, TInt aMax) + { + iStringMin = aMin; + iStringMax = aMax; + } + +// --------------------------------------------------------------------------- +// SetDesignatorRange() +// --------------------------------------------------------------------------- +// +EXPORT_C void CField::SetDesignatorRange(TInt aMin, TInt aMax) + { + iDesignatorMin = aMin; + iDesignatorMax = aMax; + } + +// --------------------------------------------------------------------------- +// IsInput() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsInput() const + { + return iType == EInput; + } + +// --------------------------------------------------------------------------- +// IsOutput() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsOutput() const + { + return iType == EOutput; + } + +// --------------------------------------------------------------------------- +// IsFeature() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsFeature() const + { + return iType == EFeature; + } + +// --------------------------------------------------------------------------- +// UsageCount() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::UsageCount() const + { + return iUsageList.Count(); + } + +// --------------------------------------------------------------------------- +// Usage() +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CField::Usage(TInt aIndex) const + { + return iUsageList[aIndex]; + } + +// --------------------------------------------------------------------------- +// IsInReport() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CField::IsInReport(TInt aReportId) const + { + return ( 0 == iReportId || aReportId == iReportId ); + } +