--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/inc/es_accesspointstatus.h Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,282 @@
+// Copyright (c) 2006-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:
+// Data structures for generic access point information
+//
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+
+
+#ifndef _ES_ACCESSPOINTSTATUS_H_
+#define _ES_ACCESSPOINTSTATUS_H_
+
+
+namespace ConnectionServ
+{
+
+// Type TAccessPointStatus (containing TAccessPointFlagValue instances) represents the status flags for an access point.
+// As well as the value of the flag True/False,
+// they include EUnknown, the case where the value isn't (yet) known / wasn't retrieved.
+
+struct TAccessPointStatusFilter;
+
+enum TAccessPointFlagValue
+ {
+ EAccessPointFlagUnknown = 0,
+ EAccessPointFlagTrue = 1,
+ EAccessPointFlagFalse = 2
+ };
+
+struct TAccessPointStatus
+ {
+ union
+ {
+ struct
+ {
+ TUint iConfigured:2;
+ TUint iRestricted:2;
+ TUint iAvailable:2;
+ TUint iStarted:2;
+ TUint iActive:2;
+ } iS;
+ TInt64 iAsInt;
+ } iU;
+
+ TAccessPointStatus(TInt64 aI)
+ {
+ iU.iAsInt = aI;
+ }
+
+ TAccessPointStatus()
+ {
+ iU.iAsInt = TInt64(0);
+ }
+
+ TInt64 AsInt64() const { return iU.iAsInt; }
+
+ void Configured(TAccessPointFlagValue aVal) {iU.iS.iConfigured = aVal;}
+ TAccessPointFlagValue Configured() const {return static_cast<TAccessPointFlagValue>(iU.iS.iConfigured);}
+
+ void Restricted(TAccessPointFlagValue aVal) {iU.iS.iRestricted = aVal;}
+ TAccessPointFlagValue Restricted() const {return static_cast<TAccessPointFlagValue>(iU.iS.iRestricted);}
+
+ void Available(TAccessPointFlagValue aVal) {iU.iS.iAvailable = aVal;}
+ TAccessPointFlagValue Available() const {return static_cast<TAccessPointFlagValue>(iU.iS.iAvailable);}
+
+ void Started(TAccessPointFlagValue aVal) {iU.iS.iStarted = aVal;}
+ TAccessPointFlagValue Started() const {return static_cast<TAccessPointFlagValue>(iU.iS.iStarted);}
+
+ void Active(TAccessPointFlagValue aVal) {iU.iS.iActive = aVal;}
+ TAccessPointFlagValue Active() const {return static_cast<TAccessPointFlagValue>(iU.iS.iActive);}
+
+ void UpdateWith(const TAccessPointStatus& aSrc)
+ {
+ // Fields: CRAS
+
+ // Initial: CR??
+ // +
+ // New: C?a?
+ // =
+ // Result CRa?
+
+ // +
+ // New: C?A?
+ // =
+ // Result: CRA?
+
+ TAccessPointFlagValue value = static_cast<TAccessPointFlagValue>(iU.iS.iConfigured);
+ TAccessPointStatus::PickUpIfSrcKnown( value, aSrc.Configured() );
+ iU.iS.iConfigured = value;
+
+ value = static_cast<TAccessPointFlagValue>(iU.iS.iRestricted);
+ TAccessPointStatus::PickUpIfSrcKnown( value, aSrc.Restricted() );
+ iU.iS.iRestricted = value;
+
+ value = static_cast<TAccessPointFlagValue>(iU.iS.iAvailable);
+ TAccessPointStatus::PickUpIfSrcKnown( value, aSrc.Available() );
+ iU.iS.iAvailable = value;
+
+ value = static_cast<TAccessPointFlagValue>(iU.iS.iStarted);
+ TAccessPointStatus::PickUpIfSrcKnown( value, aSrc.Started() );
+ iU.iS.iStarted = value;
+
+ value = static_cast<TAccessPointFlagValue>(iU.iS.iActive);
+ TAccessPointStatus::PickUpIfSrcKnown( value, aSrc.Active() );
+ iU.iS.iActive = value;
+ }
+
+ static void PickUpIfSrcKnown(TAccessPointFlagValue& aDest, const TAccessPointFlagValue aSrc )
+ {
+ if(aSrc != EAccessPointFlagUnknown)
+ {
+ aDest = aSrc;
+ }
+ }
+
+ inline void CopyFieldsRequiredByQueryFrom(const TAccessPointStatusFilter& aFilter,const TAccessPointStatus& aSource);
+
+ static TText FlagValueAsChar(TAccessPointFlagValue aVal)
+ {
+ switch(aVal)
+ {
+ case EAccessPointFlagFalse: return 'N';
+ case EAccessPointFlagTrue: return 'Y';
+ }
+
+ return '?';
+ }
+ };
+
+// Type TAccessPointStatusFilter (containing TAccessPointFlagFilterValue instances) represents a query against the above type.
+// As well as the value of the flag True/False, meaning "(find the value and) match true/false"
+// they include EAny, meaning "(retrieve the value and) match either value"
+// ... and .. EIgnore, meaning "don't retrieve the value"
+// This is of use for fields such as Availability which may be expensive to retrieve.
+
+enum TAccessPointFlagFilterValue
+ {
+ EAccessPointFlagIgnore = 0, // don't care.. signify we don't want to go and find it out if it requires any effort
+ EAccessPointFlagMatchTrue = 1,
+ EAccessPointFlagMatchFalse = 2,
+ EAccessPointFlagMatchAny = 3, // find the value out
+ };
+
+struct TAccessPointStatusFilter
+ {
+ union
+ {
+ struct
+ {
+ TUint iConfigured:2;
+ TUint iRestricted:2;
+ TUint iAvailable:2;
+ TUint iStarted:2;
+ TUint iActive:2;
+ } iS;
+ TInt64 iAsInt;
+ } iU;
+
+ TAccessPointStatusFilter(TInt64 aI)
+ {
+ iU.iAsInt = aI;
+ }
+
+ TAccessPointStatusFilter()
+ {
+ iU.iAsInt = TInt64(0);
+ }
+
+ TInt64 AsInt64() const { return iU.iAsInt; }
+
+ void Configured(TAccessPointFlagFilterValue aVal) {iU.iS.iConfigured = aVal;}
+ TAccessPointFlagFilterValue Configured() const {return static_cast<TAccessPointFlagFilterValue>(iU.iS.iConfigured);}
+
+ void Restricted(TAccessPointFlagFilterValue aVal) {iU.iS.iRestricted = aVal;}
+ TAccessPointFlagFilterValue Restricted() const {return static_cast<TAccessPointFlagFilterValue>(iU.iS.iRestricted);}
+
+ void Available(TAccessPointFlagFilterValue aVal) {iU.iS.iAvailable = aVal;}
+ TAccessPointFlagFilterValue Available() const {return static_cast<TAccessPointFlagFilterValue>(iU.iS.iAvailable);}
+
+ void Started(TAccessPointFlagFilterValue aVal) {iU.iS.iStarted = aVal;}
+ TAccessPointFlagFilterValue Started() const {return static_cast<TAccessPointFlagFilterValue>(iU.iS.iStarted);}
+
+ void Active(TAccessPointFlagFilterValue aVal) {iU.iS.iActive = aVal;}
+ TAccessPointFlagFilterValue Active() const {return static_cast<TAccessPointFlagFilterValue>(iU.iS.iActive);}
+
+ // helper function.. whether given flag value matches given filter
+ static TBool Matches(TAccessPointFlagFilterValue aFilter,TAccessPointFlagValue aValue)
+ {
+ if(aFilter == EAccessPointFlagIgnore)
+ {
+ return ETrue;
+ }
+
+ switch(aValue)
+ {
+ case EAccessPointFlagFalse:
+ if(aFilter != EAccessPointFlagMatchTrue) //i.e. is False/MatchAny
+ {
+ return ETrue;
+ }
+ break;
+
+ case EAccessPointFlagTrue:
+ if(aFilter != EAccessPointFlagMatchFalse) //i.e. is True/MatchAny
+ {
+ return ETrue;
+ }
+ break;
+
+ case EAccessPointFlagUnknown:
+ if(aFilter == EAccessPointFlagMatchAny) // only if we'll match any
+ {
+ return ETrue;
+ }
+ break;
+ }
+
+ return EFalse;
+ }
+
+ static TText FilterValueAsChar(TAccessPointFlagFilterValue aVal)
+ {
+ switch(aVal)
+ {
+ case EAccessPointFlagMatchFalse: return 'N';
+ case EAccessPointFlagMatchTrue: return 'Y';
+ case EAccessPointFlagMatchAny: return '?';
+ }
+ return '-';
+ }
+
+ };
+
+
+
+inline void TAccessPointStatus::CopyFieldsRequiredByQueryFrom(const TAccessPointStatusFilter& aFilter,const TAccessPointStatus& aSource)
+ {
+ if(aFilter.Configured() != EAccessPointFlagIgnore)
+ {
+ Configured(aSource.Configured());
+ }
+
+ if(aFilter.Restricted() != EAccessPointFlagIgnore)
+ {
+ Restricted(aSource.Restricted());
+ }
+
+ if(aFilter.Available() != EAccessPointFlagIgnore)
+ {
+ Available(aSource.Available());
+ }
+
+ if(aFilter.Started() != EAccessPointFlagIgnore)
+ {
+ Started(aSource.Started());
+ }
+
+ if(aFilter.Active() != EAccessPointFlagIgnore)
+ {
+ Active(aSource.Active());
+ }
+ }
+
+}
+#endif
+