cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetphonecellinfo.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
// CATGetPhoneCellInfo
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
#include "atgetphonecellinfo.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
_LIT8(KGetPhoneCellInfoCommand,"AT+CCED=0,5\r");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
_LIT8(KGetPhoneCellInfoCmdRepondStr,"+CCED:");
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
// Class CATGetPhoneCellInfo
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
// CATGetPhoneCellInfo::NewL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
CATGetPhoneCellInfo* CATGetPhoneCellInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
	                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
	CATGetPhoneCellInfo* self = new(ELeave) CATGetPhoneCellInfo(aGloblePhone,
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
			                                                    aCtsyDispatcherCallback);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
	CleanupStack::PushL(self );
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
	self->ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
	CleanupStack::Pop(self );
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
	return self ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
// CATGetPhoneCellInfo::CATGetPhoneCellInfo
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
CATGetPhoneCellInfo::CATGetPhoneCellInfo(CGlobalPhonemanager& aGloblePhone, 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
// CATGetPhoneCellInfo::ConstructL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
void CATGetPhoneCellInfo::ConstructL()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
	CAtCommandBase::ConstructL();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
// CATGetPhoneCellInfo::~CATGetPhoneCellInfo
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
CATGetPhoneCellInfo::~CATGetPhoneCellInfo()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
// CATGetPhoneCellInfo::StartRequestL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
void CATGetPhoneCellInfo::StartRequest()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
	ExecuteCommand();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
// CATGetPhoneCellInfo::ExecuteCommand
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
void CATGetPhoneCellInfo::ExecuteCommand()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
	iTxBuffer.Copy(KGetPhoneCellInfoCommand);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
	Write();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
// CATGetPhoneCellInfo::ParseResponseL
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
void CATGetPhoneCellInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
	if (CurrentLine().Match(KLtsyOkString) != 0)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
		iError = KErrGeneral;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
		return ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
	RArray<TPtrC8> array;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
	CleanupClosePushL(array);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
	iParser->ParseRespondedBuffer(array,PrecedingLine());
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
	TInt Count = array.Count();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
	if (Count < 1)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    97
		CleanupStack::PopAndDestroy();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    98
		iError = KErrNotFound;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    99
		return;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   100
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   101
	if( array[0].MatchF(KGetPhoneCellInfoCmdRepondStr)==KErrNotFound)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   102
		{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   103
		CleanupStack::PopAndDestroy();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   104
		iError = KErrNotFound;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   105
		return ;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   106
		}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   107
	iCellInfo.iMode = RMobilePhone::ECellModeGsm;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   108
	TInt val = 0;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   109
	TLex8 lex(array[4]);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   110
	lex.Val(val);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   111
	iCellInfo.iCellId = val;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   112
	TLex8 lex1(array[14]);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   113
	lex1.Val(val);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   114
	iCellInfo.iTimingAdvance = val;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   115
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   116
	
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   117
	CleanupStack::PopAndDestroy(&array);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   118
	iError = KErrNone;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   119
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   120
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   121
// CATGetPhoneCellInfo::EventSignal
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   122
// other CATGetPhoneCellInfo were commented in a header
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------------------------
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   124
void CATGetPhoneCellInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   125
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   126
	// handle IO error
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   127
	if(aStatus != KErrNone)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   128
	    {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   129
	    iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   130
        iCtsyDispatcherCallback.CallbackPhoneGetPhoneCellInfoComp(aStatus,iCellInfo);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   131
        CAtCommandBase::Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   132
        if(iIpcCompleteObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   133
            {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   134
            iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   135
            }
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   136
	    }
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   137
	else if(aEventSource == EReadCompletion)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   138
	    {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   139
        iPhoneGlobals.iEventSignalActive = EFalse;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   140
        iCtsyDispatcherCallback.CallbackPhoneGetPhoneCellInfoComp(iError,iCellInfo);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   141
        CAtCommandBase::Complete();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   142
        if(iIpcCompleteObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   143
            {
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   144
            iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   145
            }
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   146
	    }
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   147
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   148
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
   149
// End of file