// 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:
// Contains definition for classes that implement the indicator flags functionality
//
//
/**
@file
@internalAll
*/
#ifndef __CSIMINDICATOR_H__
#define __CSIMINDICATOR_H__
#include <et_phone.h>
#include "csimtimer.h"
#include <etelmm.h>
#include "CSimBatteryCharger.h"
#include "CSimNetworkStatus.h"
class CSimPhone;
class CTestConfigSection;
/**
* Implements the RMobilePhone based functions that constitute the Indicator
* functionality provided by the SIM TSY.
*/
class CSimIndicator : public CBase, MTimerCallBack
{
public:
static CSimIndicator* NewL(CSimPhone* aPhone);
CSimIndicator(CSimPhone* aPhone);
~CSimIndicator();
TInt GetIndicatorCaps(TTsyReqHandle aReqHandle,TDes8* aPckg1, TDes8* aPckg2);
TInt GetIndicator(TTsyReqHandle aReqHandle, TDes8* aPckg1);
TInt NotifyIndicatorChange(TTsyReqHandle aReqHandle, TDes8* aPckg1);
void NotifyIndicatorChangeCancel();
const CTestConfigSection* CfgFile();
void CheckNotification();
private:
void ConstructL();
TUint32 IndicatorState();
void TimerCallBack(TInt aId);
private:
CSimPhone* iPhone; // < Pointer to the parent phone class.
CSimTimer* iTimer; // < Pointer to the owned timer class.
CSimBatteryCharger* iCharger; // < Pointer to the owned battery Charger
CSimNetworkStatus* iNetwork; //< pointer to the network status object
TInt iIndicatorCheckPeriod;
struct TPhoneIndicatorsInfo
{
TInt iNotificationNumber; //< notification number (Nth notification)
TInt iError; //< Error to return to client on this nth notification
};
CArrayFixFlat<TPhoneIndicatorsInfo>* iIndicatorsInfo; // <Array containing the indicators changes for this test
TUint32 iCurrentIndicator; // <Current value of the indicator
TInt iNotificationNumber;
TBool iIndicatorsChangeNotificationPending; // <Indicators notification request outstanding
TTsyReqHandle iIndicatorsChangeNotificationReqHandle; // <Indicators notification outstanding request handle
TUint32* iIndicatorsChangeNofificationValue; // <Indicators value pointer
};
#endif