cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/notifybatteryandsignal.cpp
author hgs
Thu, 07 Oct 2010 11:24:36 +0100
changeset 76 91e0f833dd8b
parent 44 8b72faa1200f
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     2
// All rights reserved.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     7
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    10
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    11
// Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    12
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    13
// Description:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    14
// CATGetModemStatus
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    15
// Description:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    16
// CNotifyBatteryAndSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
#include "notifybatteryandsignal.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    19
#include "mslogger.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    20
#include "atgetbatteryinfo.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    21
#include "atgetsignalstrength.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
const TInt KLtsyOneSecond = 1000000;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
// Class CNotifyBatteryAndSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
// CNotifyBatteryAndSignal::NewL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
CNotifyBatteryAndSignal* CNotifyBatteryAndSignal::NewL(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
	                                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
	CNotifyBatteryAndSignal* self = new(ELeave) CNotifyBatteryAndSignal(aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
			                                                            aCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
	CleanupStack::PushL(self );
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
	self->ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
	CleanupStack::Pop();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
	return self ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
// CNotifyBatteryAndSignal::CNotifyBatteryAndSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
CNotifyBatteryAndSignal::CNotifyBatteryAndSignal(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
	                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
// CNotifyBatteryAndSignal::ConstructL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
void CNotifyBatteryAndSignal::ConstructL()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
	iATCommandName = EATNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
	iCallbackTimer = CCallbackTimer::NewL(*this);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
	iATGetBattery = CATGetBattery::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
	iATGetSignal = CATGetSignal::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
// CNotifyBatteryAndSignal::~CNotifyBatteryAndSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
CNotifyBatteryAndSignal::~CNotifyBatteryAndSignal()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
	if(iATGetBattery)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
		delete iATGetBattery;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
		iATGetBattery = NULL;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
	if(iATGetSignal)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
		delete iATGetSignal;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
		iATGetSignal = NULL;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
// CNotifyBatteryAndSignal::AtCommandExecuteComplete
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
void CNotifyBatteryAndSignal::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt /*aStatus*/)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
	if(aEventSource == EWriteCompletion)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
		return;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
	TInt ret = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
	switch(iATCommandName)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
		case EATGetBattery:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
			iATGetBattery->RemoveAtCommandObserver();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
			iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
			if(aEventSource == EReadCompletion)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
				ret = iATGetBattery->GetErrorValue();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96
				if(KErrNone == ret)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    97
					{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    98
					iBatteryInfo = iATGetBattery->GetBatteryinfo();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    99
					TRfStateInfo RfStateInfo;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   100
					RfStateInfo = iATGetBattery->GetRfStateInfo();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   101
					if(iPhoneGlobals.iPhoneStatus.iRfStateInfo!=RfStateInfo)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   102
						{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   103
						iPhoneGlobals.iPhoneStatus.iRfStateInfo = RfStateInfo;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   104
						iCtsyDispatcherCallback.CallbackPhoneNotifyRfStatusChangeInd(ret,RfStateInfo);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   105
						}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   106
					if(iPhoneGlobals.iPhoneStatus.iBatteryInfo.iChargeLevel != iBatteryInfo.iChargeLevel)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   107
						{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   108
						iPhoneGlobals.iPhoneStatus.iBatteryInfo.iChargeLevel = iBatteryInfo.iChargeLevel;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   109
						iCtsyDispatcherCallback.CallbackPhoneNotifyBatteryInfoChangeInd(ret,iBatteryInfo);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   110
						}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   111
					}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   112
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   113
			iATGetBattery->Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   114
			iATCommandName = EATGetSignal;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   115
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   116
		case EATGetSignal: 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   117
			iATGetSignal->RemoveAtCommandObserver();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   118
			iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   119
			if(aEventSource == EReadCompletion)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   120
				{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   121
				ret = iATGetSignal->GetErrorValue();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   122
				if(KErrNone == ret)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   123
					{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   124
					iSignalInfo = iATGetSignal->getSignalInfo();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   125
					if(iPhoneGlobals.iPhoneStatus.iSignalInfo.iSignalStrength != iSignalInfo.iSignalStrength)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   126
						{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   127
						iCtsyDispatcherCallback.CallbackPhoneNotifySignalStrengthChangeInd(ret,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   128
								                iSignalInfo.iSignalStrength,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   129
								                iSignalInfo.iBar);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   130
						}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   131
					}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   132
				}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   133
			iATGetSignal->Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   134
			iATCommandName = EATGetBattery;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   135
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   136
		default:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   137
			break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   138
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   139
	StartTimer(30);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   140
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   141
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   142
// CNotifyBatteryAndSignal::StartRequestL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   143
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   144
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   145
void CNotifyBatteryAndSignal::StartRequest()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   146
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   147
	StartTimer(10);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   148
	iATCommandName = EATGetBattery;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   149
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   150
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   151
// CNotifyBatteryAndSignal::TimerRun
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   152
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   153
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   154
void CNotifyBatteryAndSignal::TimerRun(TInt aError)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   155
    {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   156
	if((aError == KErrNone)&&
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   157
	   (!iPhoneGlobals.iEventSignalActive)&&
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   158
	   (iPhoneGlobals.iPhoneStatus.iMode==RPhone::EModeOnlineCommand))
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   159
	    {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   160
		switch(iATCommandName)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   161
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   162
			case EATGetBattery:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   163
				iPhoneGlobals.iEventSignalActive = ETrue;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   164
				iATGetBattery->SetAtCommandObserver(this);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   165
				iATGetBattery->ExecuteCommand();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   166
				break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   167
			case EATGetSignal:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   168
				iPhoneGlobals.iEventSignalActive = ETrue;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   169
				iATGetSignal->SetAtCommandObserver(this);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   170
				iATGetSignal->ExecuteCommand();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   171
				break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   172
			default:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   173
				break;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   174
			}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   175
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   176
	else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   177
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   178
		StartTimer(30);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   179
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   180
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   181
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   182
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   183
 * 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   184
 * 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   185
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   186
void CNotifyBatteryAndSignal::StartTimer(TInt aSeconds)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   187
    {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   188
	iCallbackTimer->After(aSeconds*KLtsyOneSecond);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   189
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   190
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   191
// End of file