diff -r 000000000000 -r 9cfd9a3ee49c networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/inc/cconfigmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/inc/cconfigmanager.h Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,154 @@ +// 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: +// This file defines the class that manages configuration of +// Test Protocol Module operation. +// +// + +/** + @file + @internalComponent + @test +*/ + +#ifndef __CCONFIGMANAGER_H__ +#define __CCONFIGMANAGER_H__ + +#include + +// Table index values +#define KMoLr 0 +#define KMtLr 1 +#define KEmergency 2 +#define KX3pLow 3 +#define KX3pMid 4 +#define KX3pHi 5 +#define KMaxOperationTypes 6 + +/** Central repository UID +This identifies the external data source for decision data +*/ +#define KMyRepositoryUid 0x10281D6F + +/** Default decision +Used if a decision value is not provided by external data, and also +if a caller specifies an invalid type of current or new operation. +*/ +#define KDefaultDecision EConflictRejectNew + + +/** Configuration Manager +This class manages the configuration of Test Protocol Module operation in +relation to how to handle conflicting services. + +The class provides a method for the protocol manager to call in order +to generate a decision for handling a new operation, with due consideration +of any current active operation. + +Conflict decisions are taken from a Decision Table which is initialised from an +external data source during construction. The table is represented as a matrix +of decisions organised in rows and columns, representing current operation +and new operation, respectively. The UID (unique identifiers) for the external +data items are shown in this representation of the table. + + New + Operation --> + + MOLR MTLR EMRG X3Pl X3Pm X3Ph + ----------------------------- + Current MOLR | 1 | 2 | 3 | 4 | 5 | 6 | + Operation |----|----|----|----|----|----| + | MTLR | 7 | 8 | 9 | 10 | 11 | 12 | + | |----|----|----|----|----|----| + v EMRG | 13 | 14 | 15 | 16 | 17 | 18 | + |----|----|----|----|----|----| + X3Pl | 19 | 20 | 21 | 22 | 23 | 24 | + |----|----|----|----|----|----| + X3Pm | 25 | 26 | 27 | 28 | 29 | 30 | + |----|----|----|----|----|----| + X3Ph | 31 | 32 | 33 | 34 | 35 | 36 | + ----------------------------- + +X3Pl = low priority X3P +X3Pm = medium priority X3P +X3Ph = high priority X3P + +To retrieve a decision this class performs a table look-up according to the +current operation and new operation specified by the caller. The index is +calculated using row and column values according to the operation types. +Note: the table index equates to (UID value - 1) + +*/ +NONSHARABLE_CLASS(CConfigManager) : public CBase + { +public: + + enum TConflictResult + { + EConflictNone, + EConflictRejectNew, + EConflictQueueNew, + EConflictCancelCurrent, + EConflictQueueCurrent + }; + + enum TConflictOp + { + EOpNone, + EOpMoLr, // MO-LR + EOpNbLr, // Net Based Loc + EOpMtLr, // MT-LR + EOpNiLr, // Net Induced + EOpX3p // X3P + }; + + enum TConflictPriority + { + EPriorityNone, + EPriorityLow, + EPriorityMedium, + EPriorityHigh, + EPriorityEmergency + }; + + class TConflictOperation + { + public: + TConflictOp iOperation; + TConflictPriority iPriority; + }; + +public: + + static CConfigManager* NewL(); + ~CConfigManager(); + + TConflictResult ConflictDecision(const TConflictOperation& aCurrentOp, + const TConflictOperation& aNewOp) const; + +private: + + CConfigManager(); + void ConstructL(); + void LoadDecisionDataL(); + + TInt DecisionTableIndex(const TConflictOperation& aOperation) const; + +private: + + RArray iDecisionTable; + + }; + +#endif // __CCONFIGMANAGER_H__