diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simtsy/inc/CSimPhBkUsimStore.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simtsy/inc/CSimPhBkUsimStore.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,205 @@ +// Copyright (c) 2001-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: +// + +#ifndef __SIMPHBKUSIMSTORE_H_ +#define __SIMPHBKUSIMSTORE_H_ + +/** + * @file + * + * Contains the class definitions required for the Phonebook Store. + * @internalAll + */ + +#include +#include +#include +#include "csimtimer.h" +#include "CSimPhone.h" +#include "CSimPhoneSecurity.h" +#include "CSimPhBkStore.h" + +/** + * The main Phonebook Store class which simulates a Phonebook Store. + */ +class CSimPhone; +class CTestConfigSection; +class CTestConfigItem; +class CSimPhBkUSimStore : public CSimPhone, public MTimerCallBack + { +public: + + static CSimPhBkUSimStore* NewL(CSimPhone* aPhone, const TDesC8& aStore, const TDesC8& aName, TInt aMaxNumSlots, TInt aMaxNumLen, TInt aMaxTextLen, TInt aMaxAdditional, TInt aMaxEmail, TInt aMaxAdditionalTelNumLen, TInt aMaxAdditionalTextLen); + CSimPhBkUSimStore(CSimPhone* aPhone); + ~CSimPhBkUSimStore(); + + static void ClosePhone(TAny* aObj); + virtual CTelObject::TReqMode ReqModeL(const TInt aIpc); +// MTelObjectTSY pure virtual + virtual TInt RegisterNotification(const TInt aIpc); + virtual TInt DeregisterNotification(const TInt aIpc); + virtual void Init(); + virtual CTelObject* OpenNewObjectByNameL(const TDesC& aName); + virtual CTelObject* OpenNewObjectL(TDes& aNewName); + virtual TInt NumberOfSlotsL(const TInt aIpc); + virtual TInt CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle); + +// MSubSessionExtBaseTSY pure virtual + virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage); + +// Other public functions. + void PopulateStoreFromConfigFileL(); + void PopulatePhBkStoreInfo(RMobilePhoneStore::TMobilePhoneStoreInfoV1* aStoreInfo); + +//coverity[bad_override] + TPtrC8 Name(); + TPtrC8 PhBkStore(); + TPtrC8 AID(); + TInt UsedEntries(); + TInt MaxSlots(); + TInt CheckAndSwitchUSimApps(); + +protected: + void ConstructL(const TDesC8& aStore, const TDesC8& aName, TInt aMaxNumSlots, TInt aMaxNumLen, TInt aMaxTextLen, TInt aAdditional, TInt aMaxEmail, TInt aMaxAdditionalTelNumLen, TInt aMaxAdditionalTextLen); + +private: + TInt GetInfo(TTsyReqHandle aReqHandle, TDes8* aPckg); + TInt Read(TTsyReqHandle aReqHandle, TDes8* aPckg1, TDes8* aPckg2); + TInt Write(TTsyReqHandle aReqHandle,TDes8* aPckg1, TDes8* aPckg2); + TInt Delete(TTsyReqHandle aReqHandle,TDes8* aPckg); + TInt DeleteAll(TTsyReqHandle aReqHandle); + TInt NotifyStoreEvent(TTsyReqHandle aReqHandle,TDes8* aPckg1,TDes8* aPckg2); + void NotifyStoreEventCancel(); + + enum TStoreEvent // < Store event identifier. + { + EStoreEventNoEvent, + EStoreEventAdded, + EStoreEventDeleted, + EStoreEventChanged + }; + + void StoreEvent(TStoreEvent aEvent,TInt aIndex); + void DelayCompletion(TInt aDelayDuration,TTsyReqHandle aReqHandle); + void DelayCompletion(TInt aDelayDuration,TTsyReqHandle aReqHandle,TStoreEvent aEvent,TInt aIndex); + void TimerCallBack(TInt aId); + TBool FindIpcErrorMatch(TInt& aError); + const CTestConfigSection* CfgFile(); + + TInt GetPhBkAdditionalEntry(TPtrC8& aEntry, TInt& aItemIndex, + TPtrC8& aTelNum, TPtrC8& aAlphaTag, TUint8& aNpiTon); + + TInt GetPhBkUSimEntry(const CTestConfigItem* aItem, TInt& aItemIndex, + TPtrC8& aPhonebookStore, TPtrC8& aPhonebookName, + TPtrC8& aAid,TInt& aIndex, TPtrC8& aTelNum, + TPtrC8& aAlphaTag, TUint8& aNpiTon, + TPtrC8& aAlphaTag2); + void PopulateOOBWrite(); + void PopulateOOBDelete(); + +private: + CPhoneBase* iDummyPhoneBaseRef; + + CSimPhone* iPhone; // < A pointer to the "owner" phone class. + CSimTimer* iReqTimer; // < The timer used to delay request completions. + CSimTimer* iOOBWriteTimer; // < The timer used to time an OOB store event. + CSimTimer* iOOBDeleteTimer; // < The timer used to time an OOB delete event. + + TInt iPhBkMaxNumSlots; // < The maximum number of slots in this Phonebook store. + TInt iPhBkMaxTelNumLen; // < The maximum size of a telephone number that can be stored in this Phonebook. + TInt iPhBkMaxTextLen; // < The maximum size of an alpha tag that can be stored in this Phonebook. + TInt iPhBkAdditional; // < The maximum number of additional numbers that can be stored in this Phonebook per entry. + TInt iPhBkMaxEmail; // < The maximum number of emails that can be stored in this Phonebook per entry. + + TInt iPhBkMaxAdditionalTelNumLen; // < The maximum size of an additional telephone number that can be stored in this Phonebook. + TInt iPhBkMaxAdditionalTextLen; // < The maximum size of an additional alpha tag that can be stored in this Phonebook. + + struct TPhBkStoreEntry + { + TBuf iAlphaTag; // < The phonebook entry's alpha tag. + TUint8 iTonNpi; // < The phonebook entry's Type of Number and Number Plan Identifier. + TBuf iTelNum; // < The phonebook entry's telephone number. + }; + + typedef TBuf TPhBkUSimEmail; + typedef TBuf TPhBkUSimGroup; + + class TPhBkUSimStoreEntry + { + public: + TBuf iAlphaTag; // < The phonebook entry's alpha tag. + TUint8 iTonNpi; // < The phonebook entry's Type of Number and Number Plan Identifier. + TBuf iTelNum; // < The phonebook entry's telephone number. + TBuf iAlphaTag2; // < The phonebook entry's name2 alpha tag. + CArrayFixFlat* iAdditional; //< The phonebook entry's additional numbers + CArrayFixFlat* iEmails; //< The phonebook entry's list of email addresses + CArrayFixFlat* iGroups; //< The phonebook entry's list groups definition + TBool iHiddenEntry; + }; + + TPhBkUSimStoreEntry* iPhBkUSimStoreEntries; // < Gsm Phonebook only + TPhBkUSimStoreEntry* iPhBkUSim1StoreEntries; // < USim PhoneBook1 + TPhBkUSimStoreEntry* iPhBkUSim2StoreEntries; // < USim PhoneBook2 + + struct TPhBkError + { + TInt iCount; // < The IPC count of the request that is to be errored. + TInt iError; // < The error number that must be used with that request. + }; + CArrayFixFlat* iPhBkError; // < Array of indicating where to simulate phonebook request errors. + TInt iIpcCnt; // < The current count of IPC client requests. + + TBuf8 iPhBkStore; // < The Phonebook Store. + TBuf8 iPhBkStoreName; // < The name of the Phonebook Store. + TInt iPhBkUSimCounter; + RMobilePhone::TAID iPhBkAid; + RMobilePhone::TAID iPhBkAidUSim1; + RMobilePhone::TAID iPhBkAidUSim2; + + TUint iPhBkStoreCaps; // < The phone level caps of the PhBk Store + + CPhoneBookBuffer* iPhBkRwBuffer; // < The Phonebook read/write "streaming" class. + + TBool iEvOutstandingReq; // < A flag indicating an outstanding Phonebook Store notification request. + TTsyReqHandle iEvReqHandle; // < The TSY request handle associated with an outstanding Phonebook Store notification request. + TUint32* iEvEvent; // < The event flags associated with an outstanding Phonebook Store notification request. + TInt* iEvIndex; // < The index value associated with an outstanding Phonebook Store notification request. + + TInt iPhBkIndividualPause; // < The pause value used to delay the completion of an individual Phonebook Store manipulation request. + TInt iPhBkBatchPause; // < The pause value used to delay the completion of a batch Phonebook Store manipulation request. + + TTsyReqHandle iPendingReqCompletion; // < The TSY request handle for the request that is awaiting a timer event before completion. + TStoreEvent iPendingEvent; // < The type of store event related to the request that is awaiting a timer event before completion. + TInt iPendingIndex; // < The index related to the request that is awaiting a timer event before completion. + + TInt iPhBkOOBWriteDuration; // < The pause before the "out of band" write will be executed. + TInt iPhBkOOBWriteIndex; // < The index number associated with the "out of band" write. + TPhBkUSimStoreEntry iPhBkOOBWrite; // < The phonebook entry to be written in the "out of band" write. + + TInt iPhBkOOBDeleteDuration; // < The pause before the "out of band" delete. + TInt iPhBkOOBDeleteIndex; // < The inex number associated with the "out of band" delete. + + struct TTriggerEventIPC + { + TInt iIPC; + TInt iIPCCnt; + RMobilePhone::TMobilePhoneSecurityEvent iEvent; + }; + TTriggerEventIPC iTriggerEventIPC; // < If .iIPC is called .iIpcCnt times, .iEvent is triggered + TInt iTriggerCnt; // < the counter used to count the number of times iTriggerEventIPC.iIpc has been called + + }; + +#endif