lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridueassistednpudposstatus.cpp
author hgs
Tue, 13 Jul 2010 12:25:28 +0100
changeset 48 81c9bee26a45
permissions -rw-r--r--
201025_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     2
// All rights reserved.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     7
//
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
81c9bee26a45 201025_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    10
//
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    11
// Contributors:
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    12
//
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    13
// Description:
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    14
// This is the class implementation for the MO-LR - Accurate GPS Result scenario Tests
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    15
// 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    16
//
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    17
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    18
// LBS includes. 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    19
#include <lbs/test/lbsnetprotocolproxy.h>
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    20
#include <lbs/lbsnetprotocolbase.h>
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    21
#include <lbs/lbsassistancedatabuilderset.h>
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    22
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    23
// LBS test includes.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    24
#include "ctlbshybridueassistednpudposstatus.h"
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    25
#include <lbs/test/tlbsutils.h>
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    26
#include "argutils.h"
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    27
#include <lbs/test/activeyield.h>
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    28
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    29
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    30
const TInt KN(2); // Number of times to send the measurement from GPS to NW
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    31
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    32
/**
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    33
Static Constructor
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    34
*/
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    35
CT_LbsHybridUEAssistedNpudPosStatus* CT_LbsHybridUEAssistedNpudPosStatus::New(CT_LbsHybridMOLRServer& aParent)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    36
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    37
	// Note that we do not use ELeave.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    38
	// This means that having insufficient memory will return NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    39
	CT_LbsHybridUEAssistedNpudPosStatus* testStep = new CT_LbsHybridUEAssistedNpudPosStatus(aParent);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    40
	if (testStep)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    41
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    42
		TInt err = KErrNone;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    43
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    44
		TRAP(err, testStep->ConstructL());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    45
		if (err)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    46
			{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    47
			delete testStep;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    48
			testStep = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    49
			}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    50
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    51
	return testStep;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    52
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    53
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    54
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    55
/**
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    56
 * Constructor
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    57
 */
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    58
CT_LbsHybridUEAssistedNpudPosStatus::CT_LbsHybridUEAssistedNpudPosStatus(CT_LbsHybridMOLRServer& aParent) : CT_LbsHybridMOLRStep(aParent)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    59
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    60
	SetTestStepName(KLbsHybridUEAssistedNpudPosStatus);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    61
	iSessionId.SetSessionOwner(KRequestUid);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    62
	iSessionId.SetSessionNum(0x0005);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    63
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    64
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    65
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    66
void CT_LbsHybridUEAssistedNpudPosStatus::ConstructL()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    67
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    68
	// Create the base class objects.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    69
	CT_LbsHybridMOLRStep::ConstructL();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    70
	iLbsPositioningStatus = CLbsPositioningStatus::NewL(*this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    71
	iPosStatusCount = 0;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    72
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    73
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    74
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    75
/**
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    76
 * Destructor
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    77
 */
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    78
CT_LbsHybridUEAssistedNpudPosStatus::~CT_LbsHybridUEAssistedNpudPosStatus()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    79
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    80
    delete iLbsPositioningStatus;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    81
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    82
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    83
// Hybrid - UE Assisted MO-LR GPS ok
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    84
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    85
TVerdict CT_LbsHybridUEAssistedNpudPosStatus::doTestStepL()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    86
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    87
	INFO_PRINTF1(_L("CT_LbsHybridUEAssistedNpudPosStatus::doTestStepL()"));	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    88
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    89
    // Stop the test if the preable failed
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    90
	TESTL(TestStepResult() == EPass);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    91
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    92
	const TInt KTimeOut = 60*1000*1000;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    93
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    94
	// Create Network Protocol Proxy
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    95
	CNetProtocolProxy* proxy = CNetProtocolProxy::NewL();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    96
	CleanupStack::PushL(proxy);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    97
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    98
	// >> AdviceSystemStatus(0) - GetCurrentCapabilitiesResponse
81c9bee26a45 201025_02
hgs
parents:
diff changeset
    99
	TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgGetCurrentCapabilitiesResponse);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   100
	CLbsNetworkProtocolBase::TLbsSystemStatus status;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   101
	TInt cleanupCnt;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   102
	cleanupCnt = proxy->GetArgsLC(ENetMsgGetCurrentCapabilitiesResponse, &status);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   103
	TESTL(status == CLbsNetworkProtocolBase::ESystemStatusNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   104
	CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   105
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   106
	// Start Test Step
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   107
	RPositionServer server;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   108
	TESTL(KErrNone == server.Connect());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   109
	CleanupClosePushL(server);	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   110
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   111
	RPositioner pos;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   112
	TESTL(KErrNone == pos.Open(server));
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   113
	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   114
	CPosServerWatcher *pWatch = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   115
	TInt reason = KErrNone;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   116
			
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   117
    CleanupClosePushL(pos);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   118
    // Set the max fix time for the client request to ensure the location server does not complete the request too soon during the test.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   119
    TPositionUpdateOptions posOpts(TTimeIntervalMicroSeconds(0), TTimeIntervalMicroSeconds(KMOLRFixTime));
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   120
    pos.SetUpdateOptions(posOpts);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   121
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   122
    pWatch = CPosServerWatcher::NewLC(pos, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   123
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   124
    // Request a self-locate MoLr.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   125
    pWatch->IssueNotifyPositionUpdate();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   126
    CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   127
    //We should get Positioning Indicator flag on and may be off after that
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   128
    TESTL(iPosStatusCount==1);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   129
    TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   130
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   131
    // >> RequestSelfLocation()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   132
    TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestSelfLocation);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   133
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   134
    // Process the response.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   135
    TLbsNetSessionId* 					sessionId = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   136
    TLbsNetPosRequestOptionsAssistance*	opts = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   137
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   138
    cleanupCnt = proxy->GetArgsLC(ENetMsgRequestSelfLocation, &sessionId, &opts);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   139
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   140
    TBool qualitycheck = 	ArgUtils::CompareQuality(	opts, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   141
                                                        ETrue, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   142
                                                        KMinHorizontalAcc, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   143
                                                        KMinVerticalAcc, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   144
                                                        KMOLRFixTime,
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   145
                                                        0, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   146
                                                        EAssistanceDataReferenceTime, 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   147
                                                        (TPositionModuleInfo::ETechnologyTerminal 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   148
                                                        | TPositionModuleInfo::ETechnologyAssisted)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   149
                                                    );
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   150
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   151
    TESTL(qualitycheck);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   152
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   153
    iSessionId.SetSessionNum(sessionId->SessionNum());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   154
    iSessionId.SetSessionOwner(sessionId->SessionOwner());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   155
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   156
    CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   157
    sessionId = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   158
    opts = NULL;	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   159
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   160
    // << ProcessStatusUpdate(EServiceSelfLocation)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   161
    MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask activeServiceMask = MLbsNetworkProtocolObserver::EServiceSelfLocation;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   162
    proxy->CallL(ENetMsgProcessStatusUpdate, &activeServiceMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   163
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   164
    // << ProcessLocationUpdate(SessionId, RefPosition)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   165
    TPositionInfo refPosInfo = ArgUtils::MolrReferencePositionInfo();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   166
    proxy->CallL(ENetMsgProcessLocationUpdate, &iSessionId, &refPosInfo);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   167
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   168
    // TEST: Get the ref pos app side.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   169
    CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   170
    //Check for Position Status update - This event could be after reference position
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   171
    //NOTE: Ref position and positioning indicator callback can be in any order
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   172
    CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   173
    TESTL(iPosStatusCount==2);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   174
    TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   175
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   176
    // << ProcessAssistanceData()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   177
    TLbsAsistanceDataGroup dataMask = EAssistanceDataReferenceTime;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   178
    RLbsAssistanceDataBuilderSet assistanceData;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   179
    ArgUtils::PopulateLC(assistanceData);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   180
    reason = KErrNone;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   181
    proxy->CallL(ENetMsgProcessAssistanceData, &dataMask, &assistanceData, &reason);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   182
    CleanupStack::PopAndDestroy(); // assistanceData
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   183
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   184
    // << ProcessLocationRequest(SessionId, HybridMode, alpha2)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   185
    TBool emergency = EFalse;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   186
    MLbsNetworkProtocolObserver::TLbsNetProtocolService service = MLbsNetworkProtocolObserver::EServiceSelfLocation;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   187
    TLbsNetPosRequestQuality quality = ArgUtils::Quality(); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   188
    quality.SetMaxFixTime(ArgUtils::Alpha2());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   189
    TLbsNetPosRequestMethod method   = ArgUtils::RequestHybridMethod();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   190
    proxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   191
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   192
    // Now that the hybrid/alpha2 has been requested, record current time to verify alpha2 timer expires correctly.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   193
    TTime startTime;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   194
    startTime.HomeTime();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   195
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   196
    // >> RequestAssistanceData(0)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   197
    TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   198
    cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   199
    TESTL(dataMask == EAssistanceDataNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   200
    CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   201
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   202
    // << NotifyPositionUpdate()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   203
    pWatch->IssueNotifyPositionUpdate();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   204
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   205
    CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   206
    //We should get Positioning Indicator flag on
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   207
    TESTL(iPosStatusCount==3);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   208
    TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   209
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   210
    // >> RequestAssistanceData(0)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   211
    TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   212
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   213
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   214
    cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   215
    TESTL(dataMask == EAssistanceDataNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   216
    CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   217
    // Determine the value to take off the alpha2 value. This is required because we had to wait for the assistance data response.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   218
    TTimeIntervalMicroSeconds microseconds;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   219
    TTime stopTime;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   220
    stopTime.HomeTime();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   221
    microseconds = stopTime.MicroSecondsFrom(startTime); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   222
    TInt64 timeElapsed = microseconds.Int64();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   223
    TInt delta = 2 * 1000 * 1000; // 2 secs.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   224
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   225
    // >> RespondLocationRequest()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   226
    TESTL(proxy->WaitForResponse(ArgUtils::Alpha2() - timeElapsed - delta) == ENetMsgTimeoutExpired);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   227
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   228
    // Wait for and process the response.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   229
    TESTL(proxy->WaitForResponse(2 * delta) == ENetMsgRespondLocationRequest);		// DONT get because the measurement data bus has not been created...
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   230
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   231
    sessionId = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   232
    TPositionGpsMeasurementInfo* measurementInfo = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   233
    cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &measurementInfo);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   234
    TESTL(sessionId->SessionNum() == iSessionId.SessionNum());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   235
    TESTL(reason == KErrNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   236
    CleanupStack::PopAndDestroy(cleanupCnt);//sessionId, measurementInfo
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   237
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   238
    // Recv -> RequestAssistanceData - we get an extra msg as the result of the A-GPS manager re-issueing a location request when it's
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   239
    //									max fix time timer expries.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   240
    TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   241
    cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   242
    TESTL(dataMask == EAssistanceDataNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   243
    CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   244
    const TInt t = 8 * 1000 * 1000; // 8 secs.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   245
    quality.SetMaxFixTime(t);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   246
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   247
    TPositionExtendedSatelliteInfo* positionInfo = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   248
    //TPositionInfo* positionInfo = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   249
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   250
    for (TInt i = 0; i < KN; i++)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   251
        {
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   252
        // << ProcessLocationRequest(SessionId, HybridMode, t)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   253
        proxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   254
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   255
        // >> RequestAssistanceData(0)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   256
        TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   257
        cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   258
        TESTL(dataMask == EAssistanceDataNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   259
        CleanupStack::PopAndDestroy(cleanupCnt);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   260
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   261
        // >> RespondLocationRequest() - first measurement, second position.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   262
        TESTL(proxy->WaitForResponse(t + delta) == ENetMsgRespondLocationRequest);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   263
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   264
        sessionId = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   265
        
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   266
        // Expect measurement first time.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   267
        if (i < (KN-1))
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   268
            {
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   269
            measurementInfo = NULL;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   270
            cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &measurementInfo);			
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   271
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   272
            // Check it is measurement
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   273
            TESTL(measurementInfo->PositionClassType() == EPositionGpsMeasurementInfoClass);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   274
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   275
            // >> RequestAssistanceData - we get an extra msg as the result of the A-GPS manager re-issueing a location request when it's
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   276
            //									max fix time timer expries.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   277
            TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   278
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   279
            cleanupCnt += proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   280
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   281
            TESTL(dataMask == EAssistanceDataNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   282
            TESTL(sessionId->SessionNum() == iSessionId.SessionNum());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   283
            TESTL(reason == KErrNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   284
            }
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   285
        
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   286
        // Expect position second time.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   287
        else
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   288
            {
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   289
            cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &positionInfo);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   290
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   291
            // check it is a position
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   292
            TESTL(positionInfo->PositionClassType() == (EPositionInfoClass|EPositionCourseInfoClass|EPositionSatelliteInfoClass|EPositionExtendedSatelliteInfoClass));
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   293
            TESTL(sessionId->SessionNum() == iSessionId.SessionNum());
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   294
            TESTL(reason == KErrNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   295
            /* Check whether ExtendedSatelliteInfo data received by protocol module is the same as data fed to the GPS module or not. 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   296
            Latitude(50.2454),Longitude(0.1668),Altitude(1.0),HorizontalAccuracy(10),VerticalAccuracy(10), speed(26.0),vertical speed(20.0),heading(25.0),course(30.0), 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   297
            SPEED_ACCURACY(2.0),VERTICAL_SPEED_ACCURACY(3.0),HEADING_ACCURACY(10.0),COURSE_ACCURACY(4.0),
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   298
            SD_OF_LONG_ERROR(5.0),SD_OF_LAT_ERROR(6.0),SD_OF_ALT_ERROR(7.0),SD_OF_SEMI_MAJOR_AXIS_ERROR(8.0),
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   299
            SD_OF_SEMI_MINOR_AXIS_ERROR(9.0),ORIEN_OF_SEMI_MAJOR_AXIS_ERROR(10.0),RMS_VAL_OF_SD_OF_RANGE(11.0),
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   300
            GEOIDAL_SEPARATION(12.0),MAGNETIC_VARIATION(13.0),COURSE_OVER_GROUND_MAGNETIC(14.0)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   301
            GPS_TIMING_OF_CELL_MsPart(16383),GPS_TIMING_OF_CELL_LsPart(4294967295),REFERENCE_IDENTITY(511)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   302
            SFN(4095)*/  
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   303
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   304
            TPosition gpsPos;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   305
            positionInfo->GetPosition(gpsPos);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   306
            TESTL(gpsPos.Latitude()==50.2454 && gpsPos.Longitude()== 0.1668 && gpsPos.Altitude()==1.0 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   307
                  && gpsPos.HorizontalAccuracy()==10 && gpsPos.VerticalAccuracy()==10);             
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   308
            TCourse course;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   309
            positionInfo->GetCourse(course);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   310
                 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   311
            TESTL(course.Speed()==26.0 && course.VerticalSpeed()==20.0 && course.Heading()==25.0 && course.Course()==30.0 && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   312
                  course.SpeedAccuracy()==2.0 && course.VerticalSpeedAccuracy()==3.0 && course.HeadingAccuracy()==10.0 &&
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   313
                  course.CourseAccuracy()==4.0);           
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   314
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   315
            TDetailedErrorReport detErrRep;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   316
            positionInfo->GetDetailedErrorReport(detErrRep);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   317
            TESTL(detErrRep.StanDeviOfLongitudeError()==5.0 && detErrRep.StanDeviOfLatiitudeError()==6.0 && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   318
                  detErrRep.StanDeviOfAltitudeError()==7.0 && detErrRep.StanDeviOfSemiMajorAxisError()==8.0 && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   319
                  detErrRep.StanDeviOfSemiMinorAxisError()==9.0 && detErrRep.OrientationOfSemiMajorAxisError()==10.0 && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   320
                  detErrRep.RmsValOfStanDeviOfRange()==11.0);  
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   321
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   322
            TGpsTimingMeasurementData gpsTimingData;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   323
            positionInfo->GetGpsTimingData(gpsTimingData);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   324
             
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   325
            TESTL(gpsTimingData.DataType()== TGpsTimingMeasurementData::EGpsTimingDataTypeUtran && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   326
                  gpsTimingData.NetworkMode()== TGpsTimingMeasurementData::ENetworkModeFdd &&
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   327
                  gpsTimingData.GPSTimingOfCellMsPart()==16383 && gpsTimingData.GPSTimingOfCellLsPart()==4294967295LL && 				  
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   328
                  gpsTimingData.ReferenceIdentity()==511 && gpsTimingData.Sfn()==4095);  
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   329
                           
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   330
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   331
            TESTL(positionInfo->GeoidalSeparation()==12.0 && positionInfo->MagneticVariation()==13.0 && 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   332
                    positionInfo->CourseOverGroundMagnetic()==14.0);  
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   333
                            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   334
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   335
            // Client recv - the gps position determined by the gps module.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   336
            CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   337
            // Check Positioning Status Indicator callback - 
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   338
            //NOTE: GPS position and positioning indicator callback can be in any order
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   339
            CheckForObserverEventTestsL(KTimeOut, *this);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   340
            //We should get Positioning Indicator flag off
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   341
            TESTL(iPosStatusCount==4);    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   342
            TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   343
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   344
            TESTL(iState == EGpsLocReceived);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   345
            
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   346
            // << ProcessLocationUpdate(SessionId, FinalNetworkPosition)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   347
            // Return modules' position as FinalNetworkPosition
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   348
            proxy->CallL(ENetMsgProcessLocationUpdate, &iSessionId, positionInfo);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   349
            }
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   350
        CleanupStack::PopAndDestroy(cleanupCnt);// sessionId, measurementInfo/positionInfo
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   351
        }
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   352
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   353
    // << ProcessSessionComplete(SessionId, KErrNone)	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   354
    reason = KErrNone;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   355
    proxy->CallL(ENetMsgProcessSessionComplete, &iSessionId, &reason);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   356
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   357
    // << ENetMsgProcessStatusUpdate()
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   358
    MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask serviceMask = MLbsNetworkProtocolObserver::EServiceNone;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   359
    proxy->CallL(ENetMsgProcessStatusUpdate, &serviceMask);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   360
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   361
    // Wait for 10 seconds to ensure no additional responses turn up.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   362
    delta = 10 * 1000 * 1000;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   363
    TNetProtocolResponseType mType = proxy->WaitForResponse(delta);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   364
    TESTL(mType == ENetMsgTimeoutExpired);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   365
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   366
    // Done. Now cleanup...
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   367
    CleanupStack::PopAndDestroy(pWatch);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   368
    CleanupStack::PopAndDestroy(); // pos
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   369
    CleanupStack::PopAndDestroy(); // server	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   370
    CleanupStack::PopAndDestroy(proxy);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   371
    
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   372
    return TestStepResult();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   373
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   374
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   375
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   376
// MPosServerObserver
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   377
void CT_LbsHybridUEAssistedNpudPosStatus::OnGetLastKnownPosition(TInt32 /*aErr*/, const TPositionInfoBase& /*aPosInfo*/)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   378
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   379
	TEST(EFalse); // Shouldn't see this...
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   380
	ReturnToTestStep();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   381
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   382
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   383
void CT_LbsHybridUEAssistedNpudPosStatus::OnNotifyPositionUpdate(TInt32 aErr, const TPositionInfoBase& aPosInfo)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   384
	{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   385
	// Verify error.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   386
	if (aErr == KErrCancel)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   387
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   388
		iState = ERefLocReceived;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   389
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   390
	else
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   391
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   392
	TEST(aErr == KErrNone);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   393
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   394
	// Verify position.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   395
	TEST(aPosInfo.PositionClassType() == EPositionInfoClass);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   396
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   397
	// Expecting ref pos.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   398
	if (iState == EInitializing)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   399
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   400
		iState = ERefLocReceived;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   401
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   402
		TEST(aPosInfo.PositionMode() == TPositionModuleInfo::ETechnologyNetwork);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   403
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   404
		// check for refpos details
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   405
		const TPositionInfo posInfo = static_cast<const TPositionInfo&>(aPosInfo);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   406
		TESTL(ArgUtils::ComparePositionInfoToMolrRefPos(posInfo));
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   407
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   408
		
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   409
	// Expecting network pos.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   410
	else if (iState == ERefLocReceived)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   411
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   412
		iState = EGpsLocReceived;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   413
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   414
		TEST(aPosInfo.PositionMode() == (TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted));
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   415
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   416
	
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   417
	// Not expecting anything else.
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   418
	else
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   419
		{
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   420
		TEST(EFalse);
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   421
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   422
		}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   423
	ReturnToTestStep();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   424
	}
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   425
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   426
void CT_LbsHybridUEAssistedNpudPosStatus::OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus)
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   427
    {
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   428
    iPosStatusCount++;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   429
    iPositioningStatus = aPositioningStatus;
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   430
    ReturnToTestStep();
81c9bee26a45 201025_02
hgs
parents:
diff changeset
   431
    }