cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetsignalstrength.cpp
author hgs
Tue, 22 Jun 2010 11:02:32 +0100
changeset 44 8b72faa1200f
permissions -rw-r--r--
201024_02
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
// CATGetSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
#include "atgetsignalstrength.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    19
#include "mslogger.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    20
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    21
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
_LIT8(KGetSignalQualityCommand,"AT+CSQ\r");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
_LIT8(KGetSingalCommandRepStr,"+CSQ:");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
// Class CATGetSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
// CATGetSignal::NewL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
CATGetSignal* CATGetSignal::NewL(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
	                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
	CATGetSignal* self = new(ELeave) CATGetSignal(aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
			                                      aCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
	CleanupStack::PushL(self );
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
	self->ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
	CleanupStack::Pop(self );
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
	return self ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
// CATGetSignal::CATGetSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
CATGetSignal::CATGetSignal(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
	                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
// CATGetSignal::ConstructL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
void CATGetSignal::ConstructL()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
	CAtCommandBase::ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
	iAtType = ELtsyAT_Phone_GetSignal;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
// CATGetSignal::~CATGetSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
CATGetSignal::~CATGetSignal()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
// CATGetSignal::StartRequestL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
void CATGetSignal::StartRequest()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
	ExecuteCommand();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
// CATGetSignal::ExecuteCommand
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
void CATGetSignal::ExecuteCommand( )
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
	iTxBuffer.Copy(KGetSignalQualityCommand);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
	Write();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
// CATGetSignal::getSignalInfo
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
TTsySignalInfo CATGetSignal::getSignalInfo()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
	return iSignalInfo;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
// CATGetSignal::GetErrorValue
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
TInt CATGetSignal::GetErrorValue()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
	return iError;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    97
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    98
// CATGetSignal::ParseResponseL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    99
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   101
void CATGetSignal::ParseResponseL(const TDesC8& /*aResponseBuf*/)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   102
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   103
	if (CurrentLine().Match(KLtsyOkString) != 0)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   104
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   105
		iError = KErrGeneral;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   106
		return ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   107
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   108
	RArray<TPtrC8> array;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   109
	CleanupClosePushL(array);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   110
	iParser->ParseRespondedBuffer(array,PrecedingLine());
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   111
	TInt Count = array.Count();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   112
	if (Count <= 1)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   113
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   114
		CleanupStack::PopAndDestroy();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   115
		iError = KErrGeneral;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   116
		return ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   117
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   118
	if( array[0].MatchF(KGetSingalCommandRepStr)==KErrNotFound)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   119
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   120
		CleanupStack::PopAndDestroy();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   121
		iError = KErrGeneral;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   122
		return ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   123
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   124
	TInt val = 0;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   125
	TLex8 lex(array[1]);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   126
	lex.Val(val);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   127
	if (val < 0) 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   128
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   129
		iSignalInfo.iSignalStrength = 0;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   130
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   131
	else	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   132
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   133
		iSignalInfo.iSignalStrength = val;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   134
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   135
	TLex8 lex1(array[2]);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   136
	lex1.Val(val);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   137
	if (val < 0) 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   138
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   139
		iSignalInfo.iBar = 0;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   140
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   141
	else	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   142
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   143
		iSignalInfo.iBar = val;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   144
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   145
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   146
	CleanupStack::PopAndDestroy();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   147
	iError = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   148
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   149
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   150
// CATGetSignal::EventSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   151
// other items were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   152
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   153
void CATGetSignal::EventSignal(TAtEventSource aEventSource, TInt aStatus)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   154
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   155
	if(KErrNone ==aStatus)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   156
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   157
		if(aEventSource == EReadCompletion)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   158
			{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   159
			aStatus = iError;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   160
			}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   161
		else
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   162
			return;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   163
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   164
	CAtCommandBase::Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   165
	iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   166
	iCtsyDispatcherCallback.CallbackPhoneGetSignalStrengthComp(aStatus,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   167
							                                   iSignalInfo.iSignalStrength,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   168
							                                   iSignalInfo.iBar);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   169
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   170
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   171
// End of file
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   172