# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1283261886 -10800 # Node ID 0c2046328c852db98cb3ede4dd6ed892340a4dbf # Parent 29dbbeac905db203766b24505e6a8025147debf6 Revision: 201027 Kit: 201035 diff -r 29dbbeac905d -r 0c2046328c85 datasourceadaptation/gpsdatasourceadaptation/common/test/lbsgenericpsytest/group/te_lbsgenericpsytest.mmp --- a/datasourceadaptation/gpsdatasourceadaptation/common/test/lbsgenericpsytest/group/te_lbsgenericpsytest.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourceadaptation/gpsdatasourceadaptation/common/test/lbsgenericpsytest/group/te_lbsgenericpsytest.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -90,4 +90,3 @@ - diff -r 29dbbeac905d -r 0c2046328c85 datasourceadaptation/gpsdatasourceadaptation/traces/osttracedefinitions.h --- a/datasourceadaptation/gpsdatasourceadaptation/traces/osttracedefinitions.h Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourceadaptation/gpsdatasourceadaptation/traces/osttracedefinitions.h Tue Aug 31 16:38:06 2010 +0300 @@ -18,5 +18,5 @@ #ifndef __OSTTRACEDEFINITIONS_H__ #define __OSTTRACEDEFINITIONS_H__ -#include +#include #endif diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/group/BLD.INF --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -13,7 +13,7 @@ // Description: // -#include "../btgpsconfigapi/group/BLD.INF" +#include "../btgpsconfigapi/group/bld.inf" // Main projects, in build order PRJ_EXPORTS diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/src/lbsbtgpsconfigimpl.cpp --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/src/lbsbtgpsconfigimpl.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpsconfig/src/lbsbtgpsconfigimpl.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -323,7 +323,7 @@ devInfo->SetKey(devRecord.Key()); devInfo->SetAddress(devRecord.SocketAddress().BTAddr()); devInfo->SetType(devRecord.Type()); - aList.AppendL(devInfo); + aList.Append(devInfo); CleanupStack::Pop(devInfo); } @@ -420,7 +420,7 @@ User::LeaveIfError(ReadDeviceRecord(index, *devRecord)); // Add to the passes list - aRecordList.AppendL(devRecord); + aRecordList.Append(devRecord); CleanupStack::Pop(devRecord); } diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/101FE99A.rss --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/101FE99A.rss Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/101FE99A.rss Tue Aug 31 16:38:06 2010 +0300 @@ -22,7 +22,7 @@ // INCLUDES #include #include "btgpspsy.hrh" -#include "Nla_btgpspsy.loc" +#include "nla_btgpspsy.loc" // RESOURCE DEFINITIONS RESOURCE REGISTRY_INFO r_btpsy_reginfo diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsy_name.rss --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsy_name.rss Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsy_name.rss Tue Aug 31 16:38:06 2010 +0300 @@ -21,7 +21,7 @@ // INCLUDES #include -#include +#include // RESOURCE DEFINITIONS diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsyconstants.rss --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsyconstants.rss Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/data/nlabtgpspsyconstants.rss Tue Aug 31 16:38:06 2010 +0300 @@ -22,7 +22,7 @@ // INCLUDES #include #include -#include "Nla_btgpspsy.loc" +#include "nla_btgpspsy.loc" // RESOURCE SIGNATURE diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/group/bld.inf --- a/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -23,7 +23,7 @@ PRJ_EXPORTS ./101fe999.cre z:/private/10202be9/101fe999.cre -../data/Nla_btgpspsy.loc OS_LAYER_LOC_EXPORT_PATH(Nla_btgpspsy.loc) +../data/nla_btgpspsy.loc OS_LAYER_LOC_EXPORT_PATH(nla_btgpspsy.loc) ../inc/Settings/BtGpsPsyPrivateCRKeys.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/btgpspsyprivatecrkeys.h) ../inc/Settings/BtGpsPsyPrivatePSKeys.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/btgpspsyprivatepskeys.h) diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/group/bld.inf --- a/datasourcemodules/bluetoothgpspositioningmodule/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -14,7 +14,7 @@ // // Main projects, in build order -#include "../btgpsconfig/group/BLD.INF" +#include "../btgpsconfig/group/bld.inf" #include "../btgpspsy/group/bld.inf" PRJ_EXPORTS diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/bluetoothgpspositioningmodule/group/lbsbtgpspsy.iby --- a/datasourcemodules/bluetoothgpspositioningmodule/group/lbsbtgpspsy.iby Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/bluetoothgpspositioningmodule/group/lbsbtgpspsy.iby Tue Aug 31 16:38:06 2010 +0300 @@ -19,7 +19,7 @@ #if !defined(SYMBIAN_EXCLUDE_LOCATION) -#if defined(SYMBIAN_INCLUDE_BLUETOOTH_GPS_PM) +#if defined(__BLUETOOTHGPSPSY) #ifdef _DEBUG ECOM_PLUGIN_UDEB(nlabtgpspsy.dll, nlabtgpspsy.rsc) #else @@ -33,7 +33,7 @@ file=ABI_DIR\DEBUG_DIR\lbsbtgpsconfig.dll System\libs\lbsbtgpsconfig.dll #endif // SYMBIAN_LOCATION_BTGPSCONFIG -#endif // SYMBIAN_INCLUDE_BLUETOOTH_GPS_PM +#endif // __BLUETOOTHGPSPSY #endif diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/src/epos_cposexternalgpsmonitor.cpp --- a/datasourcemodules/defaultpositioningmodule/src/epos_cposexternalgpsmonitor.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/src/epos_cposexternalgpsmonitor.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -272,7 +272,7 @@ User::LeaveIfError( iExtGpsPsyArray.Append( requestor ) ); //This function won't fail, since we have enough space already - iExtGpsPsyUsedArray.AppendL( 0 ); + iExtGpsPsyUsedArray.Append( 0 ); CleanupStack::Pop( requestor ); } diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/src/epos_cpospsyfixstatemanager.cpp --- a/datasourcemodules/defaultpositioningmodule/src/epos_cpospsyfixstatemanager.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/src/epos_cpospsyfixstatemanager.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -157,7 +157,9 @@ fixAndState.iPsyState = EPsyFixStateUnknown; fixAndState.iLocationRequestCount = 0; fixAndState.iTimer = timer; - iPsyStateArray.AppendL( fixAndState ) ; + User::LeaveIfError( + iPsyStateArray.Append( fixAndState ) ); + CleanupStack::Pop( timer ); } } diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/src/epos_cpospsylisthandler.cpp --- a/datasourcemodules/defaultpositioningmodule/src/epos_cpospsylisthandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/src/epos_cpospsylisthandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -189,14 +189,14 @@ if ( !integratedGpsAdded ) { TRACESTRING2( "PSY: %x", moduleInfo.ModuleId() ) - aPsyList.AppendL( moduleInfo.ModuleId() ); + aPsyList.Append( moduleInfo.ModuleId() ); integratedGpsAdded = ETrue; } } else { TRACESTRING2( "PSY: %x", moduleInfo.ModuleId() ) - aPsyList.AppendL( moduleInfo.ModuleId() ); + aPsyList.Append( moduleInfo.ModuleId() ); } } } @@ -222,7 +222,7 @@ moduleInfo.DeviceLocation() == TPositionModuleInfo::EDeviceExternal ) { TRACESTRING2( "PSY: %x", moduleInfo.ModuleId() ) - aPsyList.AppendL( moduleInfo.ModuleId() ); + aPsyList.Append( moduleInfo.ModuleId() ); } } } diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/test/te_defproxy/scripts/te_defproxysuite.script --- a/datasourcemodules/defaultpositioningmodule/test/te_defproxy/scripts/te_defproxysuite.script Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/test/te_defproxy/scripts/te_defproxysuite.script Tue Aug 31 16:38:06 2010 +0300 @@ -267,7 +267,7 @@ //!@SYMTestPriority Medium //!@SYMTestType ut //!@SYMTestStatus Implemented -RUN_TEST_STEP 200 te_defproxysuite TwoPsysActiveStep c:\testdata\configs\te_defproxysuite.ini Section14 +RUN_TEST_STEP 400 te_defproxysuite TwoPsysActiveStep c:\testdata\configs\te_defproxysuite.ini Section14 END_TESTCASE LBS-DEFAULTPROXY-TwoPsysActiveStep-0001 @@ -447,7 +447,7 @@ //!@SYMTestPriority Medium //!@SYMTestType ut //!@SYMTestStatus Implemented -RUN_TEST_STEP 100 te_defproxysuite HGenericInfoStep c:\testdata\configs\te_defproxysuite.ini Section2 +RUN_TEST_STEP 200 te_defproxysuite HGenericInfoStep c:\testdata\configs\te_defproxysuite.ini Section2 END_TESTCASE LBS-DEFAULTPROXY-HGenericInfoStep-0001 diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/hgenericinfostep.cpp --- a/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/hgenericinfostep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/hgenericinfostep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -107,7 +107,7 @@ CHECK_TIME(5) PositionRequestWithCheck(*genInfo, KErrNone, KIntGpsPsy1); - CHECK_TIME(7) //timeshift 2s + reponse time 10s - first request(5s) + CHECK_TIME(35) //timeshift 2s + reponse time 10s - first request(5s) //3. Check satellite info ConfigPsyL(KExtGpsPsy1, 3, @@ -130,7 +130,7 @@ CHECK_TIME(5) PositionRequestWithCheck(satInfo, KErrNone, KIntGpsPsy1); - CHECK_TIME(7) //timeshift 2s + reponse time 10s - first request(5s) + CHECK_TIME(35) //timeshift 2s + reponse time 10s - first request(5s) diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/partialupdatestep.cpp --- a/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/partialupdatestep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/partialupdatestep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -146,37 +146,43 @@ PositionRequestWithCheck(posInfo, KPositionPartialUpdate, KIntGpsPsy1); - User::After(KSecond * 3);//2s fallback, 5s PSY1 partial, 7s PSY2 fix, 10s cleanup timeout + User::After(KSecond * 55);//2s fallback, 5s PSY1 partial, 7s PSY2 fix, 10s cleanup timeout PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); User::After(KSecond * 5); PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); - //4. If PSY2 gives a fullfix before cleanup timeout and there is location request - //pending, this fix will be given to the client - ConfigPsyL(KIntGpsPsy1, 2, - KConfigLRPartial5s, - KConfigLRPartial5s - ); - - ConfigPsyL(KExtGpsPsy1, 1, - KConfigLRNoError5s - ); + User::After(KSecond * 12); + - User::After(KSecond * 7); - InitPsyListInDefaultProxyL(); - - PositionRequestWithCheck(posInfo, KPositionPartialUpdate, KIntGpsPsy1); - - User::After(KSecond * 1);//2s fallback, 5s PSY1 partial, 7s PSY2 fix, 10s cleanup timeout - - SET_TIME - PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); - CHECK_TIME(1) - - User::After(KSecond * 5); - PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); +// Unclear test, removed pending doc lookup. +// //4. If PSY2 gives a fullfix before cleanup timeout and there is location request +// //pending, this fix will be given to the client +// +// ConfigPsyL(KIntGpsPsy1, 2, +// KConfigLRPartial5s, +// KConfigLRPartial5s +// ); +// +// ConfigPsyL(KExtGpsPsy1, 1, +// KConfigLRNoError5s +// ); +// +// //User::After(KSecond * 7); +// +// InitPsyListInDefaultProxyL(); +// +// PositionRequestWithCheck(posInfo, KPositionPartialUpdate, KIntGpsPsy1); +// +// //User::After(KSecond * 1);//2s fallback, 5s PSY1 partial, 7s PSY2 fix, 10s cleanup timeout +// +// SET_TIME +// PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); +// CHECK_TIME(0) +// +// //User::After(KSecond * 5); +// //PositionRequestWithCheck(posInfo, KErrNone, KExtGpsPsy1); // cleanup StandardCleanup(); diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/trackingsessionstep.cpp --- a/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/trackingsessionstep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/trackingsessionstep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -75,6 +75,10 @@ // setup : only PSY6 ToggleModuleL(KUidLcfPsy1, EFalse); ToggleModuleL(KUidLcfPsy3, EFalse); + + User::After(KSecond * 7); + + InitPsyListInDefaultProxyL(); // make one request to allow default proxy rebuild its database // this will guarantee that first request will be as fast as possible diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/twopsysactivestep.cpp --- a/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/twopsysactivestep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/defaultpositioningmodule/test/te_defproxy/src/twopsysactivestep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -104,7 +104,7 @@ //return KErrNone SET_TIME PositionRequestWithCheck(posInfo, KErrNone, KNetworkPsy1); - CHECK_TIME(3) //2s is timeshfift value min(2*TTFF(1),10)+1 + CHECK_TIME(31) //2s is timeshfift value min(2*TTFF(1),10)+1 User::After(KSecond*7); @@ -136,7 +136,7 @@ //7. PSY1 does not give a fix within timeshift, PSY2 is tried. If PSY1 then //give a error code, then fix from PSY2 will be used. PositionRequestWithCheck(posInfo, KErrNone, KNetworkPsy1); - CHECK_TIME(12) //Timeshift time 2s + response time 10s + CHECK_TIME(40) //Timeshift time 2s + response time 10s //Do everhing again when device status is Active @@ -180,7 +180,7 @@ //return KErrNone SET_TIME PositionRequestWithCheck(posInfo, KErrNone, KNetworkPsy1); - CHECK_TIME(3) //2s is timeshfift value min(2*TTFF(1),10)+1 + CHECK_TIME(31) //2s is timeshfift value min(2*TTFF(1),10)+1 User::After(KSecond*7); @@ -212,7 +212,7 @@ //7. PSY1 does not give a fix within timeshift, PSY2 is tried. If PSY1 then //give a error code, then fix from PSY2 will be used. PositionRequestWithCheck(posInfo, KErrNone, KNetworkPsy1); - CHECK_TIME(12) //Timeshift time 2s + response time 10s + CHECK_TIME(40) //Timeshift time 2s + response time 10s StandardCleanup(); return TestStepResult(); diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/gpspositioningmodule/lbsagpspsy/group/bld.inf --- a/datasourcemodules/gpspositioningmodule/lbsagpspsy/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/gpspositioningmodule/lbsagpspsy/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -24,12 +24,8 @@ ./101fe98c.cre z:/private/10202be9/101fe98c.cre // ConfML files -//! No longer exporting these confml files as this version of the APGS PSY is only used if APE Centric is enabled. If not -//! another version of the PSY is used (which has the same UID), so these confml files overwrite those of the other PSY. -//! A build time feature flag is being raised for these to only export these if APE Centric is enabled. For now, since -//! APE Centric is not being used, these are not exported. Once the feature flag is raised it can be changed to use that. -//../conf/agpspositioningmodule.confml OS_LAYER_EXPORTS_CONFML(agpspositioningmodule.confml) -//../conf/agpspositioningmodule_101fe98c.crml OS_LAYER_EXPORTS_CRML(agpspositioningmodule_101fe98c.crml) +../conf/agpspositioningmodule.confml OS_LAYER_EXPORTS_CONFML(agpspositioningmodule.confml) +../conf/agpspositioningmodule_101fe98c.crml OS_LAYER_EXPORTS_CRML(agpspositioningmodule_101fe98c.crml) PRJ_MMPFILES //gnumakefile createlbsagpspsyrep.mk diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/gpspositioningmodule/lbsgpspsy/group/bld.inf --- a/datasourcemodules/gpspositioningmodule/lbsgpspsy/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/gpspositioningmodule/lbsgpspsy/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -24,12 +24,8 @@ ./101fe98a.cre z:/private/10202be9/101fe98a.cre // ConfML files -//! No longer exporting these confml files as this version of the APGS PSY is only used if APE Centric is enabled. If not -//! another version of the PSY is used (which has the same UID), so these confml files overwrite those of the other PSY. -//! A build time feature flag is being raised for these to only export these if APE Centric is enabled. For now, since -//! APE Centric is not being used, these are not exported. Once the feature flag is raised it can be changed to use that. -//../conf/gpspositioningmodule.confml OS_LAYER_EXPORTS_CONFML(gpspositioningmodule.confml) -//../conf/gpspositioningmodule_101fe98a.crml OS_LAYER_EXPORTS_CRML(gpspositioningmodule_101fe98a.crml) +../conf/gpspositioningmodule.confml OS_LAYER_EXPORTS_CONFML(gpspositioningmodule.confml) +../conf/gpspositioningmodule_101fe98a.crml OS_LAYER_EXPORTS_CRML(gpspositioningmodule_101fe98a.crml) PRJ_MMPFILES //gnumakefile createlbsgpspsyrep.mk diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/group/bld.inf --- a/datasourcemodules/locationapesuplpsy/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/locationapesuplpsy/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -30,10 +30,15 @@ // Conf Files... ../conf/ape_suplpsy.confml OS_LAYER_CONFML(ape_suplpsy.confml) -../conf/ape_suplpsy_20026FB7.crml OS_LAYER_CRML(ape_suplpsy_20026FB7.crml) +../conf/ape_suplpsy_20026fb7.crml OS_LAYER_CRML(ape_suplpsy_20026fb7.crml) + +../inc/lbssuplpsyadaptation.h /epoc32/include/lbssuplpsyadaptation.h -../inc/lbssuplpsyadaptation.h /epoc32/include/lbsSuplPsyAdaptation.h +// Techview rom +nla_ape_suplpsy.iby /epoc32/rom/include/nla_ape_suplpsy.iby +// Test only +../cenrep/20026fb7.txt z:/private/10202be9/20026fb7.txt PRJ_MMPFILES nla_ape_suplpsy.mmp diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/group/lbs_ape_supl_positioning_module.mrp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourcemodules/locationapesuplpsy/group/lbs_ape_supl_positioning_module.mrp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,27 @@ +# +# Copyright (c) 2010 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: +# + +component lbs_ape_supl_positioning_module + +source \sf\os\lbs\datasourcemodules\locationapesuplpsy + +binary \sf\os\lbs\datasourcemodules\locationapesuplpsy\group all + +exports \sf\os\lbs\datasourcemodules\locationapesuplpsy\group + +notes_source \component_defs\release.src + +ipr E diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/group/nla_ape_suplpsy.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourcemodules/locationapesuplpsy/group/nla_ape_suplpsy.iby Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 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: +* +*/ +#ifndef __LBS_APE_SUPLPSY_IBY__ +#define __LBS_APE_SUPLPSY_IBY__ + +#if !defined(SYMBIAN_EXCLUDE_LOCATION) + +#ifdef _DEBUG +ECOM_PLUGIN_UDEB(nlaapesuplpsy.dll, nlaapesuplpsy.rsc) +#else +ECOM_PLUGIN(nlaapesuplpsy.dll, nlaapesuplpsy.rsc) +#endif //_DEBUG + +#endif + +#endif // __LBS_APE_SUPLPSY_IBY__ diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/group/nla_ape_suplpsy.mmp --- a/datasourcemodules/locationapesuplpsy/group/nla_ape_suplpsy.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/locationapesuplpsy/group/nla_ape_suplpsy.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -64,5 +64,6 @@ LIBRARY flogger.lib +SMPSAFE // End of File diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/inc/suplpsyrequestor.h --- a/datasourcemodules/locationapesuplpsy/inc/suplpsyrequestor.h Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/locationapesuplpsy/inc/suplpsyrequestor.h Tue Aug 31 16:38:06 2010 +0300 @@ -23,7 +23,7 @@ // INCLUDES #include #include -#include +#include /** * Network Positioning Configuration API CenRep UID. @@ -39,6 +39,14 @@ */ const TUint32 KPSYTimeToNextFix = 0x00000005; +/* +* PM UID +* +* Name of key which holds the protocol module UID +*/ +const TUint32 KPSYPmUid = 0x00000013; + + // FORWARD DECLARATIONS class MLbsSuplPsyAdaptationObserver; class CLbsSuplPsyAdaptation; @@ -154,6 +162,8 @@ TUint iRequestId; TUint iRequestIdCount; + + TInt iPmUid; }; #endif // SUPLPSYREQUESTOR_H diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/src/lbssuplpsyadaptation.cpp --- a/datasourcemodules/locationapesuplpsy/src/lbssuplpsyadaptation.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/locationapesuplpsy/src/lbssuplpsyadaptation.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -25,7 +25,7 @@ #include "LbsPsyNgMsgs.h" #include "lbscommoninternaldatatypes.h" -#include +#include const TUid KSuplPsyUid = {KSuplPsyImplUid}; //KSuplPsyImplUid defined in "suplpsy.hrh" // ----------------------------------------------------------------------------- diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/locationapesuplpsy/src/suplpsyrequestor.cpp --- a/datasourcemodules/locationapesuplpsy/src/suplpsyrequestor.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/locationapesuplpsy/src/suplpsyrequestor.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -20,7 +20,7 @@ // INCLUDE FILES #include #include -#include +#include #include "suplpsyrequestor.h" #include "suplpsygenericinfouser.h" #include "suplpsylogging.h" @@ -67,6 +67,12 @@ //TInt keyValue; TInt ret = repository->Get(KPSYTimeToNextFix, iTtnf); + + if (KErrNone != repository->Get(KPSYPmUid, iPmUid)) + { + // Use default UID (SUPL Proxy PM) + iPmUid = 0x102871EC; + } delete repository; repository = NULL; @@ -146,30 +152,25 @@ { //Get position info TRACESTRING( "Extracting position... " ) - HPositionGenericInfo* posInfo = static_cast < HPositionGenericInfo*> ( &aPosition ); + HPositionGenericInfo* posInfo = static_cast < HPositionGenericInfo*> ( &aPosition ); - if ( aReason >= KErrNone ) - { //Set module Id iPositionInfo->SetModuleId( TUid::Uid( KSuplPsyImplUid ) ); - + //Set time - TPosition pos; - posInfo->GetPosition( pos ); - TTime now; - now.UniversalTime(); - pos.SetTime( now ); - iPositionInfo->SetPosition( pos ); - iPrevFixSuccess = ETrue; - //posInfo = NULL; - } - else - { - //delete posInfo; - //posInfo = NULL; - iPrevFixSuccess = EFalse; - } + TPosition pos; + posInfo->GetPosition( pos ); + TTime now; + now.UniversalTime(); + pos.SetTime( now ); + iPositionInfo->SetPosition( pos ); + iPrevFixSuccess = ETrue; + } + else + { + iPrevFixSuccess = EFalse; + } iObserver.CallBack(); TRACESTRING( "CSuplPsyRequestor::OnLocationUpdate end" ) } @@ -199,7 +200,7 @@ //Make location request iRequestId = GetRequestId(); - const TUint KProtocolModuleUidValue = 0x102871EC; + const TUint KProtocolModuleUidValue = iPmUid; const TUid KProtocolModuleUid = { KProtocolModuleUidValue }; iPsyAdaptation->RequestLocationUpdate(iRequestId, ETrue, KProtocolModuleUid); if (iFirstReq) diff -r 29dbbeac905d -r 0c2046328c85 datasourcemodules/networkpositioningmodule/group/bld.inf --- a/datasourcemodules/networkpositioningmodule/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/datasourcemodules/networkpositioningmodule/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -25,12 +25,8 @@ ./101fe98e.cre z:/private/10202be9/101fe98e.cre // ConfML files -//! No longer exporting these confml files as this version of the APGS PSY is only used if APE Centric is enabled. If not -//! another version of the PSY is used (which has the same UID), so these confml files overwrite those of the other PSY. -//! A build time feature flag is being raised for these to only export these if APE Centric is enabled. For now, since -//! APE Centric is not being used, these are not exported. Once the feature flag is raised it can be changed to use that. -//../conf/networkpositioningmodule.confml OS_LAYER_EXPORTS_CONFML(networkpositioningmodule.confml) -//../conf/networkpositioningmodule_101fe98e.crml OS_LAYER_EXPORTS_CRML(networkpositioningmodule_101fe98e.crml) +../conf/networkpositioningmodule.confml OS_LAYER_EXPORTS_CONFML(networkpositioningmodule.confml) +../conf/networkpositioningmodule_101fe98e.crml OS_LAYER_EXPORTS_CRML(networkpositioningmodule_101fe98e.crml) PRJ_MMPFILES lbsnetpsy.mmp diff -r 29dbbeac905d -r 0c2046328c85 group/bld.inf --- a/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* Copyright (c) 2005 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: The common build file. -* -*/ - - -#include - -PRJ_PLATFORMS -DEFAULT - -#include "../datasourcemodules/locationapesuplpsy/group/bld.inf" //Component - APE SUPL PSY - -// End of File \ No newline at end of file diff -r 29dbbeac905d -r 0c2046328c85 layers.sysdef.xml --- a/layers.sysdef.xml Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - -]> - - - - - - - - - - \ No newline at end of file diff -r 29dbbeac905d -r 0c2046328c85 lbsapitest/lbshaitest/lbsclient/group/t_lbsclient.mmp --- a/lbsapitest/lbshaitest/lbsclient/group/t_lbsclient.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbsapitest/lbshaitest/lbsclient/group/t_lbsclient.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -33,7 +33,8 @@ USERINCLUDE ../../common/inc USERINCLUDE ../lbsapi/inc -SYSTEMINCLUDE /epoc32/include +OS_LAYER_SYSTEMINCLUDE + SYSTEMINCLUDE /epoc32/include/oem SYSTEMINCLUDE /epoc32/include/test SYSTEMINCLUDE /epoc32/include/kernel diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/group/bld.inf --- a/lbstest/lbstestproduct/LbsROMspecificSuites/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -23,7 +23,7 @@ ../scripts/lbsfullromsuite.script c:/testdata/scripts/lbsfullromsuite.script ./lbsromspecificsuite.iby /epoc32/rom/include/lbsromspecificsuite.iby -./lbsromspecificsuitevariant2.iby /epoc32/rom/include/lbsromspecificsuitevariant2.iby + ../testdata/lbsromspecificsuite.ini c:/testdata/configs/lbsromspecificsuite.ini diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/group/ctlbsromsuitetestserver.mmp --- a/lbstest/lbstestproduct/LbsROMspecificSuites/group/ctlbsromsuitetestserver.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/group/ctlbsromsuitetestserver.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -35,8 +35,8 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN - // LBS libraries. -LIBRARY gpsclock.lib +// LBS libraries. + LIBRARY lbs.lib // Location Client Library [EPOS LocServer] LIBRARY lbsloccommon.lib LIBRARY lbsadmin.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/group/lbsromspecificsuite.iby --- a/lbstest/lbstestproduct/LbsROMspecificSuites/group/lbsromspecificsuite.iby Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/group/lbsromspecificsuite.iby Tue Aug 31 16:38:06 2010 +0300 @@ -24,6 +24,7 @@ data=EPOCROOT##Epoc32\winscw\c\TestData\configs\lbsromspecificsuite.ini TestData\configs\lbsromspecificsuite.ini data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\lbsfullromsuite.script TestData\Scripts\lbsfullromvariant2suite.Script +data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\lbsstandaloneprivacysuite.script TestData\Scripts\lbsstandaloneprivacysuite.script data=EPOCROOT##Epoc32\winscw\c\TestData\configs\xtestmodule.ini TestData\configs\xtestmodule.ini data=EPOCROOT##Epoc32\winscw\c\TestData\configs\lbstestconfig.txt TestData\configs\lbstestconfig.txt diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsfullromsuite.script --- a/lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsfullromsuite.script Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsfullromsuite.script Tue Aug 31 16:38:06 2010 +0300 @@ -17,9 +17,9 @@ //! @SYMTestSuiteName lbsfullromsuite.script //! @SYMScriptTestEnvironment -PRINT Run all LbsRomSuiteTestServer Suite Tests +PRINT Run all lbsromsuitetestserver Suite Tests -LOAD_SUITE LbsRomSuiteTestServer -SharedData +LOAD_SUITE lbsromsuitetestserver -SharedData //Before we start LBS, select the test A-GPS integration module and network reg status txt file to use. PREFIX RUN_UTILS @@ -31,9 +31,9 @@ REMOVE_PREFIX // Selecting the default admin values will ensure the AGPS module requests assistance data. -RUN_TEST_STEP 010 LbsRomSuiteTestServer LbsStep_ResetDefaultAdmin +RUN_TEST_STEP 010 lbsromsuitetestserver LbsStep_ResetDefaultAdmin -RUN_TEST_STEP 030 LbsRomSuiteTestServer LbsStep_StartLbs +RUN_TEST_STEP 030 lbsromsuitetestserver LbsStep_StartLbs START_TESTCASE LBS-FULLROM-CHECKLOCMONITOR-0001 @@ -52,12 +52,12 @@ //! @SYMCreationDate 31/3/2009 //! @SYMAuthor arunkumarpandian //! @SYMTestStatus 3. Released -RUN_TEST_STEP 100 LbsRomSuiteTestServer PositionerTestStep c:\testdata\configs\lbsromspecificsuite.ini LBS-FULLROM--CHECKLOCMONITOR-0001 -END_TESTCASE LBS-FULLROM--CHECKLOCMONITOR-0001 +RUN_TEST_STEP 100 lbsromsuitetestserver PositionerTestStep c:\testdata\configs\lbsromspecificsuite.ini LBS-FULLROM-CHECKLOCMONITOR-0001 +END_TESTCASE LBS-FULLROM-CHECKLOCMONITOR-0001 PRINT Stop LBS -RUN_TEST_STEP 020 LbsRomSuiteTestServer LbsStep_StopLbs +RUN_TEST_STEP 020 lbsromsuitetestserver LbsStep_StopLbs // Re-select the real A-GPS integration module. RUN_UTILS DeleteFile c:\private\10282253\lbs\locmods\agpsintegmodule.ini @@ -65,4 +65,4 @@ // Delete network registration status text file RUN_UTILS DeleteFile c:\config.txt -PRINT LbsRomSuiteTestServer Completed +PRINT lbsromsuitetestserver Completed diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsstandaloneprivacysuite.script --- a/lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsstandaloneprivacysuite.script Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/scripts/lbsstandaloneprivacysuite.script Tue Aug 31 16:38:06 2010 +0300 @@ -17,9 +17,9 @@ //! @SYMTestSuiteName lbsstandaloneprivacysuitevariant2.script //! @SYMScriptTestEnvironment -PRINT Run all LbsRomSuiteTestServer Suite Tests +PRINT Run all lbsromsuitetestserver Suite Tests -LOAD_SUITE LbsRomSuiteTestServer -SharedData +LOAD_SUITE lbsromsuitetestserver -SharedData //Before we start LBS, select the test A-GPS integration module and network reg status txt file to use. PREFIX RUN_UTILS @@ -31,15 +31,15 @@ REMOVE_PREFIX // Selecting the default admin values will ensure the AGPS module requests assistance data. -//RUN_TEST_STEP 010 LbsRomSuiteTestServer LbsStep_ResetDefaultAdmin +//RUN_TEST_STEP 010 lbsromsuitetestserver LbsStep_ResetDefaultAdmin // This step is used to configure lbs and root to be transient processes // and also the processes that are startedup by root -RUN_TEST_STEP 030 LbsRomSuiteTestServer LbsStep_SetupStandalonePrivacyMode +RUN_TEST_STEP 030 lbsromsuitetestserver LbsStep_SetupStandalonePrivacyMode // - Instead of using a privacy request which actually starts up the LBS, we directly // start lbs which in turn brings up the root process [configured in the above step] -RUN_TEST_STEP 030 LbsRomSuiteTestServer LbsStep_StartLbs +RUN_TEST_STEP 030 lbsromsuitetestserver LbsStep_StartLbs @@ -62,14 +62,14 @@ //! @SYMCreationDate 31/3/2009 //! @SYMAuthor arunkumarpandian //! @SYMTestStatus 3. Released -RUN_TEST_STEP 100 LbsRomSuiteTestServer PositionerTestStep c:\testdata\configs\lbsromspecificsuite.ini LBS-STANDALONEPRIVACY--CHECKLOCMONITOR-0001 -END_TESTCASE LBS-STANDALONEPRIVACY--CHECKLOCMONITOR-0001 +RUN_TEST_STEP 100 lbsromsuitetestserver PositionerTestStep c:\testdata\configs\lbsromspecificsuite.ini LBS-STANDALONEPRIVACY-CHECKLOCMONITOR-0001 +END_TESTCASE LBS-STANDALONEPRIVACY-CHECKLOCMONITOR-0001 DELAY 2000 //PRINT Stop LBS -RUN_TEST_STEP 020 LbsRomSuiteTestServer LbsStep_StopLbs +RUN_TEST_STEP 020 lbsromsuitetestserver LbsStep_StopLbs // Re-select the real A-GPS integration module. RUN_UTILS DeleteFile c:\private\10282253\lbs\locmods\agpsintegmodule.ini @@ -77,7 +77,7 @@ // Delete network registration status text file RUN_UTILS DeleteFile c:\config.txt -PRINT LbsRomSuiteTestServer Completed +PRINT lbsromsuitetestserver Completed diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp --- a/lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/LbsROMspecificSuites/src/ctpositionerteststep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -72,6 +72,7 @@ TInt testIndex = KErrNotFound; if(!GetIntFromConfig(ConfigSection(),KTestCaseIdInt,testIndex)) { + INFO_PRINTF1(_L("Error: could not get testindex from ini file")); User::Leave(KErrNotFound); } _LIT(KTestName, "Call test by index"); @@ -121,23 +122,24 @@ TFullName name; err = findServer.Next(name); - if ((err==KErrNone)||(err==KErrAlreadyExists)) - { - _LIT(KFailLog, "Location monitor process started by root - so test case failed"); - ERR_PRINTF1(KFailLog); - SetTestStepResult(EFail); - } - else - { - - _LIT(KPassInfoLog, "Location Monitor NOT started by the root process"); - INFO_PRINTF1(KPassInfoLog); - - RPositionServer server; - User::LeaveIfError(server.Connect()); - CleanupClosePushL(server); + if ((err==KErrNone)||(err==KErrAlreadyExists)) + { + _LIT(KFailLog, "Location monitor process started by root - so test case failed"); + ERR_PRINTF1(KFailLog); + SetTestStepResult(EFail); + } + else + { + + _LIT(KPassInfoLog, "Location Monitor NOT started by the root process"); + INFO_PRINTF1(KPassInfoLog); + + RPositionServer server; + TInt retval = server.Connect(); + INFO_PRINTF2(_L("RPositionServer.Connect() returned with value %d, should return 0"),retval); + CleanupClosePushL(server); - User::After(100000); + User::After(100*1000); _LIT(KTest, "Session with epos location server opened successfully"); INFO_PRINTF1(KTest); @@ -145,16 +147,17 @@ RPositioner positioner; TInt err = positioner.Open(server); - if(KErrNone != err) - { - ERR_PRINTF1(KFailedOpenPositioner); - SetTestStepResult(EFail); - CleanupStack::PopAndDestroy(&server); - return TestStepResult(); - } - - CleanupClosePushL(positioner); - _LIT(KTest2, "SubSession with epos location server opened successfully"); + if(KErrNone != err) + { + INFO_PRINTF2(_L("positioner.Open(server) returned value %d, should be 0"), err); + ERR_PRINTF1(KFailedOpenPositioner); + SetTestStepResult(EFail); + CleanupStack::PopAndDestroy(&server); + return TestStepResult(); + } + + CleanupClosePushL(positioner); + _LIT(KTest2, "SubSession with epos location server opened successfully"); INFO_PRINTF1(KTest2); // Validate that the location monitor gets started up when @@ -228,7 +231,14 @@ INFO_PRINTF1(KPassInfoLog); RPositionServer server; - User::LeaveIfError(server.Connect()); + TInt retval = server.Connect(); + if(err != KErrNone) + { + SetTestStepResult(EFail); + INFO_PRINTF2(_L("RPositionServer.Connect() returned with value %d, should return 0"),retval); + CleanupStack::PopAndDestroy(&server); + return TestStepResult(); + } CleanupClosePushL(server); _LIT(KTest, "Session with epos location server opened successfully"); diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/agpsmodule/src/ctagpsmodule.cpp --- a/lbstest/lbstestproduct/agpsmodule/src/ctagpsmodule.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/agpsmodule/src/ctagpsmodule.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -119,6 +119,7 @@ TInt err; err = RProperty::Set(KUidSystemCategory, ELbsTestAGpsModuleOut, modDataOutBuf); User::LeaveIfError(err); + User::After( 200 * 1000); } } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/group/lbs_testproduct.mrp --- a/lbstest/lbstestproduct/group/lbs_testproduct.mrp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/group/lbs_testproduct.mrp Tue Aug 31 16:38:06 2010 +0300 @@ -16,7 +16,6 @@ component lbs_testproduct - source \sf\os\lbs\lbstest\lbstestproduct diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/hybridprotocolmodule/eabi/GetafixUtilsu.def --- a/lbstest/lbstestproduct/hybridprotocolmodule/eabi/GetafixUtilsu.def Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/hybridprotocolmodule/eabi/GetafixUtilsu.def Tue Aug 31 16:38:06 2010 +0300 @@ -116,4 +116,7 @@ _ZTV25CTLbsX3pTransmitLocWaiter @ 115 NONAME _ZTVN13CPropPipeBase20CPropPipeBaseTimeOutE @ 116 NONAME _ZTVN13CPropPipeBase20CPropPipeBaseWatcherE @ 117 NONAME + _ZN19CNotifyReadPropPipeD0Ev @ 118 NONAME + _ZN19CNotifyReadPropPipeD1Ev @ 119 NONAME + _ZN19CNotifyReadPropPipeD2Ev @ 120 NONAME diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/hybridprotocolmodule/getafixutils/src/PropPipe.cpp --- a/lbstest/lbstestproduct/hybridprotocolmodule/getafixutils/src/PropPipe.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/hybridprotocolmodule/getafixutils/src/PropPipe.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -625,7 +625,7 @@ iPropWatch = CPropWatcher::NewL(KUidSystemCategoryValue, aKeyFlowCtrl, *this); } -CNotifyReadPropPipe::~CNotifyReadPropPipe() +EXPORT_C CNotifyReadPropPipe::~CNotifyReadPropPipe() { delete iPropWatch; } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsbackuprestore/inc/te_lbsbackuprestoresuitedefs.h --- a/lbstest/lbstestproduct/lbsbackuprestore/inc/te_lbsbackuprestoresuitedefs.h Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsbackuprestore/inc/te_lbsbackuprestoresuitedefs.h Tue Aug 31 16:38:06 2010 +0300 @@ -27,7 +27,7 @@ #define __TE_LBSBACKUPRESTORE_SUITEDEFS_H__ const TUint32 KBackupKey = 0x01234567; -const TUint32 KMetatagBackupAndRestoreValidValue = 0x01000000; +const TUint32 KMetatagBackupAndRestoreValidValue = 0x10000000; const TInt KValidValue = 0x01221122; const TInt KCorruptedValue = 0x01001001; diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsbackuprestore/src/checkpsyexiststep.cpp --- a/lbstest/lbstestproduct/lbsbackuprestore/src/checkpsyexiststep.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsbackuprestore/src/checkpsyexiststep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -100,28 +100,36 @@ err = GetIntFromConfig(KPSYList, lineBuf, psyUid); err = idList->Find(TUid::Uid(psyUid)); if(KErrNotFound==err) - { + { INFO_PRINTF2(_L("CCheckPSYExistStep:can't find (%d) in idList "), psyUid); - SetTestStepResult(EFail); - } + SetTestStepResult(EFail); + } CRepository* centrepentry = CRepository::NewL(TUid::Uid(psyUid)); err = centrepentry->Get(brandKey, scarkey); if(KErrNotFound!=err) - { - centrepentry->GetMeta(brandKey, metadataTag); - if(metadataTag == KMetatagBackupAndRestoreValidValue) - { - if(scarkey!=KValidValue) - { - INFO_PRINTF3(_L("scarkey(%d)!=KValidValue(%d)"), scarkey,KValidValue); - SetTestStepResult(EFail); - } - } - } + { + centrepentry->GetMeta(brandKey, metadataTag); + if(metadataTag >= KMetatagBackupAndRestoreValidValue) + { + if(scarkey!=KValidValue) + { + INFO_PRINTF3(_L("scarkey(%d)!=KValidValue(%d)"), scarkey,KValidValue); + SetTestStepResult(EFail); + } + } + } else { - INFO_PRINTF1(_L("CCheckPSYExistStep:centrepentry->Get(brandKey, scarkey) NOT found")); - } + err = centrepentry->Set(brandKey, scarkey); + if(KErrPermissionDenied == err) + { + INFO_PRINTF2(_L("%d is read only"), psyUid); + } + else + { + INFO_PRINTF1(_L("CCheckPSYExistStep:centrepentry->Get(brandKey, scarkey) NOT found")); + } + } } CleanupStack::PopAndDestroy(3, modules); diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/group/ctlbsclientportedsuite.mmp --- a/lbstest/lbstestproduct/lbsclient/group/ctlbsclientportedsuite.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/group/ctlbsclientportedsuite.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -101,7 +101,6 @@ LIBRARY lbsnetsim.lib LIBRARY cone.lib LIBRARY eikcore.lib -LIBRARY cntmodel.lib LIBRARY estor.lib LIBRARY ecom.lib LIBRARY apgrfx.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/group/ctlbsclientserver.mmp --- a/lbstest/lbstestproduct/lbsclient/group/ctlbsclientserver.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/group/ctlbsclientserver.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -59,8 +59,6 @@ SOURCE ctlbsclientstep_reset_assistance.cpp SOURCE ctlbsclientstepconcurrent.cpp -SOURCE ctlbsclientlastknownpospnslistener.cpp - // LBS libraries. LIBRARY lbs.lib LIBRARY lbsloccommon.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/inc/ctlbsclientlastknownpospnslistener.h --- a/lbstest/lbstestproduct/lbsclient/inc/ctlbsclientlastknownpospnslistener.h Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/** -* Copyright (c) 2006-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: -* This contains the header file for Get last known position -* -* -*/ - - - -/** - @file ctlbsclientlastknownpospnslistener.h -*/ -#ifndef __CT_LBS_CLIENT_LKP_PNS_LISTENER_H__ -#define __CT_LBS_CLIENT_LKP_PNS_LISTENER_H__ - -#include -#include -#include - -class MT_LastKnownPosPnsObserver - { -public: - virtual void NotifyLastKnownPosPnsUpdate(TPositionInfo& aPositionInfo, TRequestStatus& aStatus) = 0; - }; - -class CT_LbsClientLastKnownPosPnsListener: public CActive - { -public: - ~CT_LbsClientLastKnownPosPnsListener(); - static CT_LbsClientLastKnownPosPnsListener* NewL(MT_LastKnownPosPnsObserver* aObserver); - void Result(TPositionInfo& aPositionInfo); - -protected: -// CActive: - virtual void DoCancel(); - virtual void RunL(); - virtual TInt RunError(TInt aError); - -private: - CT_LbsClientLastKnownPosPnsListener(MT_LastKnownPosPnsObserver* aObserver); - void ConstructL(); - -private: - MT_LastKnownPosPnsObserver* iObserver; - RProperty iLKPPnsProperty; - TPositionInfo iPositionInfo; - }; - -#endif // __CT_LBS_CLIENT_LKP_PNS_LISTENER_H__ diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/inc/ctlbsclientserver.h --- a/lbstest/lbstestproduct/lbsclient/inc/ctlbsclientserver.h Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/inc/ctlbsclientserver.h Tue Aug 31 16:38:06 2010 +0300 @@ -39,10 +39,6 @@ protected: void ConstructL(const TDesC& aName); - -public: - // inter-test step pos info storage. - TPositionInfo iPosInfo; }; #endif //__CT_LBS_CLIENT_SERVER_H__ diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/inc/ctlbsclientsteplastknownpos.h --- a/lbstest/lbstestproduct/lbsclient/inc/ctlbsclientsteplastknownpos.h Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/inc/ctlbsclientsteplastknownpos.h Tue Aug 31 16:38:06 2010 +0300 @@ -22,13 +22,10 @@ #include "ctlbsclientstep.h" #include "ctlbsclientserver.h" -#include "ctlbsclientnotifyposupdao.h" -#include "ctlbsclientlastknownpospnslistener.h" - // Literals used _LIT(KLbsClientStep_LastKnownPos, "LbsClientStep_LastKnownPos"); -class CT_LbsClientStep_LastKnownPos : public CT_LbsClientStep, public MT_LastKnownPosPnsObserver, public MT_NotifyPosUpdateObserver +class CT_LbsClientStep_LastKnownPos : public CT_LbsClientStep { public: ~CT_LbsClientStep_LastKnownPos(); @@ -36,20 +33,11 @@ static CT_LbsClientStep_LastKnownPos* New(CT_LbsClientServer& aParent); virtual TVerdict doTestStepL(); void SwitchOnselfLocateAPIL(); - - void NotifyPositionUpdateCallback(TRequestStatus& aStatus); - void NotifyLastKnownPosPnsUpdate(TPositionInfo& aPositionInfo, TRequestStatus& aStatus); private: void ConstructL(); CT_LbsClientStep_LastKnownPos(CT_LbsClientServer& aParent); - -private: - TBool iLastKnownPostionReceived; - TBool iNpudReceived; - TPositionInfo iLastKnownPosInfo; - TInt iError; }; #endif //__CT_LBS_CLIENT_STEP_LAST_KNOWN_POS_H__ diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/scripts/lbsclientlastknownpos.script --- a/lbstest/lbstestproduct/lbsclient/scripts/lbsclientlastknownpos.script Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/scripts/lbsclientlastknownpos.script Tue Aug 31 16:38:06 2010 +0300 @@ -569,62 +569,7 @@ END_TESTCASE LBS-Client-LastKnownPos-0014 -START_TESTCASE LBS-Client-LastKnownPos-0801 -//!@SYMTestCaseID LBS-Client-LastKnownPos-0801 -//!@SYMTestCaseDesc Confirm Last Known Position published to P&S property -//! -//!@SYMTestActions 1. Request a location update (passing in a TPositionInfo) and wait for it to complete. -//! 2. Set up Last Known Position P&S Property Listener -//! 3. Request a location update via RPositioner, wait for it to complete and for the P&S property to be updated. -//! 4. Comparet the content and timestamp of the position returned by RPositioner and P&S -//! 5. Store the returned position for the next test -//! -//!@SYMTestExpectedResults Location Information received via the two APIs is identical. -//! -//!@SYMPREQ PREQ786 -//!@SYMREQ REQ786.08 -//!@SYMREQ REQ786.19 -//!@SYMPREQ PREQ89 -//!@SYMREQ REQ 89.03 -//!@SYMREQ REQ 89.07 -//!@SYMREQ REQ 89.09 -//! -//!@SYMTestType CIT -//!@SYMTestPriority 1 -//!@SYMTestStatus Implemented - -RUN_TEST_STEP 010 LbsClientTestServer LbsStep_InstallScheduler -RUN_TEST_STEP 020 LbsClientTestServer LbsStep_SetUpPsy c:\testdata\configs\LbsClientLastKnownPos.ini LBS-LastKnownPos -RUN_TEST_STEP 120 LbsClientTestServer LbsClientStep_LastKnownPos c:\testdata\configs\LbsClientLastKnownPos.ini LBS-LastKnownPos-0801 - -END_TESTCASE LBS-Client-LastKnownPos-0801 - - - -START_TESTCASE LBS-Client-LastKnownPos-0802 -RUN_TEST_STEP 020 LbsClientTestServer LbsStep_StopLbs -DELAY 10 -RUN_TEST_STEP 030 LbsClientTestServer LbsStep_StartLbs - -//!@SYMTestCaseID LBS-Client-LastKnownPos-0802 -//!@SYMTestCaseDesc Confirm P&S Last Known Position available following LBS re-start -//! -//!@SYMTestActions 1. Following LBS restart, read Last Known Position P&S key. -//! 2. confirm position/timestamp info is as previously stored. -//! -//!@SYMTestExpectedResults Location Information is received and is correct. -//! -//! -//!@SYMTestType CIT -//!@SYMTestPriority 1 -//!@SYMTestStatus Implemented - -RUN_TEST_STEP 010 LbsClientTestServer LbsStep_InstallScheduler -RUN_TEST_STEP 020 LbsClientTestServer LbsStep_SetUpPsy c:\testdata\configs\LbsClientLastKnownPos.ini LBS-LastKnownPos -RUN_TEST_STEP 120 LbsClientTestServer LbsClientStep_LastKnownPos c:\testdata\configs\LbsClientLastKnownPos.ini LBS-LastKnownPos-0802 - -END_TESTCASE LBS-Client-LastKnownPos-0802 PRINT Stop LBS diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/src/ctlbsclientlastknownpospnslistener.cpp --- a/lbstest/lbstestproduct/lbsclient/src/ctlbsclientlastknownpospnslistener.cpp Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -// Copyright (c) 2006-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: -// - -/** - @file ctlbsclientlastknownpospnslistener.cpp -*/ - -#include "ctlbsclientlastknownpospnslistener.h" -#include "epos_lastknownlocationpskeys.h" - - -CT_LbsClientLastKnownPosPnsListener::~CT_LbsClientLastKnownPosPnsListener() -/** - * Destructor - */ - { - Cancel(); - } - - -CT_LbsClientLastKnownPosPnsListener::CT_LbsClientLastKnownPosPnsListener(MT_LastKnownPosPnsObserver* aObserver) : CActive(EPriorityIdle), iObserver(aObserver) -/** - * Constructor - will not leave - */ - { - CActiveScheduler::Add(this); - } - - -CT_LbsClientLastKnownPosPnsListener* CT_LbsClientLastKnownPosPnsListener::NewL(MT_LastKnownPosPnsObserver* aObserver) -/** - * 'public constructor' may leave - */ - { - CT_LbsClientLastKnownPosPnsListener* self = new(ELeave)CT_LbsClientLastKnownPosPnsListener(aObserver); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void CT_LbsClientLastKnownPosPnsListener::ConstructL() - { - User::LeaveIfError(iLKPPnsProperty.Attach(KPosLastKnownLocationCategory, - KPosLastKnownLocation, - EOwnerThread)); - - TPckg positionDes(iPositionInfo); - iLKPPnsProperty.Get(positionDes); - iLKPPnsProperty.Subscribe(iStatus); - SetActive(); - } - -void CT_LbsClientLastKnownPosPnsListener::DoCancel() - { - iLKPPnsProperty.Cancel(); - } - -void CT_LbsClientLastKnownPosPnsListener::RunL() - { - TPckg positionDes(iPositionInfo); - iLKPPnsProperty.Get(positionDes); - iObserver->NotifyLastKnownPosPnsUpdate(iPositionInfo, iStatus); - } - -void CT_LbsClientLastKnownPosPnsListener::Result(TPositionInfo& aPositionInfo) - { - aPositionInfo = iPositionInfo; - } - -TInt CT_LbsClientLastKnownPosPnsListener::RunError(TInt aError) - { // called if RunL leaves. aError contains the error code - return aError; - } - diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownpos.cpp --- a/lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownpos.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownpos.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -82,9 +82,6 @@ CleanupStack::PopAndDestroy(moduleUpdate); CleanupStack::PopAndDestroy(db); - - iLastKnownPostionReceived = EFalse; - iNpudReceived = EFalse; } void CT_LbsClientStep_LastKnownPos::SwitchOnselfLocateAPIL() @@ -640,7 +637,7 @@ INFO_PRINTF1(_L("Failed test, reference position incorrect.")); SetTestStepResult(EFail); } - } // testCaseId==104 + } // Carry out a notify update to ensure last known cache is filled. TPositionInfo notifyPosInfo; @@ -675,7 +672,6 @@ // Test case LBS-LastKnownPos-0105 case 105: { - T_LbsUtils utils; TPositionModuleId networkModuleId = utils.GetNetworkModuleIdL(iServer); // Open positioner. @@ -745,137 +741,8 @@ CloseNetSim(); break; } - // Test case LBS-LastKnownPosPnsKey-0801 - case 801: - { - T_LbsUtils utils; - // Open positioner. - User::LeaveIfError(iPositioner.Open(iServer)); - CleanupClosePushL(iPositioner); - - // For this test an additional reference position will be returned. - - // Setup netsim. - User::LeaveIfError(OpenNetSim()); - - // Request notify for the expected reference position. - TPositionInfo actualRefPosInfo; - - err = DoNotifyUpdateL(actualRefPosInfo); - if (err) - { - INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err); - SetTestStepResult(EFail); - } - - // Verify reference position. - TPositionInfo verifyRefPosInfo; - - verifyRefPosInfo.SetPosition(iRefPos); - if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo)) - { - INFO_PRINTF1(_L("Failed test, reference position incorrect.")); - SetTestStepResult(EFail); - } - - User::After(1*1000*1000); - - // the actual test.... - - // Active Object for listening to the Last Known Position PnS property - CT_LbsClientLastKnownPosPnsListener* pnsLKP = CT_LbsClientLastKnownPosPnsListener::NewL(this); - CleanupStack::PushL(pnsLKP); - - // Active Object for obtaining a position using RPositioner API - CT_LbsClientNotifyPosUpdAO* npudAO = CT_LbsClientNotifyPosUpdAO::NewL(*this); - CleanupStack::PushL(npudAO); - - // Issue the NPUD - TPositionInfo posInfo; - npudAO->NotifyPosUpdateL(iPositioner, posInfo); - - iError = KErrNone; - - // active scheduler will be stopped when both - // - the NPUD request is completed - // - and the last known position P&S key has been updated. - CActiveScheduler::Start(); - - if (KErrNone != iError) - { - SetTestStepResult(EFail); - } - else - { - if (!utils.Compare_PosInfo(posInfo, iLastKnownPosInfo)) - { - INFO_PRINTF1(_L("Failed test, P&S position is not the same as returned by RPositioner.")); - SetTestStepResult(EFail); - } - - // verify that the timestamp matches the original one: - TPosition pos801; // original position - TTime timeStamp; // timestamp inside original received position - posInfo.GetPosition(pos801); - timeStamp = pos801.Time(); - - TPosition pos801b; // PnS position - TTime timeStamp_cached; - iLastKnownPosInfo.GetPosition(pos801b); - timeStamp_cached = pos801b.Time(); - - if(timeStamp_cached != timeStamp) - { - INFO_PRINTF1(_L("Failed test, P&S position timestamp is not the same as returned by RPositioner.")); - SetTestStepResult(EFail); - } - - //Store pos info for next Test - iParent.iPosInfo = posInfo; - } - CleanupStack::PopAndDestroy(npudAO); - CleanupStack::PopAndDestroy(pnsLKP); - CleanupStack::PopAndDestroy(&iPositioner); - CloseNetSim(); - break; - } - - // Test case LBS-LastKnownPosPnsKey-0802 - case 802: - { - T_LbsUtils utils; - // LBS has been stopped and re-started. - // this test checks that the LKP P&S Property has been re-populated. - CT_LbsClientLastKnownPosPnsListener* pnsLKP = CT_LbsClientLastKnownPosPnsListener::NewL(this); - CleanupStack::PushL(pnsLKP); - - // read the pos info obtained from LKP P&S - TPositionInfo posInfo; - pnsLKP->Result(posInfo); - - // check the position is the same as stored in the previous test step - if (!utils.Compare_PosInfo(posInfo, iParent.iPosInfo)) - { - INFO_PRINTF1(_L("Failed test, P&S position is not as expected.")); - SetTestStepResult(EFail); - } - - // and compare their timestamps - TPosition pos; - posInfo.GetPosition(pos); - TTime Time802Lkp = pos.Time(); - iParent.iPosInfo.GetPosition(pos); - TTime Time802Old = pos.Time(); - if (Time802Lkp != Time802Old) - { - INFO_PRINTF1(_L("Failed test, P&S position timestamp is not is not as expected.")); - SetTestStepResult(EFail); - } - CleanupStack::PopAndDestroy(pnsLKP); - break; - } - - default: + + default: { User::Leave(KErrArgument); } @@ -892,31 +759,3 @@ return TestStepResult(); } - -void CT_LbsClientStep_LastKnownPos::NotifyPositionUpdateCallback(TRequestStatus& aStatus) - { - if(aStatus.Int() != KErrNone) - { - User::Invariant(); - } - iError |= aStatus.Int(); - iNpudReceived = ETrue; - if(iLastKnownPostionReceived) - { - CActiveScheduler::Stop(); - } - } -void CT_LbsClientStep_LastKnownPos::NotifyLastKnownPosPnsUpdate(TPositionInfo& aPositionInfo, TRequestStatus& aStatus) - { - if(aStatus.Int() != KErrNone) - { - User::Invariant(); - } - iError |= aStatus.Int(); - iLastKnownPosInfo = aPositionInfo; - iLastKnownPostionReceived = ETrue; - if(iNpudReceived) - { - CActiveScheduler::Stop(); - } - } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownposarea.cpp --- a/lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownposarea.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/src/ctlbsclientsteplastknownposarea.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -132,24 +132,8 @@ TRequestStatus emptyStatus; iServer.EmptyLastKnownPositionStore(emptyStatus); User::WaitForRequest(emptyStatus); - - TPositionInfo posInfo2; - TPositionAreaExtendedInfo matchLevel; - TPositionAreaExtendedInfo expectedMatchLevel; - TPositionInfo* posInfo = new(ELeave) TPositionInfo(); posInfoArr.Append(posInfo); - - // Check that last known position is completed correctly with no known area and nothing in cache. - err = DoLastKnownPosAreaL(posInfo2, matchLevel); - - // no position and database returns KErrUnknown in these circumstances. - if ( KErrUnknown != err) - { - ERR_PRINTF2(_L("Expected KErrUnknown, incorrect err %d returned"), err); - SetTestStepResult(EFail); - } - //1. Move to cell 234.15.1911.36464 err = RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTimersReduceTime, KReduceSimTsyTimers); User::After(KSimTsyTransitionDelay); @@ -161,6 +145,8 @@ SetTestStepResult(EFail); } //3. LastKnown Pos Area + TPositionInfo posInfo2; + TPositionAreaExtendedInfo matchLevel, expectedMatchLevel; err = DoLastKnownPosAreaL(posInfo2, matchLevel); if (KErrNone != err) { diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepmodstatus.cpp --- a/lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepmodstatus.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepmodstatus.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -655,9 +655,6 @@ INFO_PRINTF1(_L("Position Received")); User::WaitForRequest(status); - - // short delay to allow the module status change to update. - User::After(1*100*1000); //Verify that the position is EDeviceReady again DoVerifyModStatus(TPositionModuleStatus::EDeviceReady,modId); diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepsrvconnectclose.cpp --- a/lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepsrvconnectclose.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/src/ctlbsclientstepsrvconnectclose.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -205,6 +205,7 @@ case 10: { // this test only valid on variant2 api: + __ASSERT_DEBUG(iExpectedApiBehaviour == EApiVariant2, User::Panic(_L("Unrecognised 'Expected Api Behaviour'"), 1)); INFO_PRINTF1(_L("LBsroot has been started by EPosserver in this mode. ")); } break; diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbsclient/testdata/lbsclientlastknownpos.ini --- a/lbstest/lbstestproduct/lbsclient/testdata/lbsclientlastknownpos.ini Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbsclient/testdata/lbsclientlastknownpos.ini Tue Aug 31 16:38:06 2010 +0300 @@ -92,17 +92,4 @@ $position,1,52.2,0.2,10,0,100,100* type / repeat / lat / long / alt / dat / H / V /... -[LBS-LastKnownPos-0801] -tc_id=801 -pos_infos_file=c:\testdata\configs\lbsclientlastknownpos.ini -$position,2,12.3,45.6,78,0,100,100* -log_type=0 -type / repeat / lat / long / alt / dat / H / V /... -[LBS-LastKnownPos-0802] -tc_id=802 -pos_infos_file=c:\testdata\configs\lbsclientlastknownpos.ini -$position,1* -log_type=0 -type / repeat / lat / long / alt / dat / H / V /... - diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/group/bld.inf --- a/lbstest/lbstestproduct/lbshybridmolr/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -47,6 +47,8 @@ ../scripts/uebased_molr_self_internal_value_test.script c:/testdata/scripts/uebased_molr_self_internal_value_test.script ../scripts/molr_error_assistance.script c:/testdata/scripts/molr_error_assistance.script +../scripts/hybrid_ueassisted_molr_posstatus.script c:/testdata/scripts/hybrid_ueassisted_molr_posstatus.script + //ini files ../testdata/lbs_molr.ini c:/testdata/configs/lbs_molr.ini diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/group/ctlbshybridmolrserver.mmp --- a/lbstest/lbstestproduct/lbshybridmolr/group/ctlbshybridmolrserver.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/group/ctlbshybridmolrserver.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -65,6 +65,9 @@ // Supl tests SOURCE ctlbssuplmolrtbfutilesp.cpp +//Positioning Indicator test files +SOURCE ctlbshybridueassistednpudposstatus.cpp + // LBS libraries. LIBRARY lbs.lib LIBRARY lbsloccommon.lib @@ -78,6 +81,7 @@ LIBRARY lbsnetinternalapi.lib LIBRARY lbsinternalapi.lib LIBRARY lbspartnercommon.lib +LIBRARY lbspositioningstatus.lib // LBS test libraries. LIBRARY lbstestutils.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/inc/ctlbshybridueassistednpudposstatus.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmolr/inc/ctlbshybridueassistednpudposstatus.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,70 @@ +// Copyright (c) 2007-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: +// This contains the header file for MOLR UE Assisted GPS ok +// +// + +#ifndef CTLBSHYBRIDUEASSISTEDNPUDPOSSTATUS_H +#define CTLBSHYBRIDUEASSISTEDNPUDPOSSTATUS_H + +// LBS test includes. +#include "ctlbshybridmolrstep.h" +#include +#include "lbs/lbspositioningstatus.h" + +// Literals used +_LIT(KLbsHybridUEAssistedNpudPosStatus,"LbsHybridUEAssistedNpudPosStatus"); + + +class CT_LbsHybridUEAssistedNpudPosStatus: public CT_LbsHybridMOLRStep, /*public MLbsPrivacyObserver*/ public MPosServerObserver, public MLbsPositioningStatusObserver +{ +public: + static CT_LbsHybridUEAssistedNpudPosStatus* New(CT_LbsHybridMOLRServer& aParent); + enum TVerdict doTestStepL(); + ~CT_LbsHybridUEAssistedNpudPosStatus(); + +protected: +/* // from MLbsPrivacyObserver + void ProcessNetworkLocationRequest(TUint aRequestId, const TLbsExternalRequestInfo& aRequestInfo, const TNotificationType& aNotificationType); + void ProcessNetworkPositionUpdate(TUint aRequestId, const TPositionInfo& aPosInfo); + void ProcessRequestComplete(TUint aRequestId, TInt aReason); +*/ + // MPosServerObserver + void OnGetLastKnownPosition(TInt32 aErr, const TPositionInfoBase& aPosInfo); + void OnNotifyPositionUpdate(TInt32 aErr, const TPositionInfoBase& aPosInfo); + + //MLbsPositioningStatusObserver + void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus); + +protected: + CT_LbsHybridUEAssistedNpudPosStatus(CT_LbsHybridMOLRServer& aParent); + void ConstructL(); + +private: + enum TState + { + EInitializing, + EPrivacyCheckOk, + ERefLocReceived, + EGpsLocReceived + }; + + TState iState; + TLbsNetSessionId iSessionId; + TInt iPosStatusCount; + CLbsPositioningStatus::TLbsPositioningStatus iPositioningStatus; + CLbsPositioningStatus* iLbsPositioningStatus; +}; + +#endif // CTLBSHYBRIDUEASSISTEDNPUDPOSSTATUS_H diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/inc/ctlbsmolrtracking.h --- a/lbstest/lbstestproduct/lbshybridmolr/inc/ctlbsmolrtracking.h Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/inc/ctlbsmolrtracking.h Tue Aug 31 16:38:06 2010 +0300 @@ -30,11 +30,12 @@ #include #include "ctlbstestactivemanager.h" #include "ctlbsnetprotocol.h" +#include "lbs/lbspositioningstatus.h" // Literals used _LIT(KLbsMolrTracking, "LbsMolrTracking"); -class CT_LbsMolrTracking : public CT_LbsHybridMOLRStep, public MTestFlowObserver +class CT_LbsMolrTracking : public CT_LbsHybridMOLRStep, public MTestFlowObserver, public MLbsPositioningStatusObserver { private: class CT_ClientData : public CBase @@ -104,6 +105,9 @@ void StopTest(); void OnSignalNetworkStep(TInt aSessionId, TInt aSessionStep); + //MLbsPositioningStatusObserver + void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus); + protected: CT_LbsMolrTracking(CT_LbsHybridMOLRServer& aParent); void ConstructL(); @@ -130,6 +134,10 @@ // =2 - MaxAge test // =3 - EarlyComplete test TInt iSpecialTestMode; + TInt iPositioningIndicatorCount; + TInt iPosStatusCount; + CLbsPositioningStatus* iLbsPositioningStatus; + CLbsPositioningStatus::TLbsPositioningStatus iPositioningStatus; }; #endif //__CT_LBS_MOLR_TRACKING_H__ diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/scripts/hybrid_ueassisted_molr_posstatus.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmolr/scripts/hybrid_ueassisted_molr_posstatus.script Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,69 @@ +// Copyright (c) 2007-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: +// + +//! @File +//! @SYMTestSuiteName LBS-HybridMOLR-UEAssistedMOLR-PosStatus +//! @SYMScriptTestEnvironment TestExecute using hybrid_ueassisted_molr_posstatus.script + + +LOAD_SUITE LbsHybridMOLRTestServer -SharedData + +PRINT Run LbsHybridMOLRTestServer + + +// Before we start LBS, select the test A-GPS integration module to use. +// Make sure the default profile is used, rather than one from the c drive +PREFIX RUN_UTILS + DeleteFile c:\private\10282253\lbs\lbsprofile.ini + MkDir c:\private\10282253\ + MkDir c:\private\10282253\lbs\ + MkDir c:\private\10282253\lbs\locmods\ +// CopyFile c:\testdata\configs\xtestmodule.ini c:\private\10282253\lbs\locmods\agpsintegmodule.ini + CopyFile c:\testdata\configs\ctagpsnpetestmoduledatasource.ini c:\private\10282253\lbs\locmods\agpsintegmodule.ini + CopyFile c:\testdata\configs\lbstestconfig.txt c:\config.txt +REMOVE_PREFIX + +// Reset admin (reset will give us the EGpsPreferTerminalBased). +RUN_TEST_STEP 010 LbsHybridMOLRTestServer LbsStep_ResetDefaultAdmin + +// Use hybrid protocol module +RUN_TEST_STEP 010 LbsHybridMOLRTestServer LbsStep_SetupProtocolStub + +// Use hybrid protocol module +RUN_TEST_STEP 010 LbsHybridMOLRTestServer LbsStep_SetupRoamSelfLocate + +RUN_TEST_STEP 030 LbsHybridMOLRTestServer LbsStep_StartLbs + +START_TESTCASE LBS-HybridMOLR-UEAssistedMOLR-PosStatus-0001 +//! @SYMTestCaseID LBS-HybridMOLR-UEAssistedMOLR-PosStatus-0001 +//! @SYMTestCaseDesc Client generates MOLR request +//! @SYMTestPriority Critical +//! @SYMTestActions See test step Sequence inline comments +//! @SYMTestExpectedResults Sequence as per specified by FSM and UML Seq diagram is Followed +//! @SYMTestType CIT +//! @SYMCreationDate 26/3/2010 +//! @SYMAuthor brsengar +RUN_TEST_STEP 010 LbsHybridMOLRTestServer LbsStep_InstallScheduler +RUN_TEST_STEP 020 LbsHybridMOLRTestServer LbsStep_SetUpPsy c:\testdata\configs\lbs_molr.ini LBS-MOLR +// Configure Hybrid AGps module options +RUN_TEST_STEP 120 LbsHybridMOLRTestServer LbsStep_ConfigHybridModule c:\testdata\configs\lbs_molr.ini UEAssistedMOLRGpsOk +RUN_TEST_STEP 120 LbsHybridMOLRTestServer LbsHybridUEAssistedNpudPosStatus +END_TESTCASE LBS-HybridMOLR-UEAssistedMOLR-PosStatus-0001 + + +RUN_TEST_STEP 020 LbsHybridMOLRTestServer LbsStep_StopLbs + +RUN_UTILS DeleteFile c:\private\10282253\lbs\locmods\agpsintegmodule.ini + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridmolrserver.cpp --- a/lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridmolrserver.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridmolrserver.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -47,6 +47,7 @@ #include "ctlbssuplmolrtbfutilesp.h" #include "ctlbsuebasedmolronesl.h" #include "ctlbsmolrerrorassistance.h" +#include "ctlbshybridueassistednpudposstatus.h" /** NewL() @@ -280,6 +281,10 @@ { return CT_LbsMolrErrorAssistance::New(*this); } + else if (aStepName == KLbsHybridUEAssistedNpudPosStatus) + { + return CT_LbsHybridUEAssistedNpudPosStatus::New(*this); + } // Let base class handle any common test steps - will return NULL if test step is not supported. return CT_LbsServer::CreateTestStep(aStepName); diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridueassistednpudposstatus.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmolr/src/ctlbshybridueassistednpudposstatus.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,431 @@ +// Copyright (c) 2007-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: +// This is the class implementation for the MO-LR - Accurate GPS Result scenario Tests +// +// + +// LBS includes. +#include +#include +#include + +// LBS test includes. +#include "ctlbshybridueassistednpudposstatus.h" +#include +#include "argutils.h" +#include + + +const TInt KN(2); // Number of times to send the measurement from GPS to NW + +/** +Static Constructor +*/ +CT_LbsHybridUEAssistedNpudPosStatus* CT_LbsHybridUEAssistedNpudPosStatus::New(CT_LbsHybridMOLRServer& aParent) + { + // Note that we do not use ELeave. + // This means that having insufficient memory will return NULL; + CT_LbsHybridUEAssistedNpudPosStatus* testStep = new CT_LbsHybridUEAssistedNpudPosStatus(aParent); + if (testStep) + { + TInt err = KErrNone; + + TRAP(err, testStep->ConstructL()); + if (err) + { + delete testStep; + testStep = NULL; + } + } + return testStep; + } + + +/** + * Constructor + */ +CT_LbsHybridUEAssistedNpudPosStatus::CT_LbsHybridUEAssistedNpudPosStatus(CT_LbsHybridMOLRServer& aParent) : CT_LbsHybridMOLRStep(aParent) + { + SetTestStepName(KLbsHybridUEAssistedNpudPosStatus); + iSessionId.SetSessionOwner(KRequestUid); + iSessionId.SetSessionNum(0x0005); + } + + +void CT_LbsHybridUEAssistedNpudPosStatus::ConstructL() + { + // Create the base class objects. + CT_LbsHybridMOLRStep::ConstructL(); + iLbsPositioningStatus = CLbsPositioningStatus::NewL(*this); + iPosStatusCount = 0; + } + + +/** + * Destructor + */ +CT_LbsHybridUEAssistedNpudPosStatus::~CT_LbsHybridUEAssistedNpudPosStatus() + { + delete iLbsPositioningStatus; + } + +// Hybrid - UE Assisted MO-LR GPS ok + +TVerdict CT_LbsHybridUEAssistedNpudPosStatus::doTestStepL() + { + INFO_PRINTF1(_L("CT_LbsHybridUEAssistedNpudPosStatus::doTestStepL()")); + + // Stop the test if the preable failed + TESTL(TestStepResult() == EPass); + + const TInt KTimeOut = 60*1000*1000; + + // Create Network Protocol Proxy + CNetProtocolProxy* proxy = CNetProtocolProxy::NewL(); + CleanupStack::PushL(proxy); + + // >> AdviceSystemStatus(0) - GetCurrentCapabilitiesResponse + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgGetCurrentCapabilitiesResponse); + CLbsNetworkProtocolBase::TLbsSystemStatus status; + TInt cleanupCnt; + cleanupCnt = proxy->GetArgsLC(ENetMsgGetCurrentCapabilitiesResponse, &status); + TESTL(status == CLbsNetworkProtocolBase::ESystemStatusNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + // Start Test Step + RPositionServer server; + TESTL(KErrNone == server.Connect()); + CleanupClosePushL(server); + + RPositioner pos; + TESTL(KErrNone == pos.Open(server)); + + CPosServerWatcher *pWatch = NULL; + TInt reason = KErrNone; + + CleanupClosePushL(pos); + // Set the max fix time for the client request to ensure the location server does not complete the request too soon during the test. + TPositionUpdateOptions posOpts(TTimeIntervalMicroSeconds(0), TTimeIntervalMicroSeconds(KMOLRFixTime)); + pos.SetUpdateOptions(posOpts); + + pWatch = CPosServerWatcher::NewLC(pos, *this); + + // Request a self-locate MoLr. + pWatch->IssueNotifyPositionUpdate(); + CheckForObserverEventTestsL(KTimeOut, *this); + //We should get Positioning Indicator flag on and may be off after that + TESTL(iPosStatusCount==1); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + + // >> RequestSelfLocation() + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestSelfLocation); + + // Process the response. + TLbsNetSessionId* sessionId = NULL; + TLbsNetPosRequestOptionsAssistance* opts = NULL; + + cleanupCnt = proxy->GetArgsLC(ENetMsgRequestSelfLocation, &sessionId, &opts); + + TBool qualitycheck = ArgUtils::CompareQuality( opts, + ETrue, + KMinHorizontalAcc, + KMinVerticalAcc, + KMOLRFixTime, + 0, + EAssistanceDataReferenceTime, + (TPositionModuleInfo::ETechnologyTerminal + | TPositionModuleInfo::ETechnologyAssisted) + ); + + TESTL(qualitycheck); + + iSessionId.SetSessionNum(sessionId->SessionNum()); + iSessionId.SetSessionOwner(sessionId->SessionOwner()); + + CleanupStack::PopAndDestroy(cleanupCnt); + sessionId = NULL; + opts = NULL; + + // << ProcessStatusUpdate(EServiceSelfLocation) + MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask activeServiceMask = MLbsNetworkProtocolObserver::EServiceSelfLocation; + proxy->CallL(ENetMsgProcessStatusUpdate, &activeServiceMask); + + // << ProcessLocationUpdate(SessionId, RefPosition) + TPositionInfo refPosInfo = ArgUtils::MolrReferencePositionInfo(); + proxy->CallL(ENetMsgProcessLocationUpdate, &iSessionId, &refPosInfo); + + // TEST: Get the ref pos app side. + CheckForObserverEventTestsL(KTimeOut, *this); + //Check for Position Status update - This event could be after reference position + //NOTE: Ref position and positioning indicator callback can be in any order + CheckForObserverEventTestsL(KTimeOut, *this); + TESTL(iPosStatusCount==2); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + + // << ProcessAssistanceData() + TLbsAsistanceDataGroup dataMask = EAssistanceDataReferenceTime; + RLbsAssistanceDataBuilderSet assistanceData; + ArgUtils::PopulateLC(assistanceData); + reason = KErrNone; + proxy->CallL(ENetMsgProcessAssistanceData, &dataMask, &assistanceData, &reason); + CleanupStack::PopAndDestroy(); // assistanceData + + // << ProcessLocationRequest(SessionId, HybridMode, alpha2) + TBool emergency = EFalse; + MLbsNetworkProtocolObserver::TLbsNetProtocolService service = MLbsNetworkProtocolObserver::EServiceSelfLocation; + TLbsNetPosRequestQuality quality = ArgUtils::Quality(); + quality.SetMaxFixTime(ArgUtils::Alpha2()); + TLbsNetPosRequestMethod method = ArgUtils::RequestHybridMethod(); + proxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method); + + // Now that the hybrid/alpha2 has been requested, record current time to verify alpha2 timer expires correctly. + TTime startTime; + startTime.HomeTime(); + + // >> RequestAssistanceData(0) + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); + cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask); + TESTL(dataMask == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + // << NotifyPositionUpdate() + pWatch->IssueNotifyPositionUpdate(); + + CheckForObserverEventTestsL(KTimeOut, *this); + //We should get Positioning Indicator flag on + TESTL(iPosStatusCount==3); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + + // >> RequestAssistanceData(0) + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); + + + cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask); + TESTL(dataMask == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + // Determine the value to take off the alpha2 value. This is required because we had to wait for the assistance data response. + TTimeIntervalMicroSeconds microseconds; + TTime stopTime; + stopTime.HomeTime(); + microseconds = stopTime.MicroSecondsFrom(startTime); + TInt64 timeElapsed = microseconds.Int64(); + TInt delta = 2 * 1000 * 1000; // 2 secs. + + // >> RespondLocationRequest() + TESTL(proxy->WaitForResponse(ArgUtils::Alpha2() - timeElapsed - delta) == ENetMsgTimeoutExpired); + + // Wait for and process the response. + TESTL(proxy->WaitForResponse(2 * delta) == ENetMsgRespondLocationRequest); // DONT get because the measurement data bus has not been created... + + sessionId = NULL; + TPositionGpsMeasurementInfo* measurementInfo = NULL; + cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &measurementInfo); + TESTL(sessionId->SessionNum() == iSessionId.SessionNum()); + TESTL(reason == KErrNone); + CleanupStack::PopAndDestroy(cleanupCnt);//sessionId, measurementInfo + + // Recv -> RequestAssistanceData - we get an extra msg as the result of the A-GPS manager re-issueing a location request when it's + // max fix time timer expries. + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); + cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask); + TESTL(dataMask == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + const TInt t = 8 * 1000 * 1000; // 8 secs. + quality.SetMaxFixTime(t); + + TPositionExtendedSatelliteInfo* positionInfo = NULL; + //TPositionInfo* positionInfo = NULL; + + for (TInt i = 0; i < KN; i++) + { + // << ProcessLocationRequest(SessionId, HybridMode, t) + proxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method); + + // >> RequestAssistanceData(0) + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); + cleanupCnt = proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask); + TESTL(dataMask == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + // >> RespondLocationRequest() - first measurement, second position. + TESTL(proxy->WaitForResponse(t + delta) == ENetMsgRespondLocationRequest); + + sessionId = NULL; + + // Expect measurement first time. + if (i < (KN-1)) + { + measurementInfo = NULL; + cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &measurementInfo); + + // Check it is measurement + TESTL(measurementInfo->PositionClassType() == EPositionGpsMeasurementInfoClass); + + // >> RequestAssistanceData - we get an extra msg as the result of the A-GPS manager re-issueing a location request when it's + // max fix time timer expries. + TESTL(proxy->WaitForResponse(KTimeOut) == ENetMsgRequestAssistanceData); + + cleanupCnt += proxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataMask); + + TESTL(dataMask == EAssistanceDataNone); + TESTL(sessionId->SessionNum() == iSessionId.SessionNum()); + TESTL(reason == KErrNone); + } + + // Expect position second time. + else + { + cleanupCnt = proxy->GetArgsLC(ENetMsgRespondLocationRequest, &sessionId, &reason, &positionInfo); + + // check it is a position + TESTL(positionInfo->PositionClassType() == (EPositionInfoClass|EPositionCourseInfoClass|EPositionSatelliteInfoClass|EPositionExtendedSatelliteInfoClass)); + TESTL(sessionId->SessionNum() == iSessionId.SessionNum()); + TESTL(reason == KErrNone); + /* Check whether ExtendedSatelliteInfo data received by protocol module is the same as data fed to the GPS module or not. + 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), + SPEED_ACCURACY(2.0),VERTICAL_SPEED_ACCURACY(3.0),HEADING_ACCURACY(10.0),COURSE_ACCURACY(4.0), + 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), + SD_OF_SEMI_MINOR_AXIS_ERROR(9.0),ORIEN_OF_SEMI_MAJOR_AXIS_ERROR(10.0),RMS_VAL_OF_SD_OF_RANGE(11.0), + GEOIDAL_SEPARATION(12.0),MAGNETIC_VARIATION(13.0),COURSE_OVER_GROUND_MAGNETIC(14.0) + GPS_TIMING_OF_CELL_MsPart(16383),GPS_TIMING_OF_CELL_LsPart(4294967295),REFERENCE_IDENTITY(511) + SFN(4095)*/ + + TPosition gpsPos; + positionInfo->GetPosition(gpsPos); + TESTL(gpsPos.Latitude()==50.2454 && gpsPos.Longitude()== 0.1668 && gpsPos.Altitude()==1.0 + && gpsPos.HorizontalAccuracy()==10 && gpsPos.VerticalAccuracy()==10); + TCourse course; + positionInfo->GetCourse(course); + + TESTL(course.Speed()==26.0 && course.VerticalSpeed()==20.0 && course.Heading()==25.0 && course.Course()==30.0 && + course.SpeedAccuracy()==2.0 && course.VerticalSpeedAccuracy()==3.0 && course.HeadingAccuracy()==10.0 && + course.CourseAccuracy()==4.0); + + TDetailedErrorReport detErrRep; + positionInfo->GetDetailedErrorReport(detErrRep); + TESTL(detErrRep.StanDeviOfLongitudeError()==5.0 && detErrRep.StanDeviOfLatiitudeError()==6.0 && + detErrRep.StanDeviOfAltitudeError()==7.0 && detErrRep.StanDeviOfSemiMajorAxisError()==8.0 && + detErrRep.StanDeviOfSemiMinorAxisError()==9.0 && detErrRep.OrientationOfSemiMajorAxisError()==10.0 && + detErrRep.RmsValOfStanDeviOfRange()==11.0); + + TGpsTimingMeasurementData gpsTimingData; + positionInfo->GetGpsTimingData(gpsTimingData); + + TESTL(gpsTimingData.DataType()== TGpsTimingMeasurementData::EGpsTimingDataTypeUtran && + gpsTimingData.NetworkMode()== TGpsTimingMeasurementData::ENetworkModeFdd && + gpsTimingData.GPSTimingOfCellMsPart()==16383 && gpsTimingData.GPSTimingOfCellLsPart()==4294967295LL && + gpsTimingData.ReferenceIdentity()==511 && gpsTimingData.Sfn()==4095); + + + TESTL(positionInfo->GeoidalSeparation()==12.0 && positionInfo->MagneticVariation()==13.0 && + positionInfo->CourseOverGroundMagnetic()==14.0); + + + // Client recv - the gps position determined by the gps module. + CheckForObserverEventTestsL(KTimeOut, *this); + // Check Positioning Status Indicator callback - + //NOTE: GPS position and positioning indicator callback can be in any order + CheckForObserverEventTestsL(KTimeOut, *this); + //We should get Positioning Indicator flag off + TESTL(iPosStatusCount==4); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + + TESTL(iState == EGpsLocReceived); + + // << ProcessLocationUpdate(SessionId, FinalNetworkPosition) + // Return modules' position as FinalNetworkPosition + proxy->CallL(ENetMsgProcessLocationUpdate, &iSessionId, positionInfo); + } + CleanupStack::PopAndDestroy(cleanupCnt);// sessionId, measurementInfo/positionInfo + } + + // << ProcessSessionComplete(SessionId, KErrNone) + reason = KErrNone; + proxy->CallL(ENetMsgProcessSessionComplete, &iSessionId, &reason); + + // << ENetMsgProcessStatusUpdate() + MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask serviceMask = MLbsNetworkProtocolObserver::EServiceNone; + proxy->CallL(ENetMsgProcessStatusUpdate, &serviceMask); + + // Wait for 10 seconds to ensure no additional responses turn up. + delta = 10 * 1000 * 1000; + TNetProtocolResponseType mType = proxy->WaitForResponse(delta); + TESTL(mType == ENetMsgTimeoutExpired); + + // Done. Now cleanup... + CleanupStack::PopAndDestroy(pWatch); + CleanupStack::PopAndDestroy(); // pos + CleanupStack::PopAndDestroy(); // server + CleanupStack::PopAndDestroy(proxy); + + return TestStepResult(); + } + + +// MPosServerObserver +void CT_LbsHybridUEAssistedNpudPosStatus::OnGetLastKnownPosition(TInt32 /*aErr*/, const TPositionInfoBase& /*aPosInfo*/) + { + TEST(EFalse); // Shouldn't see this... + ReturnToTestStep(); + } + +void CT_LbsHybridUEAssistedNpudPosStatus::OnNotifyPositionUpdate(TInt32 aErr, const TPositionInfoBase& aPosInfo) + { + // Verify error. + if (aErr == KErrCancel) + { + iState = ERefLocReceived; + } + else + { + TEST(aErr == KErrNone); + + // Verify position. + TEST(aPosInfo.PositionClassType() == EPositionInfoClass); + + // Expecting ref pos. + if (iState == EInitializing) + { + iState = ERefLocReceived; + + TEST(aPosInfo.PositionMode() == TPositionModuleInfo::ETechnologyNetwork); + + // check for refpos details + const TPositionInfo posInfo = static_cast(aPosInfo); + TESTL(ArgUtils::ComparePositionInfoToMolrRefPos(posInfo)); + } + + // Expecting network pos. + else if (iState == ERefLocReceived) + { + iState = EGpsLocReceived; + + TEST(aPosInfo.PositionMode() == (TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted)); + } + + // Not expecting anything else. + else + { + TEST(EFalse); + } + } + ReturnToTestStep(); + } + +void CT_LbsHybridUEAssistedNpudPosStatus::OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus) + { + iPosStatusCount++; + iPositioningStatus = aPositioningStatus; + ReturnToTestStep(); + } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/src/ctlbsmolrtracking.cpp --- a/lbstest/lbstestproduct/lbshybridmolr/src/ctlbsmolrtracking.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/src/ctlbsmolrtracking.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -84,6 +84,9 @@ { // Create the base class objects. CT_LbsHybridMOLRStep::ConstructL(); + iLbsPositioningStatus = CLbsPositioningStatus::NewL(*this); + iPosStatusCount = 0; + iPositioningStatus = CLbsPositioningStatus::ELbsPositioningStatusNotActive; } /** @@ -91,6 +94,7 @@ */ CT_LbsMolrTracking::~CT_LbsMolrTracking() { + delete iLbsPositioningStatus; TRAP_IGNORE(doTestStepPostambleL()); } @@ -232,6 +236,16 @@ TEST(EFalse); } + _LIT(KPositioningIndicator, "PositioningIndicator"); + TInt positioningIndicatorCount; + if(GetIntFromConfig(ConfigSection(), KPositioningIndicator, positioningIndicatorCount)) + { + iPositioningIndicatorCount = positioningIndicatorCount; + } + else + { + iPositioningIndicatorCount = 0; + } // Get the SpecialTestModemode setting ... 0 means not in a LastKnownPosition mode _LIT(KLastKnownPosition, "SpecialTestMode"); @@ -274,6 +288,11 @@ TVerdict CT_LbsMolrTracking::doTestStepPostambleL() { INFO_PRINTF1(_L(">>CT_LbsMolrTracking::doTestStepPostambleL()")); + if(iPositioningIndicatorCount>0) + { + TESTL(iPositioningIndicatorCount==iPosStatusCount); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + } iClients.ResetAndDestroy(); iClientTestManagers.ResetAndDestroy(); @@ -389,7 +408,11 @@ INFO_PRINTF2(_L("Client number %d received a position"), aObjectId); INFO_PRINTF3(_L("Client now has %d of %d positions"), positionsReceived+1, numberOfNPUDs); - + if(iPositioningIndicatorCount>0) + { + TESTL(iPosStatusCount==1); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + } if (iSpecialTestMode == 2) { @@ -726,3 +749,8 @@ CleanupStack::PopAndDestroy(moduleUpdate); CleanupStack::PopAndDestroy(db); } +void CT_LbsMolrTracking::OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus) + { + iPosStatusCount++; + iPositioningStatus = aPositioningStatus; + } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmolr/testdata/lbs_molr_tracking.ini --- a/lbstest/lbstestproduct/lbshybridmolr/testdata/lbs_molr_tracking.ini Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmolr/testdata/lbs_molr_tracking.ini Tue Aug 31 16:38:06 2010 +0300 @@ -9,6 +9,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 15, interval = 5s, time out = 3s, max age = 0s, accept partial = false @@ -24,6 +25,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 8, interval = 10s, time out = 5s, max age = 0s, accept partial = false @@ -39,6 +41,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, interval = 5s, time out = 3s, max age = 0s, accept partial = false @@ -57,6 +60,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 15, interval = 5s, time out = 3s, max age = 0s, accept partial = false @@ -72,6 +76,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 8, interval = 10s, time out = 5s, max age = 0s, accept partial = false @@ -87,6 +92,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, interval = 5s, time out = 3s, max age = 0s, accept partial = false @@ -167,6 +173,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -183,6 +190,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -198,6 +206,7 @@ // It is expected that the network will return the position PositionOriginator = 2 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -213,6 +222,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -229,6 +239,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -245,6 +256,7 @@ // It is expected that the module will return the position PositionOriginator = 1 expected_api_behaviour = 1 +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 2, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = true, cancel session ID = 2, cancel session step = 1 @@ -266,6 +278,7 @@ $modulemodes,3* // PTB $modulemodes,1* +PositioningIndicator = 2 // The client information @@ -290,6 +303,7 @@ $modulemodes,1* // Auto $modulemodes,3* +PositioningIndicator = 2 // The client information // first client: session ID delay = 0, session step delay = 0, NPUDs = 5, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = false(, cancel session id = 0, cancel step id = 0), psy uid = agps module @@ -310,6 +324,7 @@ // The module should be set to ATA and then not set again // ATA $modulemodes,4* +PositioningIndicator = 2 // The client information @@ -317,6 +332,3 @@ $clientdetails,0,0,3,5000000,3000000,0,false,false,0,0,270526860* // second client: session ID delay = 1, session step delay = 0, NPUDs = 1, interval = 5s, time out = 3s, max age = 0s, accept partial = false, cancel = false(, cancel session id = 0, cancel step id = 0), psy uid = gps module, expected error = KErrInUse $clientdetails,1,0,1,5000000,3000000,0,false,false,0,0,270526858,-14* - - - diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/group/bld.inf --- a/lbstest/lbstestproduct/lbshybridmtlr/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmtlr/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -26,6 +26,7 @@ ../scripts/mtlr_reset_assistance.script c:/testdata/scripts/mtlr_reset_assistance.script ../scripts/mtlr_network_induced.script c:/testdata/scripts/mtlr_network_induced.script ../scripts/lbs_oom.script c:/testdata/scripts/lbs_oom.script +../scripts/hybrid_ueassisted_mtlr_posstatus.script c:/testdata/scripts/hybrid_ueassisted_mtlr_posstatus.script ../testdata/lbs_mtlr.ini c:/testdata/configs/lbs_mtlr.ini diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/group/ctlbshybridmtlrserver.mmp --- a/lbstest/lbstestproduct/lbshybridmtlr/group/ctlbshybridmtlrserver.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmtlr/group/ctlbshybridmtlrserver.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -47,6 +47,7 @@ SOURCE ctlbsmtlrresetassistance.cpp SOURCE ctlbsnetworkinducedmtlr.cpp SOURCE ctlbsoom.cpp +SOURCE ctlbshybridueassistedmtlrposstatus.cpp // LBS libraries. LIBRARY lbs.lib @@ -61,6 +62,7 @@ LIBRARY lbsinternalapi.lib LIBRARY lbspartnercommon.lib LIBRARY lbsdebug.lib +LIBRARY lbspositioningstatus.lib // LBS test libraries. LIBRARY lbstestutils.lib LIBRARY lbstestclient.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/inc/ctlbshybridueassistedmtlrposstatus.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmtlr/inc/ctlbshybridueassistedmtlrposstatus.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,76 @@ +// Copyright (c) 2007-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: +// This contains the header file for MTLR UE Assisted GPS ok +// +// + +#ifndef __CT_LBS_HYBRID_UEASSISTED_MTLR_POS_STATUS_H__ +#define __CT_LBS_HYBRID_UEASSISTED_MTLR_POS_STATUS_H__ + +// LBS includes. +#include +#include +#include +#include + +// LBS test includes. +#include "ctlbshybridmtlrstep.h" +#include +#include "lbs/lbspositioningstatus.h" + + +// Literals used +_LIT(KLbsHybridUEAssistedMTLRPosStatus,"LbsHybridUEAssistedMTLRPosStatus"); + +class CT_LbsHybridUEAssistedMTLRPosStatus: public CT_LbsHybridMTLRStep, public MLbsPrivacyObserver, public MLbsPositioningStatusObserver +{ +public: + static CT_LbsHybridUEAssistedMTLRPosStatus* New(CT_LbsHybridMTLRServer& aParent); + enum TVerdict doTestStepL(); + ~CT_LbsHybridUEAssistedMTLRPosStatus(); + +protected: + // from MLbsPrivacyObserver + void ProcessNetworkLocationRequest(TUint aRequestId, const TLbsExternalRequestInfo& aRequestInfo, const TNotificationType& aNotificationType); + void ProcessNetworkPositionUpdate(TUint aRequestId, const TPositionInfo& aPosInfo); + void ProcessRequestComplete(TUint aRequestId, TInt aReason); + + //MLbsPositioningStatusObserver + void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus); + +protected: + CT_LbsHybridUEAssistedMTLRPosStatus(CT_LbsHybridMTLRServer& aParent); + void ConstructL(); + +private: + enum TState + { + EInitializing, + EPrivacyCheckOk, + ERefLocReceived, + EGpsLocReceived, + ERequestComplete + }; + + TState iState; + TLbsNetSessionId iSessionId; + CLbsPrivacyController* iController; + CNetProtocolProxy* iProxy; + + CLbsPositioningStatus* iLbsPostioningStatus; + TInt iPosStatusCount; + CLbsPositioningStatus::TLbsPositioningStatus iPositioningStatus; +}; + +#endif //__CT_LBS_HYBRID_UEASSISTED_MTLR_POS_STATUS_H__ diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/scripts/hybrid_ueassisted_mtlr_posstatus.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmtlr/scripts/hybrid_ueassisted_mtlr_posstatus.script Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,75 @@ +// Copyright (c) 2007-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: +// + +LOAD_SUITE LbsHybridMTLRTestServer -SharedData + +PRINT Run LbsHybridMTLRTestServer + + +// Before we start LBS, select the test A-GPS integration module to use. +PREFIX RUN_UTILS + MkDir c:\private\10282253\ + MkDir c:\private\10282253\lbs\ + MkDir c:\private\10282253\lbs\locmods\ +// CopyFile c:\testdata\configs\xtestmodule.ini c:\private\10282253\lbs\locmods\agpsintegmodule.ini + CopyFile c:\testdata\configs\ctagpsnpetestmoduledatasource.ini c:\private\10282253\lbs\locmods\agpsintegmodule.ini + CopyFile c:\testdata\configs\lbstestconfig.txt c:\config.txt +REMOVE_PREFIX + +// Reset admin (reset will give us the EGpsPreferTerminalBased). +RUN_TEST_STEP 010 LbsHybridMTLRTestServer LbsStep_ResetDefaultAdmin + +// Select MTLR privacy controller. +RUN_TEST_STEP 010 LbsHybridMTLRTestServer LbsStep_SetPrivacyHandler c:\testdata\configs\lbs_mtlr.ini PrivHandler + +// Use hybrid protocol module +RUN_TEST_STEP 010 LbsHybridMTLRTestServer LbsStep_SetupProtocolStub + +RUN_TEST_STEP 030 LbsHybridMTLRTestServer LbsStep_StartLbs + + + +START_TESTCASE LBS-HybridMTLR-UEAssistedMTLR-PosStatus-0001 +//!@SYMTestCaseID LBS-HybridMTLR-UEAssistedMTLR-PosStatus-0001 + +//!@SYMTestCaseDesc MTLR Request received +//! GPS Module generates an accurate position in UE Assisted Mode +//! See: lbshybridmtlr/documentation/mtlr.htm#HybridUEAssistedMTLRAccurate +//! +//! +//!@SYMTestActions +//! See test step Sequence inline comments +//! +//! +//!@SYMTestExpectedResults Sequence as per specified by FSM and UML Seq diagram is Followed +//!@SYMPREQ PREQ1624 +//!@SYMREQ REQ1624.xyz +//! +//!@SYMTestType CIT +//!@SYMTestPriority 1 +//!@SYMTestStatus Implemented. + +RUN_TEST_STEP 010 LbsHybridMTLRTestServer LbsStep_InstallScheduler + +// Configure Hybrid AGps module options +RUN_TEST_STEP 120 LbsHybridMTLRTestServer LbsStep_ConfigHybridModule c:\testdata\configs\lbs_mtlr.ini HybridUEAssistedMTLRGPSOK + +RUN_TEST_STEP 120 LbsHybridMTLRTestServer LbsHybridUEAssistedMTLRPosStatus + +END_TESTCASE LBS-HybridMTLR-UEAssistedMTLR-PosStatus-0001 + + + +RUN_TEST_STEP 020 LbsHybridMTLRTestServer LbsStep_StopLbs diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/src/ctlbshybridmtlrserver.cpp --- a/lbstest/lbstestproduct/lbshybridmtlr/src/ctlbshybridmtlrserver.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbshybridmtlr/src/ctlbshybridmtlrserver.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -35,6 +35,8 @@ #include "ctlbsmtlrresetassistance.h" #include "ctlbsnetworkinducedmtlr.h" #include "ctlbsoom.h" +#include "ctlbshybridueassistedmtlrposstatus.h" + /** MainL() Description : This is the main function which installs the @@ -220,6 +222,11 @@ { return CT_LbsOom::New(*this); } + else if (aStepName == KLbsHybridUEAssistedMTLRPosStatus) + { + return CT_LbsHybridUEAssistedMTLRPosStatus::New(*this); + } + // Let base class handle any common test steps - will return NULL if test step is not supported. return CT_LbsServer::CreateTestStep(aStepName); } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbshybridmtlr/src/ctlbshybridueassistedmtlrposstatus.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbshybridmtlr/src/ctlbshybridueassistedmtlrposstatus.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,282 @@ +// Copyright (c) 2007-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: +// + +// LBS includes. +#include +#include +#include + +// LBS test includes. +#include "ctlbshybridueassistedmtlrposstatus.h" +#include +#include "argutils.h" +#include + + + +/** +Static Constructor +*/ +CT_LbsHybridUEAssistedMTLRPosStatus* CT_LbsHybridUEAssistedMTLRPosStatus::New(CT_LbsHybridMTLRServer& aParent) + { + // Note that we do not use ELeave. + // This means that having insufficient memory will return NULL; + CT_LbsHybridUEAssistedMTLRPosStatus* testStep = new CT_LbsHybridUEAssistedMTLRPosStatus(aParent); + if (testStep) + { + TInt err = KErrNone; + + TRAP(err, testStep->ConstructL()); + if (err) + { + delete testStep; + testStep = NULL; + } + } + return testStep; + } + + +/** + * Constructor + */ +CT_LbsHybridUEAssistedMTLRPosStatus::CT_LbsHybridUEAssistedMTLRPosStatus(CT_LbsHybridMTLRServer& aParent) : CT_LbsHybridMTLRStep(aParent) + { + SetTestStepName(KLbsHybridUEAssistedMTLRPosStatus); + iState = EInitializing; + iSessionId.SetSessionOwner(KRequestUid); + iSessionId.SetSessionNum(0x0005); + } + + +void CT_LbsHybridUEAssistedMTLRPosStatus::ConstructL() + { + // Create the base class objects. + CT_LbsHybridMTLRStep::ConstructL(); + iController = CLbsPrivacyController::NewL(*this); + iProxy = CNetProtocolProxy::NewL(); + iLbsPostioningStatus = CLbsPositioningStatus::NewL(*this); + iPosStatusCount = 0; + } + + +/** + * Destructor + */ +CT_LbsHybridUEAssistedMTLRPosStatus::~CT_LbsHybridUEAssistedMTLRPosStatus() + { + delete iLbsPostioningStatus; + delete iController; + delete iProxy; + } + + +TVerdict CT_LbsHybridUEAssistedMTLRPosStatus::doTestStepL() + { + INFO_PRINTF1(_L("CT_LbsHybridUEAssistedMTLRPosStatus::doTestStepL()")); + // Stop the test if the preamble failed + TESTL(TestStepResult() == EPass); + + const TInt KTimeOut = 60*1000*1000; + const TInt KAdviceSystemStatusTimeout = 40*1000*1000; + const TInt KSmallTimeOut = 3*1000*1000; + + // >> AdviceSystemStatus(0) + TESTL(iProxy->WaitForResponse(KAdviceSystemStatusTimeout) == ENetMsgGetCurrentCapabilitiesResponse); + CLbsNetworkProtocolBase::TLbsSystemStatus status; + TInt cleanupCnt; + cleanupCnt = iProxy->GetArgsLC(ENetMsgGetCurrentCapabilitiesResponse, &status); + TESTL(status == CLbsNetworkProtocolBase::ESystemStatusNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + // Initiate MTLR Start + // << ProcessStatusUpdate() + MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask activeServiceMask = MLbsNetworkProtocolObserver::EServiceMobileTerminated; + iProxy->CallL(ENetMsgProcessStatusUpdate, &activeServiceMask); + + // << ProcessPrivacyRequest() + const TBool emergency = ETrue; + TLbsNetPosRequestPrivacy privacy = ArgUtils::Privacy(); + TLbsExternalRequestInfo requestInfo = ArgUtils::RequestInfo(); + iProxy->CallL(ENetMsgProcessPrivacyRequest, &iSessionId, &emergency, &privacy, &requestInfo); + + // >> Callback from RespondNetworkLocationRequest(ERequestAccepted) + CheckForObserverEventTestsL(KTimeOut, *this); + + // Since its emergency request, Position request must be accepted and we should get UI indicator on + CheckForObserverEventTestsL(KTimeOut, *this); + TESTL(iPosStatusCount==1); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + + // >> Respond Privacy Request + TESTL(iProxy->WaitForResponse(KTimeOut) == ENetMsgRespondPrivacyRequest); + TLbsNetSessionId* getSessionId = NULL; + CLbsNetworkProtocolBase::TLbsPrivacyResponse getPrivacy; + cleanupCnt = iProxy->GetArgsLC(ENetMsgRespondPrivacyRequest, &getSessionId, &getPrivacy); + TESTL(getSessionId->SessionNum()==iSessionId.SessionNum()); + TESTL(getPrivacy==CLbsNetworkProtocolBase::EPrivacyResponseAccepted); + CleanupStack::PopAndDestroy(cleanupCnt);//getSessionId + // Initiate MTLR End + + // MTLR Reference Position Notification Start + // << ProcessLocationUpdate() + TPositionInfo positionInfo = ArgUtils::ReferencePositionInfo(); + iProxy->CallL(ENetMsgProcessLocationUpdate, &iSessionId, &positionInfo); + // MTLR Reference Position Notification Stop + + // MTLR Assistance Data Notification Start + // << ProcessAssistanceData() + TLbsAsistanceDataGroup dataRequestMask = EAssistanceDataReferenceTime; + RLbsAssistanceDataBuilderSet assistanceData; + ArgUtils::PopulateLC(assistanceData); + TInt reason = KErrNone; + iProxy->CallL(ENetMsgProcessAssistanceData, &dataRequestMask, &assistanceData, &reason); + CleanupStack::PopAndDestroy(); //assistanceData + // MTLR Assistance Data Notification Stop + + // MTLR Network Location Request Start + // << ProcessLocationRequest() + MLbsNetworkProtocolObserver::TLbsNetProtocolService service = MLbsNetworkProtocolObserver::EServiceMobileTerminated; + TLbsNetPosRequestQuality quality = ArgUtils::QualityAlpha2(); + TLbsNetPosRequestMethod method = ArgUtils::RequestHybridMethod(); + iProxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method); + // MTLR Network Location Request Stop + + //Start the timer + TTime timerStart; + timerStart.HomeTime(); + + // >> Callback from ProcessNetworkPostionUpdate(refPosition) + CheckForObserverEventTestsL(KSmallTimeOut, *this); + + // >> RequestAssistanceData(0) + TESTL(iProxy->WaitForResponse(KSmallTimeOut) == ENetMsgRequestAssistanceData); + TLbsAsistanceDataGroup dataGroup; + cleanupCnt = iProxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataGroup); + TESTL(dataGroup == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + //Find the time elapsed from timer + TTimeIntervalMicroSeconds microseconds; + TTime timerStop; + timerStop.HomeTime(); + microseconds = timerStop.MicroSecondsFrom(timerStart); + TInt64 timeElapsed = microseconds.Int64(); + + // >> RespondLocationRequest() + //Test that we do not get response before alpha2 has expired + TESTL(iProxy->WaitForResponse(KAlpha2Timeout-timeElapsed-KDelta) == ENetMsgTimeoutExpired); + TESTL(iProxy->WaitForResponse(2*KDelta) == ENetMsgRespondLocationRequest); + + getSessionId = NULL; + TInt getReason = KErrNone; + TPositionSatelliteInfo* getPositionInfo = NULL; + cleanupCnt = iProxy->GetArgsLC(ENetMsgRespondLocationRequest, &getSessionId, &getReason, &getPositionInfo); + TESTL(getSessionId->SessionNum() == iSessionId.SessionNum()); + TESTL(getReason==KErrNone); + CleanupStack::PopAndDestroy(cleanupCnt); //getSessionId,getPositionInfo + + //NHR's timer alpha2 times out -> Hybrid Positioning Start + //<< ProcessLocationRequest() + quality = ArgUtils::Quality(); //Set timeout to t + iProxy->CallL(ENetMsgProcessLocationRequest, &iSessionId, &emergency, &service, &quality, &method); + + // >> RequestAssistanceData(0) + TESTL(iProxy->WaitForResponse(KSmallTimeOut) == ENetMsgRequestAssistanceData); + cleanupCnt = iProxy->GetArgsLC(ENetMsgRequestAssistanceData, &dataGroup); + TESTL(dataGroup == EAssistanceDataNone); + CleanupStack::PopAndDestroy(cleanupCnt); + + // >> RespondLocationRequest() + TESTL(iProxy->WaitForResponse(KTTimeout) == ENetMsgRespondLocationRequest); + getSessionId = NULL; + getReason = KErrNone; + getPositionInfo = NULL; + cleanupCnt = iProxy->GetArgsLC(ENetMsgRespondLocationRequest, &getSessionId, &getReason, &getPositionInfo); + TESTL(getSessionId->SessionNum() == iSessionId.SessionNum()); + TESTL(getReason==KErrNone); + CleanupStack::PopAndDestroy(cleanupCnt);//getSessionId,getPositionInfo + + //<< ProcessNetworkPositionUpdate() | GPS Pos[Accurate Fix] + CheckForObserverEventTestsL(KTimeOut, *this); + TESTL(iState==EGpsLocReceived); + + // MTLR Session Completion Start + // << ProcessSessionComplete() + reason = KErrNone; + iProxy->CallL(ENetMsgProcessSessionComplete, &iSessionId, &reason); + + // << ProcessStatusUpdate() + MLbsNetworkProtocolObserver::TLbsNetProtocolServiceMask activeServiceMask2 = MLbsNetworkProtocolObserver::EServiceNone; + iProxy->CallL(ENetMsgProcessStatusUpdate, &activeServiceMask2); + + // >> Callback from ProcessRequestComplete() + CheckForObserverEventTestsL(KTimeOut, *this); + + CheckForObserverEventTestsL(KTimeOut, *this); + TESTL(iPosStatusCount==2); + TESTL(iPositioningStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + + // Verify that the last callback was to ProcessSessionComplete() + TESTL(iState==ERequestComplete); + // MTLR Session Completion Stop + + return TestStepResult(); + } + +void CT_LbsHybridUEAssistedMTLRPosStatus::ProcessNetworkLocationRequest(TUint aRequestId, const TLbsExternalRequestInfo& /*aRequestInfo*/, const TNotificationType& /*aNotificationType*/) + { + INFO_PRINTF1(_L(">>CT_LbsHybridUEAssistedMTLRPosStatus::ProcessNetworkLocationRequest()")); + TEST(iState==EInitializing); + iController->RespondNetworkLocationRequest(aRequestId, CLbsPrivacyController::ERequestAccepted); + iState = EPrivacyCheckOk; + ReturnToTestStep(); + } + +void CT_LbsHybridUEAssistedMTLRPosStatus::ProcessNetworkPositionUpdate(TUint /*aRequestId*/, const TPositionInfo& aPosInfo) + { + if(iState==EPrivacyCheckOk) + { + iState=ERefLocReceived; + INFO_PRINTF1(_L(">>CT_LbsHybridUEAssistedMTLRPosStatus::ProcessNetworkPositionUpdate(RefPosition)")); + } + else if(iState==ERefLocReceived) + { + // Test for $update,1,2,51.5015,-0.105,50,2,3* + TPosition getPos; + aPosInfo.GetPosition(getPos); + if(getPos.Latitude()==51.5015 && getPos.Longitude()==-0.105 && getPos.Altitude()==50 && getPos.HorizontalAccuracy()==2 && getPos.VerticalAccuracy()==3) + { + INFO_PRINTF1(_L(">>CT_LbsHybridUEAssistedMTLRPosStatus::ProcessNetworkPositionUpdate(GpsPosition)")); + iState=EGpsLocReceived; + } + } + ReturnToTestStep(); + } + +void CT_LbsHybridUEAssistedMTLRPosStatus::ProcessRequestComplete(TUint /*aRequestId*/, TInt /*aReason*/) + { + INFO_PRINTF1(_L(">>CT_LbsHybridUEAssistedMTLRPosStatus::ProcessRequestComplete()")); + TEST(iState==EGpsLocReceived); + iState=ERequestComplete; + ReturnToTestStep(); + } + +void CT_LbsHybridUEAssistedMTLRPosStatus::OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus) + { + iPosStatusCount++; + iPositioningStatus = aPositioningStatus; + ReturnToTestStep(); + } diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbstestutils/EABI/LbsTestUtilsU.DEF --- a/lbstest/lbstestproduct/lbstestutils/EABI/LbsTestUtilsU.DEF Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbstestutils/EABI/LbsTestUtilsU.DEF Tue Aug 31 16:38:06 2010 +0300 @@ -92,4 +92,5 @@ _ZN10T_LbsUtils38ResetIntegrationModulesCountOfCancelsLEv @ 91 NONAME _ZN10T_LbsUtils41IncrementIntegrationModulesCountOfCancelsEv @ 92 NONAME _ZN17CT_LbsAGpsHandler28SendImmediateMeasurementsMsgERKi @ 93 NONAME + _ZN10T_LbsUtils15Compare_LogBaseERK12CLbsLogEventS2_ @ 94 NONAME diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/lbstestutils/src/tlbsutils.cpp --- a/lbstest/lbstestproduct/lbstestutils/src/tlbsutils.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/lbstestutils/src/tlbsutils.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -1141,7 +1141,7 @@ /** * Method for comparing base class member variables in Logevent types */ -TBool T_LbsUtils::Compare_LogBase(const CLbsLogEvent& aLogEventSideA, const CLbsLogEvent& aLogEventSideB) +EXPORT_C TBool T_LbsUtils::Compare_LogBase(const CLbsLogEvent& aLogEventSideA, const CLbsLogEvent& aLogEventSideB) { if(aLogEventSideA.Direction() != aLogEventSideB.Direction()) return EFalse; diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMolrSuite.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMolrSuite.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMolrSuite.xml Tue Aug 31 16:38:06 2010 +0300 @@ -21,6 +21,7 @@ lbshybridmolr_uebased_values lbshybridmolr_uebased_partial lbshybridmolr_error_assistance + hybrid_ueassisted_molr_posstatus LbsHybridMOLRTestServer diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMolrSuite/hybrid_ueassisted_molr_posstatus.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMolrSuite/hybrid_ueassisted_molr_posstatus.xml Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,23 @@ + + + + + + hybrid_ueassisted_molr_posstatus + 600 + + + + + LbsHybridMOLRTestServer + + + + lbstest\lbstestproduct\lbshybridmolr\testdata\lbs_molr.ini + c:\testdata\configs\lbs_molr.ini + + + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMtlrSuite.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMtlrSuite.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMtlrSuite.xml Tue Aug 31 16:38:06 2010 +0300 @@ -4,6 +4,7 @@ LbsHybridMtlrSuite + hybrid_ueassisted_mtlr_posstatus lbshybridmtlr_uebased lbshybridmtlr_ueassisted_gps_ok lbshybridmtlr_ueassisted_no_gps diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMtlrSuite/hybrid_ueassisted_mtlr_posstatus.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsIntegrationSuite/LbsHybridMtlrSuite/hybrid_ueassisted_mtlr_posstatus.xml Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,23 @@ + + + + + + hybrid_ueassisted_mtlr_posstatus + 600 + + + + + LbsHybridMTLRTestServer + + + + lbstest\lbstestproduct\lbshybridmtlr\testdata\lbs_mtlr.ini + c:\testdata\configs\lbs_mtlr.ini + + + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsPrivacySuite/LbsUnitSuite/te_lbsnetworkprivacySuite/testexecuteservers/te_networkprivacySuite.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsPrivacySuite/LbsUnitSuite/te_lbsnetworkprivacySuite/testexecuteservers/te_networkprivacySuite.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsPrivacySuite/LbsUnitSuite/te_lbsnetworkprivacySuite/testexecuteservers/te_networkprivacySuite.xml Tue Aug 31 16:38:06 2010 +0300 @@ -9,7 +9,7 @@ te_dummynetgateway.exe c:\sys\bin\te_dummynetgateway.exe te_dummynetgateway.mmp - networkprotocolmodules\privacyprotocolmodule\test\te_dummynetgateway\group\BLD.INF + networkprotocolmodules\privacyprotocolmodule\test\te_dummynetgateway\group\bld.inf diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite.xml Tue Aug 31 16:38:06 2010 +0300 @@ -135,36 +135,6 @@ networkpsy2.mmp locationrequestmgmt\locationserver\lbstestpsys\networkpsy2\group\bld.inf - - - lbstestlocmonitorapi.dll - c:\system\libs\lbstestlocmonitorapi.dll - lbstestlocmonitorapi.mmp - locationrequestmgmt\locationserver\test\testLocMonitorApi\group\bld.inf - - - - testlocmonitorserver.exe - c:\sys\bin\testlocmonitorserver.exe - testlocmonitorserver.mmp - locationrequestmgmt\locationserver\test\testLocMonitorServer\group\bld.inf - - - - testlocserver.exe - c:\sys\bin\testlocserver.exe - testlocserver.mmp - locationrequestmgmt\locationserver\test\testLocServer\group\bld.inf - - - - testlocationmonitor.exe - c:\sys\bin\testlocationmonitor.exe - testlocationmonitor.mmp - locationmgmt\locmonitor\test\testlocationmonitor\group\bld.inf - - - diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsagpspsysuite/te_lbsagpspsytest.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsagpspsysuite/te_lbsagpspsytest.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsagpspsysuite/te_lbsagpspsytest.xml Tue Aug 31 16:38:06 2010 +0300 @@ -22,29 +22,29 @@ c:\testdata\configs\te_lbsagpspsy.ini - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_exclusive.ini - c:\testdata\configs\te_lbsagpspsy_devicecaps_exclusive.ini + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_exclusive.ini + c:\testdata\configs\te_lbsagpspsy_devicecaps_exclusive.ini - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_simultaneous.ini - c:\testdata\configs\te_lbsagpspsy_devicecaps_simultaneous.ini + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_simultaneous.ini + c:\testdata\configs\te_lbsagpspsy_devicecaps_simultaneous.ini - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_ta.ini - c:\testdata\configs\te_lbsagpspsy_devicecaps_ta.ini + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_ta.ini + c:\testdata\configs\te_lbsagpspsy_devicecaps_ta.ini - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_tb.ini - c:\testdata\configs\te_lbsagpspsy_devicecaps_tb.ini - + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_devicecaps_tb.ini + c:\testdata\configs\te_lbsagpspsy_devicecaps_tb.ini + - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_lbsprofile.ini - c:\testdata\configs\te_lbsagpspsy_lbsprofile.ini - + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_lbsprofile.ini + c:\testdata\configs\te_lbsagpspsy_lbsprofile.ini + - datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_agpsintegmodule.ini - c:\testdata\configs\te_lbsagpspsy_agpsintegmodule.ini - + datasourcemodules\gpspositioningmodule\lbsagpspsy\test\testdata\te_lbsagpspsy_agpsintegmodule.ini + c:\testdata\configs\te_lbsagpspsy_agpsintegmodule.ini + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsgpspsysuite/te_lbsgpspsytest.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsgpspsysuite/te_lbsgpspsytest.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbsgpspsysuite/te_lbsgpspsytest.xml Tue Aug 31 16:38:06 2010 +0300 @@ -17,15 +17,15 @@ - + datasourcemodules\gpspositioningmodule\lbsgpspsy\test\testdata\te_lbsgpspsy.ini c:\testdata\configs\te_lbsgpspsy.ini - + datasourcemodules\gpspositioningmodule\lbsgpspsy\test\testdata\te_lbsgpspsy_agpsintegmodule.ini c:\testdata\configs\te_lbsgpspsy_agpsintegmodule.ini - + datasourcemodules\gpspositioningmodule\lbsgpspsy\test\testdata\te_lbsgpspsy_lbsprofile.ini c:\testdata\configs\te_lbsgpspsy_lbsprofile.ini diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbslocationinfoconvertersuite/te_lbslocationinfoconvertertest.xml --- a/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbslocationinfoconvertersuite/te_lbslocationinfoconvertertest.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbslocationinfoconvertersuite/te_lbslocationinfoconvertertest.xml Tue Aug 31 16:38:06 2010 +0300 @@ -3,7 +3,7 @@ te_lbslocationinfoconvertertest - 1240 + 240 + + + te_lbspositioningstatussuite + + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbspositioningstatussuite/testexecuteservers/te_lbspositioningstatussuite.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/tdxml/LbsSuite/LbsUnitSuite/te_lbspositioningstatussuite/testexecuteservers/te_lbspositioningstatussuite.xml Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,6 @@ + + + te_lbspositioningstatussuite + te_lbspositioningstatus.mmp + locationmgmt\locationcore\lbspositioningstatus\test\te_lbspositioningstatus\group\bld.inf + diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/bld.inf --- a/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -27,7 +27,10 @@ ../testdata/te_lbsbtgpspsy.ini c:/testdata/configs/te_lbsbtgpspsy.ini -../testdata/featuredatabase.xml /epoc32/rom/include/featuredatabase.xml + +//comment out: default featuredatabase.xml file does want we want..i.e includes the by psy. +//../testdata/featuredatabase.xml /epoc32/rom/include/featuredatabase.xml + ./te_lbsbtgpspsy.iby /epoc32/rom/include/te_lbsbtgpspsy.iby diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/te_lbsbtgpspsy.mmp --- a/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/te_lbsbtgpspsy.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/group/te_lbsbtgpspsy.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -67,7 +67,6 @@ LIBRARY efsrv.lib // File server LIBRARY lbs.lib // Location acquisition API -LIBRARY cntmodel.lib // contact db LIBRARY btextnotifiers.lib LIBRARY btdevice.lib diff -r 29dbbeac905d -r 0c2046328c85 lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/testdata/featuredatabase.xml --- a/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/testdata/featuredatabase.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/lbstestproduct/ut/lbsgpsdatasourcemodules/lbslocbtgpspsy/te_lbsbtgpspsy/testdata/featuredatabase.xml Tue Aug 31 16:38:06 2010 +0300 @@ -46,19 +46,19 @@ - + - + - + - + - + @@ -76,32 +76,32 @@ - + - + - + - + - + - + - + @@ -109,8 +109,8 @@ - - + + @@ -125,16 +125,16 @@ - + - + - + - + @@ -147,12 +147,6 @@ - - - - - - diff -r 29dbbeac905d -r 0c2046328c85 lbstest/locationprotocoltest/group/BLD.INF --- a/lbstest/locationprotocoltest/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/lbstest/locationprotocoltest/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -15,7 +15,7 @@ // Main projects, in build order #include "../../../networkprotocolmodules/networkprotocolmodule/LbsAssistanceDataSourceInterface/group/bld.inf" -#include "../../../networkprotocolmodules/networkprotocolmodule/LbsNetSim/group/BLD.INF" +#include "../../../networkprotocolmodules/networkprotocolmodule/LbsNetSim/group/bld.inf" #include "../../../networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/group/bld.inf" #include "../../../networkprotocolmodules/networkprotocolmodule/suplasn1/group/bld.inf" #include "../../../networkprotocolmodules/networkprotocolmodule/LbsSuplTestProtocol/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/GPSClock/group/BLD.INF --- a/locationmgmt/locationcore/GPSClock/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/GPSClock/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -13,4 +13,4 @@ // Description: // -#include "../GpsSetClock/group/BLD.INF" +#include "../GpsSetClock/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsADataCache/group/BLD.INF --- a/locationmgmt/locationcore/LbsADataCache/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsADataCache/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -24,4 +24,4 @@ lbsadatacache.mmp PRJ_TESTMMPFILES -#include "../test/group/BLD.INF" +#include "../test/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/group/BLD.INF --- a/locationmgmt/locationcore/LbsClient/LbsApi/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -38,7 +38,6 @@ ../inc/lbs.inl SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(lbs.inl) ../inc/LbsPositionCalc.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(lbspositioncalc.h) ../inc/LbsGpsMeasurement.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/lbsgpsmeasurement.h) -../inc/lbsvariant.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbsvariant.h) ../inc/LbsAreaInfo.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(lbsareainfo.h) PRJ_MMPFILES diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsCommon.h --- a/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsCommon.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsCommon.h Tue Aug 31 16:38:06 2010 +0300 @@ -21,7 +21,6 @@ #include #include #include -#include /** @publishedAll @@ -40,9 +39,8 @@ @released Maximum characters in module name. -If __S60_ is defined in lbsvariant.h the constant is 64 otherwise it is 20 */ -const TInt KPositionMaxModuleName = __LBS_MAX_MODULE_NAME; +const TInt KPositionMaxModuleName = 64; /** @publishedAll diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsErrors.h --- a/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsErrors.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsErrors.h Tue Aug 31 16:38:06 2010 +0300 @@ -17,7 +17,6 @@ #define __LBSERRORS_H__ #include -#include /** LBS Panic string @@ -125,6 +124,16 @@ */ const TInt KPositionAssistanceDataReset = 5; + +/** +Code indicating that a position is not currently available. The status code is used +as part of the status notification of the LbsLocator API. + +@publishedAll +@released + */ +const TInt KPositionNotAvailable = 6; + /** Lbs specific error codes. @@ -133,7 +142,7 @@ If __S60_ is defined in lbsvariant.h the constant is -30371 otherwise it is -17350 */ -const TInt KPositionErrBase = __LBS_TDEFAULT_ERROR_BASE; +const TInt KPositionErrBase = -30371; /** BufferOverflow error diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsPosition.h --- a/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsPosition.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/inc/LbsPosition.h Tue Aug 31 16:38:06 2010 +0300 @@ -17,7 +17,6 @@ #define __LBSPOSITION_H__ #include -#include /** @publishedAll diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/inc/lbsvariant.h --- a/locationmgmt/locationcore/LbsClient/LbsApi/inc/lbsvariant.h Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-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: -// - -#ifndef __LBSVARIANT_H__ -#define __LBSVARIANT_H__ - -/** -@file -@internalTechnology -@prototype -*/ -#define __LBS_TDEFAULT_ERROR_BASE (-30371) -#define __LBS_TCOURSE_RESERVED_SIZE 16 -#define __LBS_MAX_MODULE_NAME 64 - -#endif //__LBSVARIANT_H__ diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/src/LbsAreaInfo.cpp --- a/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsAreaInfo.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsAreaInfo.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -17,7 +17,7 @@ #include -#include +#include #include diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositionInfo.cpp --- a/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositionInfo.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositionInfo.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -19,6 +19,12 @@ #include "LbsInternal.h" #include "lbsfieldindex.h" +// Fix for GCCE 4.x : bug #1708 - GCC-E compilation error in lbs +#if defined(_FOFF) +#undef _FOFF +#endif // defined(_FOFF) +#define _FOFF(c,f) (((TInt)&(((c *)0x1000)->f))-0x1000) +// End of fix for GCCE 4.x //------------------------------------------------------------------------------ // TPositionInfoBase diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositioner.cpp --- a/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositioner.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/src/LbsPositioner.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include "lbslocservermessageenums.h" #include "LbsPtrHolder.h" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/src/lbsfields.cpp --- a/locationmgmt/locationcore/LbsClient/LbsApi/src/lbsfields.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/src/lbsfields.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -23,6 +23,14 @@ #define __ASSERT_ALIGNED_2BYTE(aPtr) __ASSERT_DEBUG(!(TUint(aPtr)&1),User::Panic(KPositionInternalFault, EBadAlignment)) #define __ASSERT_ALIGNED_4BYTE(aPtr) __ASSERT_DEBUG(!(TUint(aPtr)&3),User::Panic(KPositionInternalFault, EBadAlignment)) + +// Fix for GCCE 4.x : bug #1708 - GCC-E compilation error in lbs +#if defined(_FOFF) +#undef _FOFF +#endif // defined(_FOFF) +#define _FOFF(c,f) (((TInt)&(((c *)0x1000)->f))-0x1000) +// End of fix for GCCE 4.x + #define __DATA_OFFSET_INTO_HPOS(aOffset) \ (_FOFF(HPositionGenericInfo, iBuffer[(aOffset+iInfo.iDataStartPoint)])) @@ -75,13 +83,13 @@ case PositionFieldManager::ETDesC16: { const TUint8* address = &(iInfo.iBuffer[fieldIndex.FieldStartPos()]); - TUint lengthOfString = reinterpret_cast(address)->iLength; + const TUint lengthOfString = reinterpret_cast(address)->iLength; return _FOFF(SPackedTDesC16, iBuf[lengthOfString]); } case PositionFieldManager::ETDesC8: { const TUint8* address = &(iInfo.iBuffer[fieldIndex.FieldStartPos()]); - TUint lengthOfString = reinterpret_cast(address)->iLength; + const TUint lengthOfString = reinterpret_cast(address)->iLength; return _FOFF(SPackedTDesC8, iBuf[lengthOfString]); } default: @@ -861,7 +869,7 @@ const TDesC16& aValue, HPositionGenericInfo& aInfo) { - const TDataWrapperC wrapper(ETDesC16, _FOFF(SPackedTDesC16, iBuf[aValue.Length()]), &aValue, CopyFromTDesC16); + const TDataWrapperC wrapper(ETDesC16, (_FOFF(SPackedTDesC16, iBuf[aValue.Length()])), &aValue, CopyFromTDesC16); TPositionFieldSetter fieldSetter(aInfo); return fieldSetter.DoSetValue(aFieldId, wrapper); } diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/LbsApi/traces/osttracedefinitions.h --- a/locationmgmt/locationcore/LbsClient/LbsApi/traces/osttracedefinitions.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/LbsApi/traces/osttracedefinitions.h Tue Aug 31 16:38:06 2010 +0300 @@ -18,5 +18,5 @@ #ifndef __OSTTRACEDEFINITIONS_H__ #define __OSTTRACEDEFINITIONS_H__ -#include +#include #endif diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsClient/group/BLD.INF --- a/locationmgmt/locationcore/LbsClient/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsClient/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -14,5 +14,5 @@ // // Main projects, in build order -#include "../LbsApi/group/BLD.INF" +#include "../LbsApi/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsInternalApi/BWINS/LbsInternalApiU.DEF --- a/locationmgmt/locationcore/LbsInternalApi/BWINS/LbsInternalApiU.DEF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsInternalApi/BWINS/LbsInternalApiU.DEF Tue Aug 31 16:38:06 2010 +0300 @@ -98,4 +98,6 @@ ?ShutDownL@RLbsSystemModuleEvent@@SAXXZ @ 97 NONAME ; void RLbsSystemModuleEvent::ShutDownL(void) ?OpenL@RLbsPositionUpdateRequests@@QAEXABUTChannelIdentifer@1@@Z @ 98 NONAME ; void RLbsPositionUpdateRequests::OpenL(struct RLbsPositionUpdateRequests::TChannelIdentifer const &) ??0TLbsPositionUpdateRequestStatus@@QAE@XZ @ 99 NONAME ; TLbsPositionUpdateRequestStatus::TLbsPositionUpdateRequestStatus(void) + ?InitializeMoPropertyL@LbsPositioningStatusProps@@SAXXZ @ 100 NONAME ; void LbsPositioningStatusProps::InitializeMoPropertyL(void) + ?InitializeNiPropertyL@LbsPositioningStatusProps@@SAXXZ @ 101 NONAME ; void LbsPositioningStatusProps::InitializeNiPropertyL(void) diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsInternalApi/EABI/LbsInternalApiU.DEF --- a/locationmgmt/locationcore/LbsInternalApi/EABI/LbsInternalApiU.DEF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsInternalApi/EABI/LbsInternalApiU.DEF Tue Aug 31 16:38:06 2010 +0300 @@ -110,4 +110,6 @@ _ZNK25TLbsPositionUpdateRequest9NewClientEv @ 109 NONAME _ZNK26RLbsPositionUpdateRequests24GetPositionUpdateRequestER29TLbsPositionUpdateRequestBase @ 110 NONAME _ZNK31TLbsPositionUpdateRequestStatus8TrackingEv @ 111 NONAME + _ZN25LbsPositioningStatusProps21InitializeMoPropertyLEv @ 112 NONAME + _ZN25LbsPositioningStatusProps21InitializeNiPropertyLEv @ 113 NONAME diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsInternalApi/group/LbsInternalApi.mmp --- a/locationmgmt/locationcore/LbsInternalApi/group/LbsInternalApi.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsInternalApi/group/LbsInternalApi.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -32,6 +32,7 @@ SOURCE lbsqualityprofile.cpp SOURCE LbsGpsMeasurementUpdates.cpp SOURCE lbssuplpushprops.cpp +SOURCE lbspositioningstatusprops.cpp USERINCLUDE ../inc //Todo - remove. USERINCLUDE ../../lbsrootapi/inc diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsInternalApi/inc/lbspositioningstatusprops.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/LbsInternalApi/inc/lbspositioningstatusprops.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,56 @@ +// Copyright (c) 2010 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: +// lbspositioningstatusprops.h +// A class for the defining of the Lbs Positioning Status Publish and Subscribe properties +// +// + +/** + @file + @internalTechnology + @released +*/ + +#ifndef POSITIONING_STATUS_PROPS_H +#define POSITIONING_STATUS_PROPS_H + + +#include +#include "lbspropertykeydefs.h" + + +/** The key for the NI Positioning Status property*/ +const TUint KLbsNiPositioningStatusKey = KLbsPositioningStatusAPIBase; +/** The key for the MO Positioning Status property*/ +const TUint KLbsMoPositioningStatusKey = KLbsNiPositioningStatusKey+1; + + +/** +The LbsPositioningStatusProps class provides the InitializeL function that allows the process-owner of +the LBS Positioning Status API RProperties to define them. + +@internalTechnology +@released + +@see CLbsPositioningStatus +*/ +NONSHARABLE_CLASS(LbsPositioningStatusProps) + { +public: + IMPORT_C static void InitializeNiPropertyL(); + IMPORT_C static void InitializeMoPropertyL(); + }; + +#endif //POSITIONING_STATUS_PROPS_H + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsInternalApi/src/lbspositioningstatusprops.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/LbsInternalApi/src/lbspositioningstatusprops.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,95 @@ +// Copyright (c) 2010 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: +// lbspositioningstatusprops.cpp +// A class for the defining the Lbs Positioning Status Publish and Subscribe properties +// +// + +#include +#include +#include +#include "lbsdevloggermacros.h" + +#include "lbspositioningstatusprops.h" +#include "lbsrootcenrepdefs.h" + + +/** +Defines the property used by the Positioning Status API implementation for +receiving updates regarding MT-LR positioning sessions in progress + +Note that this may be created by a different process to the MO property +due to different processes being persistant in different LBS configurations. + +This key is created by LbsRoot. + +@leave If a error happens, it leaves with the correspondent error code. +*/ +EXPORT_C void LbsPositioningStatusProps::InitializeNiPropertyL() + { + LBSLOG(ELogP1, "LbsPositioningStatusProps::InitializeNiPropertyL() Begin\n"); + LBSLOG(ELogP9, "->S LbsPositioningStatusProps::InitializeNiPropertyL() InitializeNiPropertyL \n"); + const TSecurityPolicy KPositioningStatusPolicy(ECapabilityReadDeviceData, ECapabilityLocation); + + // Define the NI Positioning Status property + TInt err = RProperty::Define(KLbsNiPositioningStatusKey, RProperty::EInt, KPositioningStatusPolicy, KPositioningStatusPolicy); + if (err != KErrNone && err != KErrAlreadyExists) + { + User::Leave(err); + } + if (err != KErrAlreadyExists) + { + // store the Uid of the process that defined the property + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + User::LeaveIfError(rep->Set(KNiPositioningStatusAPIKey, TInt(RProcess().SecureId()))); + CleanupStack::PopAndDestroy(rep); + } + + LBSLOG(ELogP1, "LbsPositioningStatusProps::InitializeNiPropertyL() End\n"); + } + +/** +Defines the property used by the Positioning Status API implementation for +receiving updates regarding MO-LR positioning sessions in progress + +Note that this may be created by a different process to the MO property +due to different processes being persistant in different LBS configurations. + +This key is created by the Location Server by default. + +@leave If a error happens, it leaves with the correspondent error code. +*/ +EXPORT_C void LbsPositioningStatusProps::InitializeMoPropertyL() + { + LBSLOG(ELogP1, "LbsPositioningStatusProps::InitializeMoPropertyL() Begin\n"); + LBSLOG(ELogP9, "->S LbsPositioningStatusProps::InitializeMoPropertyL() InitializeMoPropertyL \n"); + const TSecurityPolicy KPositioningStatusPolicy(ECapabilityReadDeviceData, ECapabilityLocation); + + // Define the NI Positioning Status property + TInt err = RProperty::Define(KLbsMoPositioningStatusKey, RProperty::EInt, KPositioningStatusPolicy, KPositioningStatusPolicy); + if (err != KErrNone && err != KErrAlreadyExists) + { + User::Leave(err); + } + if (err != KErrAlreadyExists) + { + // store the Uid of the process that defined the property + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + User::LeaveIfError(rep->Set(KMoPositioningStatusAPIKey, TInt(RProcess().SecureId()))); + CleanupStack::PopAndDestroy(rep); + } + + LBSLOG(ELogP1, "LbsPositioningStatusProps::InitializeMoPropertyL() End\n"); + } + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsLogging/te_LbsLogging/Runtime Settings.xml --- a/locationmgmt/locationcore/LbsLogging/te_LbsLogging/Runtime Settings.xml Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ - - - - - - - - -]> - - - Debugger Runtime - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine\testdata\scripts\te_LbsLoggingSuite.script - MWRuntimeSettings_HostApplication - PathEPOC32\RELEASE\WINSCW\UDEB\testexecute.exe - PathFormatWindows - PathRootdrive E - - MWRuntimeSettings_EnvVars - - diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsNetInternalApi/group/BLD.INF --- a/locationmgmt/locationcore/LbsNetInternalApi/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsNetInternalApi/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -24,5 +24,5 @@ PRJ_TESTMMPFILES -#include "../test/group/BLD.INF" +#include "../test/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsNetProtocol/inc/lbsnetprotocolbase.h --- a/locationmgmt/locationcore/LbsNetProtocol/inc/lbsnetprotocolbase.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsNetProtocol/inc/lbsnetprotocolbase.h Tue Aug 31 16:38:06 2010 +0300 @@ -156,7 +156,7 @@ @param aCapabilities Returns the current capabilities of the device. */ - virtual void GetCurrentCapabilities( + IMPORT_C virtual void GetCurrentCapabilities( TLbsNetPosCapabilities& aCapabilities) const = 0; /** Provides the LBS subsystem with details of the current status of the network protocol @@ -178,7 +178,7 @@ from TLbsNetProtocolService. If the protocol module is idle, the parameter is set to zero. */ - virtual void ProcessStatusUpdate( + IMPORT_C virtual void ProcessStatusUpdate( TLbsNetProtocolServiceMask aActiveServiceMask) = 0; /** @@ -230,7 +230,7 @@ @see TLbsExternalRequestInfo @see TLbsLocationNotification */ - virtual void ProcessPrivacyRequest( + IMPORT_C virtual void ProcessPrivacyRequest( const TLbsNetSessionId& aSessionId, TBool aEmergency, const TLbsNetPosRequestPrivacy& aPrivacy, @@ -305,7 +305,7 @@ @see TLbsNetRequestQuality @see TLbsNetRequestMode */ - virtual void ProcessLocationRequest( + IMPORT_C virtual void ProcessLocationRequest( const TLbsNetSessionId& aSessionId, TBool aEmergency, TLbsNetProtocolService aService, @@ -348,7 +348,7 @@ @param aReason Reason for the completion of the request. KErrNone if the request is succecsfully completed, or one of a range of error codes otherwise. */ - virtual void ProcessSessionComplete( + IMPORT_C virtual void ProcessSessionComplete( const TLbsNetSessionId& aSessionId, TInt aReason) = 0; /** @@ -381,7 +381,7 @@ @see CLbsNetworkProtocolBase::RequestSelfLocation() @see CLbsNetworkProtocolBase::RequestAssistanceData() */ - virtual void ProcessAssistanceData( + IMPORT_C virtual void ProcessAssistanceData( TLbsAsistanceDataGroup aDataMask, const RLbsAssistanceDataBuilderSet& aData, TInt aReason) = 0; @@ -413,7 +413,7 @@ The parameter aPosInfo is normally of type TPositionInfo. */ - virtual void ProcessLocationUpdate( + IMPORT_C virtual void ProcessLocationUpdate( const TLbsNetSessionId& aSessionId, const TPositionInfoBase& aPosInfo) = 0; @@ -439,7 +439,7 @@ public: IMPORT_C virtual TVersion Version() const; - virtual void ProcessAssistanceData( + IMPORT_C virtual void ProcessAssistanceData( TLbsAsistanceDataGroup aDataMask, const RLbsAssistanceDataBuilderSet& aData, TInt aReason, @@ -450,7 +450,7 @@ // they should no longer be used by protocol modules implementing the // extended CLbsNetworkProtocolBase2 version of the interface. Please // use the extended versions as declared in the public section above. - virtual void ProcessAssistanceData( + IMPORT_C virtual void ProcessAssistanceData( TLbsAsistanceDataGroup aDataMask, const RLbsAssistanceDataBuilderSet& aData, TInt aReason); diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsNetRegStatusInt/group/BLD.INF --- a/locationmgmt/locationcore/LbsNetRegStatusInt/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsNetRegStatusInt/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -24,4 +24,4 @@ lbsnetregstatusint.mmp PRJ_TESTMMPFILES -#include "../test/group/BLD.INF" +#include "../test/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsPartnerCommon/src/lbsdevlogger.cpp --- a/locationmgmt/locationcore/LbsPartnerCommon/src/lbsdevlogger.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsPartnerCommon/src/lbsdevlogger.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -428,6 +428,8 @@ aName = vars.localProcess.FileName(); vars.pos = aName.LocateReverse('\\') + 1; aName = aName.Mid(vars.pos); + vars.localProcess.Close(); + vars.localThread.Close(); } EXPORT_C void LbsDevLogger::OverWrite(const TDesC8& aFmt) diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/LbsRefFnpInt/group/BLD.INF --- a/locationmgmt/locationcore/LbsRefFnpInt/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/LbsRefFnpInt/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -25,5 +25,5 @@ PRJ_TESTMMPFILES -#include "../test/group/BLD.INF" +#include "../test/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/conf/locationsettings.confml Binary file locationmgmt/locationcore/conf/locationsettings.confml has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/conf/locationsettings_10282266.crml Binary file locationmgmt/locationcore/conf/locationsettings_10282266.crml has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/group/bld.inf --- a/locationmgmt/locationcore/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -14,27 +14,27 @@ // // Common admin projects -#include "../LbsCommonInternalDataTypes/group/BLD.INF" -#include "../LbsLocCommon/group/BLD.INF" -#include "../LbsInternalApi/group/BLD.INF" -#include "../LbsClient/group/BLD.INF" +#include "../LbsCommonInternalDataTypes/group/bld.inf" +#include "../LbsLocCommon/group/bld.inf" +#include "../LbsInternalApi/group/bld.inf" +#include "../LbsClient/group/bld.inf" #include "../LbsLogging/group/bld.inf" -#include "../LbsAssistanceData/group/BLD.INF" +#include "../LbsAssistanceData/group/bld.inf" #include "../LbsPartnerCommon/group/bld.inf" #include "../LbsLocDataSource/group/bld.inf" -#include "../GPSClock/group/BLD.INF" -#include "../LbsNetProtocol/group/BLD.INF" -#include "../LbsNetRegStatusInt/group/BLD.INF" -#include "../LbsNgNlmInt/group/BLD.INF" -#include "../LbsNrhNgMsgs/group/BLD.INF" -#include "../LbsRefFnpInt/group/BLD.INF" -#include "../LbsNetInternalApi/group/BLD.INF" -#include "../LbsADataCache/group/BLD.INF" -#include "../LbsAgpsNgMsgs/group/BLD.INF" -#include "../LbsPsyNgMsgs/group/BLD.INF" +#include "../GPSClock/group/bld.inf" +#include "../LbsNetProtocol/group/bld.inf" +#include "../LbsNetRegStatusInt/group/bld.inf" +#include "../LbsNgNlmInt/group/bld.inf" +#include "../LbsNrhNgMsgs/group/bld.inf" +#include "../LbsRefFnpInt/group/bld.inf" +#include "../LbsNetInternalApi/group/bld.inf" +#include "../LbsADataCache/group/bld.inf" +#include "../LbsAgpsNgMsgs/group/bld.inf" +#include "../LbsPsyNgMsgs/group/bld.inf" -#include "../lbsrootapi/group/BLD.INF" -#include "../lbsroot/group/BLD.INF" +#include "../lbsrootapi/group/bld.inf" +#include "../lbsroot/group/bld.inf" #include "../LbsDebug/group/bld.inf" #include "../LbsClient/lastknownlocapi/group/bld.inf" @@ -43,6 +43,7 @@ #include "../lbslocindicatorlib/group/bld.inf" #include "../../locmonitor/lbslocmonitorapis/group/bld.inf" #include "../LbsRefLocDataSource/group/bld.inf" +#include "../lbspositioningstatus/group/bld.inf" // Test code @@ -51,7 +52,7 @@ PRJ_EXPORTS //HEADERS ../inc/LbsLocErrors.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/lbslocerrors.h) -../inc/lbsmessageenums.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbsmessageenums.h) +../inc/lbsmessageenums.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(lbsmessageenums.h) ../inc/lbsadmin.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/lbsadmin.h) ../inc/lbsadmin.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/lbsadmin.inl) ../inc/lbsadminclasstypes.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbsadminclasstypes.h) diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/group/lbs_admin.mrp --- a/locationmgmt/locationcore/group/lbs_admin.mrp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/group/lbs_admin.mrp Tue Aug 31 16:38:06 2010 +0300 @@ -36,6 +36,7 @@ source \sf\os\lbs\locationmgmt\locationcore\lbslocsettings source \sf\os\lbs\locationmgmt\locationcore\lbsmlfwutilities source \sf\os\lbs\locationmgmt\locationcore\lbslocindicatorlib +source \sf\os\lbs\locationmgmt\locationcore\lbspositioningstatus binary \sf\os\lbs\locationmgmt\locationcore\group all @@ -61,3 +62,4 @@ ipr T \sf\os\lbs\locationmgmt\locationcore\test ipr T \sf\os\lbs\locationmgmt\locationcore\lbslocindicatorlib\test ipr T \sf\os\lbs\locationmgmt\locationcore\LbsPartnerCommon\test +ipr T \sf\os\lbs\locationmgmt\locationcore\lbspositioningstatus\test diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/group/lbsadmin.iby --- a/locationmgmt/locationcore/group/lbsadmin.iby Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/group/lbsadmin.iby Tue Aug 31 16:38:06 2010 +0300 @@ -31,6 +31,7 @@ #include "lbsinternalapi.iby" #include "lbsnetprotocol.iby" #include "lbspartnercommon.iby" +#include "lbspositioningstatus.iby" #include "lbsnetinternalapi.iby" #include "lbsadatacache.iby" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/inc/lbsmessageenums.h --- a/locationmgmt/locationcore/inc/lbsmessageenums.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/inc/lbsmessageenums.h Tue Aug 31 16:38:06 2010 +0300 @@ -12,14 +12,13 @@ // // Description: // the message enums/opcodes shared between the client and the server sides -// Extend the enum list as required for each server - see restrictions -// butDO NOT rename the file -// +// +// NOTE: This file should not be modified or used by any new applications // /** @file - @publishedPartner + @publishedAll @released */ diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbslocsettings/data/101f500c.txt Binary file locationmgmt/locationcore/lbslocsettings/data/101f500c.txt has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbslocsettings/inc/epos_cpospluginslist.h --- a/locationmgmt/locationcore/lbslocsettings/inc/epos_cpospluginslist.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbslocsettings/inc/epos_cpospluginslist.h Tue Aug 31 16:38:06 2010 +0300 @@ -46,7 +46,7 @@ private: - void MoveL( TInt aOldIndex, TInt aNewIndex ); + void Move( TInt aOldIndex, TInt aNewIndex ); void Remove( TInt aIndex ); private: diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbslocsettings/src/epos_cpospluginslist.cpp --- a/locationmgmt/locationcore/lbslocsettings/src/epos_cpospluginslist.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbslocsettings/src/epos_cpospluginslist.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -224,7 +224,7 @@ for ( TInt i = 0; i < aPostInstalledList.Count(); i++ ) { TInt index = Find( aPostInstalledList[i] ); - MoveL( index, postInstalledOffset++ ); + Move( index, postInstalledOffset++ ); } // 2. Move RomBased before postInstalled @@ -234,7 +234,7 @@ CPosPluginProperties* plugin = iPlugins[i]; if ( plugin->IsRomBased() ) { - MoveL( i, romBasedOffset++ ); + Move( i, romBasedOffset++ ); } } @@ -255,12 +255,12 @@ // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // -void CPosPluginsList::MoveL( TInt aOldIndex, TInt aNewIndex ) +void CPosPluginsList::Move( TInt aOldIndex, TInt aNewIndex ) { __ASSERT_DEBUG( aOldIndex >=0 && aOldIndex < iPlugins.Count(), Panic( KErrArgument ) ); __ASSERT_DEBUG( aNewIndex >=0 && aNewIndex <= iPlugins.Count(), Panic( KErrArgument ) ); CPosPluginProperties* swap = iPlugins[aOldIndex]; iPlugins.Remove( aOldIndex ); - iPlugins.InsertL( swap, aNewIndex ); + iPlugins.Insert( swap, aNewIndex ); } diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/bwins/lbspositioningstatusu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/bwins/lbspositioningstatusu.def Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,7 @@ +EXPORTS + ?CurrentPositioningStatus@CLbsPositioningStatusImpl@@QAEKXZ @ 1 NONAME ; unsigned long CLbsPositioningStatusImpl::CurrentPositioningStatus(void) + ?NewL@CLbsPositioningStatusImpl@@SAPAV1@AAVMLbsPositioningStatusObserver@@@Z @ 2 NONAME ; class CLbsPositioningStatusImpl * CLbsPositioningStatusImpl::NewL(class MLbsPositioningStatusObserver &) + ?NewL@CLbsPositioningStatus@@SAPAV1@AAVMLbsPositioningStatusObserver@@@Z @ 3 NONAME ; class CLbsPositioningStatus * CLbsPositioningStatus::NewL(class MLbsPositioningStatusObserver &) + ?CurrentPositioningStatus@CLbsPositioningStatus@@QAEKXZ @ 4 NONAME ; unsigned long CLbsPositioningStatus::CurrentPositioningStatus(void) + ?Version@MLbsPositioningStatusObserver@@UBE?AVTVersion@@XZ @ 5 NONAME ; class TVersion MLbsPositioningStatusObserver::Version(void) const + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/eabi/lbspositioningstatusu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/eabi/lbspositioningstatusu.def Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,11 @@ +EXPORTS + _ZN21CLbsPositioningStatus24CurrentPositioningStatusEv @ 1 NONAME + _ZN21CLbsPositioningStatus4NewLER29MLbsPositioningStatusObserver @ 2 NONAME + _ZN25CLbsPositioningStatusImpl24CurrentPositioningStatusEv @ 3 NONAME + _ZN25CLbsPositioningStatusImpl4NewLER29MLbsPositioningStatusObserver @ 4 NONAME + _ZNK29MLbsPositioningStatusObserver7VersionEv @ 5 NONAME + _ZTI28CLbsInternalPosStatusWatcher @ 6 NONAME + _ZTI29MLbsPositioningStatusObserver @ 7 NONAME + _ZTV28CLbsInternalPosStatusWatcher @ 8 NONAME + _ZTV29MLbsPositioningStatusObserver @ 9 NONAME + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,26 @@ +// Copyright (c) 2010 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: +// bld.inf file for the Lbs Positioning Status component +// +// + +PRJ_EXPORTS +../inc/lbspositioningstatus.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/lbspositioningstatus.h) +lbspositioningstatus.iby /epoc32/rom/include/lbspositioningstatus.iby + +PRJ_MMPFILES +lbspositioningstatus.mmp + +#include "../test/te_lbspositioningstatus/group/bld.inf" + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/group/lbspositioningstatus.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/group/lbspositioningstatus.iby Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,25 @@ +// Copyright (c) 2010 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: +// + +#ifndef __LBS_POSITIONING_STATUS_IBY__ +#define __LBS_POSITIONING_STATUS_IBY__ + +#if !defined(SYMBIAN_EXCLUDE_LOCATION) + +file=ABI_DIR\DEBUG_DIR\lbspositioningstatus.dll System\libs\lbspositioningstatus.dll + +#endif // SYMBIAN_EXCLUDE_LOCATION + +#endif // __LBS_POSITIONING_STATUS_IBY__ diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/group/lbspositioningstatus.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/group/lbspositioningstatus.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,40 @@ +// Copyright (c) 2010 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: +// + +TARGET lbspositioningstatus.dll +TARGETTYPE dll +UID 0x1000008d 0x1028720E +CAPABILITY ALL -Tcb +MACRO ENABLE_LBS_DEV_LOGGER + +USERINCLUDE ../inc +USERINCLUDE ../../lbsrootapi/inc +USERINCLUDE ../../LbsInternalApi/inc +USERINCLUDE ../../lbsroot/inc +USERINCLUDE ../../LbsPartnerCommon/inc + +// system include paths +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +SOURCEPATH ../src +SOURCE lbspositioningstatus.cpp +SOURCE lbspositioningstatusimpl.cpp +SOURCE lbsinternalposstatuswatcher.cpp + + +LIBRARY euser.lib centralrepository.lib lbspartnercommon.lib + + +SMPSAFE diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/inc/lbsinternalposstatuswatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/inc/lbsinternalposstatuswatcher.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,90 @@ +/** +* Copyright (c) 2010 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: +* +*/ + + +/** + @file cmopositioningstatuswatcher.h + @internalTechnology +*/ +#ifndef MO_POSITIONING_STATUS_LISTENER_H_ +#define MO_POSITIONING_STATUS_LISTENER_H_ + +#include +#include + +/** A type for the internal positioning status updates */ +typedef TUint32 TLbsPositioningStatusType; + +/** The response to a privacy request. + +Note that the _TLbsPositioningStatusType enum may be extended in the future +by adding more enumerated values. To maintain compatibility any unrecognized +values must be handled as ELbsPositioningStatusUnknown. +*/ +enum _TLbsPositioningStatusType + { + /** Not used/unknown */ + ELbsPositioningStatusUnknown = 0, + /** Used to indicate Mobile Originated positioning status. */ + ELbsPositioningStatusMO = 1, + /** Used to indicate Network Initiated positioning status. */ + ELbsPositioningStatusNI = 2 + }; + + +class MLbsInternalPosStatusObserver + { +public: + + /** Send Positioning Status to the Observer. + Called whenever a change to the devices positioning status occurs. + @param aType The positioning status type being reported + @param aStatus The current positioning status + */ + virtual void OnInternalStatusUpdate(const TLbsPositioningStatusType& aType, const TInt& aStatus) = 0; + }; + + +class CLbsInternalPosStatusWatcher : public CActive + { +public: + static CLbsInternalPosStatusWatcher* NewL(const TLbsPositioningStatusType& aType, MLbsInternalPosStatusObserver& aObserver); + ~CLbsInternalPosStatusWatcher(); + +private: + // Constructors + void ConstructL(); + CLbsInternalPosStatusWatcher(const TLbsPositioningStatusType& aType, MLbsInternalPosStatusObserver& aObserver); + + // CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + +private: + // Observer + MLbsInternalPosStatusObserver& iObserver; + + // the positioning status type watched. + TLbsPositioningStatusType iType; + + // handle to the P&S property being watched + RProperty iProperty; + }; + + +#endif // MO_POSITIONING_STATUS_LISTENER_H_ diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/inc/lbspositioningstatus.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/inc/lbspositioningstatus.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,90 @@ +// Copyright (c) 2010 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: +// + +/** + @file + @publishedPartner + */ + +#ifndef POSITIONING_STATUS_H +#define POSITIONING_STATUS_H + +#include + +class CLbsPositioningStatusImpl; +class MLbsPositioningStatusObserver; + +/** +Positioning Status Library's API. + +This class provides an API by which an observer can register for notifications +regarding the current status of LBS, i.e. if one or more positioning sessions +are currently in progress or otherwise. + +@see MLbsPositioningStatusObserver +@capability Location +*/ +NONSHARABLE_CLASS(CLbsPositioningStatus) : public CBase + { +public: + /** Positioning Status define */ + typedef TUint32 TLbsPositioningStatus; + + /** Positioning Status enumeration + * Note that this enumeration may be extended by future updates */ + enum _TLbsPositioningStatus + { + ELbsPositioningStatusNotActive = 0, + ELbsPositioningStatusActive = 1 + }; + +public: + IMPORT_C static CLbsPositioningStatus* NewL(MLbsPositioningStatusObserver& aObserver); + virtual ~CLbsPositioningStatus(); + +public: + /** Returns the current positioning status */ + IMPORT_C TLbsPositioningStatus CurrentPositioningStatus(); + +private: + CLbsPositioningStatus(); + void ConstructL(MLbsPositioningStatusObserver& aObserver); + +private: + /** Handle to the internal implementation */ + CLbsPositioningStatusImpl* iImpl; + }; + + +/** Positioning Status observer definition. +This interface is implemented by observers to handle calls from +the Positioning Status manager. + +@see CLbsPositioningStatus +*/ +class MLbsPositioningStatusObserver + { +public: + IMPORT_C virtual TVersion Version() const; + + /** Send Positioning Status to the Observer. + Called whenever a change to the devices positioning status occurs. + @param aPositioningStatus The current positioning status + */ + virtual void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus) = 0; + }; + + +#endif // POSITIONING_STATUS_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/inc/lbspositioningstatusimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/inc/lbspositioningstatusimpl.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,77 @@ +// Copyright (c) 2010 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: +// + +/** + @file + @internalTechnology +*/ + +#ifndef POSITIONING_STATUS_IMPL_H +#define POSITIONING_STATUS_IMPL_H + +#include +#include "lbspositioningstatus.h" +#include "lbsinternalposstatuswatcher.h" + +/** +The class provides an internal implementation of the functionality exposed +by the CLbsPositioningStatus interface. + +@see CLbsPositioningStatus +@see MLbsInternalPosStatusObserver + +@internalComponent +@prototype +*/ +NONSHARABLE_CLASS(CLbsPositioningStatusImpl) : public CBase, + public MLbsInternalPosStatusObserver + { +public: + IMPORT_C static CLbsPositioningStatusImpl* NewL(MLbsPositioningStatusObserver& aObserver); + virtual ~CLbsPositioningStatusImpl(); + +public: + /** Returns the current positioning status */ + IMPORT_C CLbsPositioningStatus::TLbsPositioningStatus CurrentPositioningStatus(); + +private: + CLbsPositioningStatusImpl(MLbsPositioningStatusObserver& aObserver); + void ConstructL(); + + /** from MLbsInternalPosStatusObserver */ + void OnInternalStatusUpdate(const TLbsPositioningStatusType& aType, const TInt& aCount); + + /** Returns the combined MO/NI positioning status */ + CLbsPositioningStatus::TLbsPositioningStatus CombinedStatus(); + +private: + /** Prohibit copy constructor */ + CLbsPositioningStatusImpl(const CLbsPositioningStatusImpl&); + /** Prohibit assigment operator */ + CLbsPositioningStatusImpl& operator= (const CLbsPositioningStatusImpl&); + +private: + /** Consumer for positioning status updates, SysApp */ + MLbsPositioningStatusObserver& iObserver; + + TUint iLastKnownMoStatus; + TUint iLastKnownNiStatus; + + /** P&S API Watchers */ + CLbsInternalPosStatusWatcher* iMoWatcher; + CLbsInternalPosStatusWatcher* iNiWatcher; + }; + +#endif // POSITIONING_STATUS_IMPL_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/src/lbsinternalposstatuswatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/src/lbsinternalposstatuswatcher.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,118 @@ +/** +* Copyright (c) 2010 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: +* +*/ + +#include +#include + +#include "lbsrootcenrepdefs.h" +#include "lbsinternalposstatuswatcher.h" +#include "lbspositioningstatusprops.h" + + + +CLbsInternalPosStatusWatcher* CLbsInternalPosStatusWatcher::NewL(const TLbsPositioningStatusType& aType, MLbsInternalPosStatusObserver& aObserver) + { + CLbsInternalPosStatusWatcher* me=new(ELeave) CLbsInternalPosStatusWatcher(aType, aObserver); + CleanupStack::PushL(me); + me->ConstructL(); + CleanupStack::Pop(me); + return me; + } + +CLbsInternalPosStatusWatcher::~CLbsInternalPosStatusWatcher() + { + Cancel(); + iProperty.Close(); + } + +CLbsInternalPosStatusWatcher::CLbsInternalPosStatusWatcher(const TLbsPositioningStatusType& aType, MLbsInternalPosStatusObserver& aObserver) + : CActive(EPriorityStandard), iObserver(aObserver), iType(aType) + { + } + +/** +The 2nd phase constructor. Attaches to the property, completes the async +request to cause the RunL method to be called for the first time and check +if there has already been an update to the property. + +@leave If a error happens, it leaves with one of the system error codes. +*/ +void CLbsInternalPosStatusWatcher::ConstructL() + { + // Get the CategoryUid from the cenrep file owned by LbsRoot. + TInt category; + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + + // attach to the property + if (iType == ELbsPositioningStatusMO) + { + // Mobile Originated Status P&S Property + User::LeaveIfError(rep->Get(KMoPositioningStatusAPIKey, category)); + TSecureId propOwnerSecureId(category); + User::LeaveIfError(iProperty.Attach(propOwnerSecureId, KLbsMoPositioningStatusKey, EOwnerThread)); + } + else if (iType == ELbsPositioningStatusNI) + { + // Network Initiated Status P&S Property + User::LeaveIfError(rep->Get(KNiPositioningStatusAPIKey, category)); + TSecureId propOwnerSecureId(category); + User::LeaveIfError(iProperty.Attach(propOwnerSecureId, KLbsNiPositioningStatusKey, EOwnerThread)); + } + else + { + // Any other value indicates a programming error + User::Leave(KErrArgument); + } + + CleanupStack::PopAndDestroy(rep); + + CActiveScheduler::Add(this); + // initial subscription and process current property value + RunL(); + } + +void CLbsInternalPosStatusWatcher::RunL() + { + // resubscribe before processing new value to prevent missing updates + iProperty.Subscribe(iStatus); + SetActive(); + + TInt newStatus; + // property updated, get new value + if (iProperty.Get(newStatus)==KErrNotFound) + { + // property deleted, there's no sessions of this type! + iObserver.OnInternalStatusUpdate(iType, 0); + } + else + { + // inform the positioning status observer + iObserver.OnInternalStatusUpdate(iType, newStatus); + } + } + +void CLbsInternalPosStatusWatcher::DoCancel() + { + iProperty.Cancel(); + } + +TInt CLbsInternalPosStatusWatcher::RunError(TInt aError) + { + // TODO: Handle RunL leaving... + return aError; + } + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/src/lbspositioningstatus.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/src/lbspositioningstatus.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,80 @@ +// Copyright (c) 2010 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: +// + +#include "lbspositioningstatus.h" +#include "lbspositioningstatusimpl.h" +#include "lbsdevloggermacros.h" + + + +//============================================================================= +// MLbsPositioningStatusObserver +//============================================================================= +/** +Provides the version of the observer interface. This can be used by the library +to determine the functionality supported by the client application. + +@return Version of the observer interface. +*/ +EXPORT_C TVersion MLbsPositioningStatusObserver::Version() const + { + LBSLOG(ELogP1, "MLbsPositioningStatusObserver::Version() Begin\n"); + LBSLOG(ELogP1, "MLbsPositioningStatusObserver::Version() End\n"); + return TVersion(1, 0, 0); + } + +EXPORT_C CLbsPositioningStatus* CLbsPositioningStatus::NewL(MLbsPositioningStatusObserver& aObserver) + { + LBSLOG(ELogP1, "CLbsPositioningStatus::NewL() Begin\n"); + LBSLOG(ELogP8, "->S CLbsPositioningStatus::NewL() CLbsPositioningStatus\n"); + CLbsPositioningStatus* me = new (ELeave) CLbsPositioningStatus(); + CleanupStack::PushL(me); + me->ConstructL(aObserver); + LBSLOG(ELogP1, "CLbsPositioningStatus::NewL() End\n"); + CleanupStack::Pop(me); + return me; + } + +CLbsPositioningStatus::~CLbsPositioningStatus() + { + LBSLOG(ELogP1, "CLbsPositioningStatus::~CLbsPositioningStatus() Begin\n"); + LBSLOG(ELogP8, "->S CLbsPositioningStatus::~CLbsPositioningStatus() CLbsPositioningStatus\n"); + delete iImpl; + iImpl = NULL; + LBSLOG(ELogP1, "CLbsPositioningStatus::~CLbsPositioningStatus() End\n"); + } + +CLbsPositioningStatus::CLbsPositioningStatus() + { + LBSLOG(ELogP1, "CLbsPositioningStatus::CLbsPositioningStatus() Begin\n"); + LBSLOG(ELogP1, "CLbsPositioningStatus::CLbsPositioningStatus() End\n"); + } + +void CLbsPositioningStatus::ConstructL(MLbsPositioningStatusObserver& aObserver) + { + LBSLOG(ELogP1, "CLbsPositioningStatus::ConstructL() Begin\n"); + iImpl = CLbsPositioningStatusImpl::NewL(aObserver); + LBSLOG(ELogP1, "CLbsPositioningStatus::ConstructL() End\n"); + } + + +EXPORT_C CLbsPositioningStatus::TLbsPositioningStatus CLbsPositioningStatus::CurrentPositioningStatus() + { + LBSLOG(ELogP1, "CLbsPositioningStatus::CurrentPositioningStatus() Begin\n"); + LBSLOG(ELogP1, "CLbsPositioningStatus::CurrentPositioningStatus() Begin\n"); + return iImpl->CurrentPositioningStatus(); + } + + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/src/lbspositioningstatusimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/src/lbspositioningstatusimpl.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,108 @@ +// Copyright (c) 2010 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: +// + +#include "lbspositioningstatusimpl.h" +#include "lbsdevloggermacros.h" + +EXPORT_C CLbsPositioningStatusImpl* CLbsPositioningStatusImpl::NewL(MLbsPositioningStatusObserver& aObserver) + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::NewL() Begin\n"); + LBSLOG(ELogP8, "->S CLbsPositioningStatusImpl::NewL() CLbsPositioningStatusImpl\n"); + CLbsPositioningStatusImpl* me = new (ELeave) CLbsPositioningStatusImpl(aObserver); + CleanupStack::PushL(me); + me->ConstructL(); + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::NewL() End\n"); + CleanupStack::Pop(me); + return me; + } + +CLbsPositioningStatusImpl::~CLbsPositioningStatusImpl() + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::~CLbsPositioningStatusImpl() Begin\n"); + LBSLOG(ELogP8, "->S CLbsPositioningStatusImpl::~CLbsPositioningStatusImpl() CLbsPositioningStatus\n"); + delete iMoWatcher; + delete iNiWatcher; + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::~CLbsPositioningStatusImpl() End\n"); + } + +CLbsPositioningStatusImpl::CLbsPositioningStatusImpl(MLbsPositioningStatusObserver& aObserver) + : iObserver(aObserver) + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CLbsPositioningStatusImpl() Begin\n"); + iLastKnownMoStatus = CLbsPositioningStatus::ELbsPositioningStatusNotActive; + iLastKnownNiStatus = CLbsPositioningStatus::ELbsPositioningStatusNotActive; + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CLbsPositioningStatusImpl() End\n"); + } + +void CLbsPositioningStatusImpl::ConstructL() + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::ConstructL() Begin\n"); + iMoWatcher = CLbsInternalPosStatusWatcher::NewL(ELbsPositioningStatusMO, *this); + iNiWatcher = CLbsInternalPosStatusWatcher::NewL(ELbsPositioningStatusNI, *this); + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::ConstructL() End\n"); + } + + +EXPORT_C CLbsPositioningStatus::TLbsPositioningStatus CLbsPositioningStatusImpl::CurrentPositioningStatus() + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CurrentPositioningStatus() Begin\n"); + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CurrentPositioningStatus() End\n"); + return CombinedStatus(); + } + +/** from MLbsInternalPosStatusObserver + * + * @param aType mobile or network originated positioning status + * @param aCount count current service requests of the type being reported + * */ +void CLbsPositioningStatusImpl::OnInternalStatusUpdate(const TLbsPositioningStatusType& aType, const TInt& aCount) + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::OnInternalStatusUpdate() Begin\n"); + CLbsPositioningStatus::TLbsPositioningStatus previous = CombinedStatus(); + + // update the appropriate status + if (aType==ELbsPositioningStatusMO) + { + iLastKnownMoStatus = aCount; + } + else + { + iLastKnownNiStatus = aCount; + } + + // update the observer if the combined status has changed. + if (previous != CombinedStatus()) + { + iObserver.OnPositioningStatusUpdate(CombinedStatus()); + } + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::OnInternalStatusUpdate() End\n"); + } + + +CLbsPositioningStatus::TLbsPositioningStatus CLbsPositioningStatusImpl::CombinedStatus() + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CombinedStatus() Begin\n"); + if (iLastKnownMoStatus + iLastKnownNiStatus != 0) + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CombinedStatus() Active End\n"); + return CLbsPositioningStatus::ELbsPositioningStatusActive; + } + else + { + LBSLOG(ELogP1, "CLbsPositioningStatusImpl::CombinedStatus() NOT Active End\n"); + return CLbsPositioningStatus::ELbsPositioningStatusNotActive; + } + } + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,20 @@ +// Copyright (c) 2010 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: +// + +PRJ_TESTEXPORTS +../scripts/te_lbspositioningstatus.script c:/testdata/scripts/te_lbspositioningstatus.script + +PRJ_TESTMMPFILES +te_lbspositioningstatus.mmp diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/group/te_lbspositioningstatus.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/group/te_lbspositioningstatus.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,47 @@ +// Copyright (c) 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: +// + + +TARGET te_lbspositioningstatusserver.exe +TARGETTYPE exe +UID 0x1000007A 0x102869EE +CAPABILITY ALL -TCB + +//Please add any change under here +SOURCEPATH ../src +SOURCE te_lbspositioningstatusserver.cpp +SOURCE te_lbspositioningstatusstep.cpp +SOURCE te_lbsstatustestmanager.cpp + +USERINCLUDE ../inc +USERINCLUDE ../../../inc +USERINCLUDE ../../../../lbsroot/inc +USERINCLUDE ../../../../lbsrootapi/inc +USERINCLUDE ../../../../LbsInternalApi/inc + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY lbspositioningstatus.lib +LIBRARY bafl.lib +LIBRARY euser.lib +LIBRARY efsrv.lib +LIBRARY centralrepository.lib +LIBRARY lbsinternalapi.lib + +LIBRARY testexecuteutils.lib +LIBRARY testexecutelogclient.lib + + +SMPSAFE diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbspositioningstatusserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbspositioningstatusserver.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,41 @@ +/** +* Copyright (c) 2010 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: +* +*/ + + + +/** + @file te_lbspositioningstatusserver.h +*/ + +#ifndef TE_LBSPOSITIONINGSTATUSSERVER_H +#define TE_LBSPOSITIONINGSTATUSSERVER_H + +#include + + +class CTe_LbsPositioningStatusServer : public CTestServer + { +public: + static CTe_LbsPositioningStatusServer* NewL(); + // Base class pure virtual override + virtual CTestStep* CreateTestStep(const TDesC& aStepName); + +// Please Add/modify your class members +private: + }; + +#endif // TE_LBSPOSITIONINGSTATUSSERVER_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbspositioningstatusstep.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbspositioningstatusstep.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,46 @@ +/** +* Copyright (c) 2010 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: +* +*/ + +/** + @file te_lbspositioningstatusstepbase.h +*/ + +#ifndef TE_LBSPOSITIONINGSTATUSSTEPBASE_H +#define TE_LBSPOSITIONINGSTATUSSTEPBASE_H + +#include + +_LIT(KStatusStep,"StatusStep"); + +class CTe_LbsStatusTestManager; + +class CTe_LbsPositioningStatusStep : public CTestStep + { +public: + virtual ~CTe_LbsPositioningStatusStep(); + virtual TVerdict doTestStepPreambleL(); + virtual TVerdict doTestStepPostambleL(); + virtual TVerdict doTestStepL(); + + CTe_LbsPositioningStatusStep(); + +protected: + CTe_LbsStatusTestManager* iTestManager; + CActiveScheduler* iSched; + }; + +#endif // TE_LBSPOSITIONINGSTATUSSTEPBASE_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbsstatustestmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/inc/te_lbsstatustestmanager.h Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,77 @@ +/** +* Copyright (c) 2010 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: +* +*/ + +/** + @file te_lbsstatusstep.h +*/ + +#ifndef TE_LBSSTATUSSTEP_H +#define TE_LBSSTATUSSTEP_H + +#include +#include + +class CTe_LbsPositioningStatusStep; +class CLbsPositioningStatus; + +class CTe_LbsStatusTestManager : public CActive, public MLbsPositioningStatusObserver + { +private: + enum TTestStep + { + EStepInitial, + EStepFirstRequest, + EStepSecondRequest, + EStepThirdRequest, + EStepFourthRequest, + EStepFifthRequest, + EStepStop + }; +public: + static CTe_LbsStatusTestManager* NewL(CTe_LbsPositioningStatusStep& aTest); + ~CTe_LbsStatusTestManager(); + + void StartTest(); + +private: // from MLbsPositioningStatusObserver + void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus); + +private: + CTe_LbsStatusTestManager(CTe_LbsPositioningStatusStep& aTest); + void ConstructL(); + void RunL(); + TInt RunError(TInt aError); + void DoCancel(); + void CompleteSelf(); + +private: + CTe_LbsPositioningStatusStep& iTest; + TTestStep iStep; + + CLbsPositioningStatus* iPositioningStatus; + RTimer iTimer; + TUid iMoPosStatusCategory; + TUid iNiPosStatusCategory; + + TBool iPosStatusUpdateReceived; + CLbsPositioningStatus::TLbsPositioningStatus iReceivedPosStatus; + TBool iUpdateExpected; + TBool iTestFailed; + + }; + +#endif // TE_LBSSTATUSSTEP_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/scripts/te_lbspositioningstatus.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/scripts/te_lbspositioningstatus.script Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,41 @@ +// +// Copyright (c) 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: +// +//! @File +//! @SYMTestSuiteName LBS-POSITIONING-STATUS +//! @SYMScriptTestEnvironment TEF + +PRINT Run all te_lbspositioningstatusserver Suite Tests +LOAD_SUITE te_lbspositioningstatusserver + + +START_TESTCASE LBS-POSITIONING-STATUS-1001 +//! @SYMTestCaseID LBS-POSITIONING-STATUS-1001 +//! @SYMTestCaseDesc Checking that the positioining status component works correctly +//! @SYMTestPriority Low +//! @SYMTestActions 1. Change the MO-LR flag to be 1 +//! 2. Change the NI flag to be 1 +//! 2. Change the MO-LR and NI flags to be 0 +//! 2. Change the NI flag to be 1 +//! 2. Change the NI flag to be 2 +//! 2. Change the NI flag to be 0 +//! @SYMTestExpectedResults The client of the API gets notified correctly when there is a change in the positioning status +//! @SYMTestType UT +//! @SYMCreationDate 24/3/2010 +//! @SYMAuthor SorinBasca +//! @SYMTestStatus 3. Released +RUN_TEST_STEP 30 te_lbspositioningstatusserver StatusStep +END_TESTCASE LBS-POSITIONING-STATUS-1001 + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbspositioningstatusserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbspositioningstatusserver.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,112 @@ +// Copyright (c) 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: +// +// + +/** + @file te_lbspositioningstatusserver.cpp + @internalComponent +*/ + +#include "te_lbspositioningstatusserver.h" +#include "te_lbspositioningstatusstep.h" + +_LIT(KServerName,"te_lbspositioningstatusserver"); + + +CTe_LbsPositioningStatusServer* CTe_LbsPositioningStatusServer::NewL() +/** + * @return - Instance of the test server + * Same code for Secure and non-secure variants + * Called inside the MainL() function to create and start the + * CTestServer derived server. + */ + { + CTe_LbsPositioningStatusServer * server = new (ELeave) CTe_LbsPositioningStatusServer(); + CleanupStack::PushL(server); + + server->ConstructL(KServerName); + CleanupStack::Pop(server); + return server; + } + + +// Secure variants much simpler +// For EKA2, just an E32Main and a MainL() +LOCAL_C void MainL() +/** + * Secure variant + * Much simpler, uses the new Rendezvous() call to sync with the client + */ + { + // Leave the hooks in for platform security +#if (defined __DATA_CAGING__) + RProcess().DataCaging(RProcess::EDataCagingOn); + RProcess().DataCaging(RProcess::ESecureApiOn); +#endif + CActiveScheduler* sched=NULL; + sched=new(ELeave) CActiveScheduler; + CActiveScheduler::Install(sched); + CTe_LbsPositioningStatusServer* server = NULL; + // Create the CTestServer derived server + TRAPD(err,server = CTe_LbsPositioningStatusServer::NewL()); + if(!err) + { + // Sync with the client and enter the active scheduler + RProcess::Rendezvous(KErrNone); + sched->Start(); + } + delete server; + delete sched; + } + + + +GLDEF_C TInt E32Main() +/** + * @return - Standard Epoc error code on process exit + * Secure variant only + * Process entry point. Called by client using RProcess API + */ + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); + if(cleanup == NULL) + { + return KErrNoMemory; + } + TRAPD(err,MainL()); + delete cleanup; + __UHEAP_MARKEND; + return err; + } + + +CTestStep* CTe_LbsPositioningStatusServer::CreateTestStep(const TDesC& aStepName) +/** + * @return - A CTestStep derived instance + * Secure and non-secure variants + * Implementation of CTestServer pure virtual + */ + { + CTestStep* testStep = NULL; + if(aStepName == KStatusStep) + { + testStep = new CTe_LbsPositioningStatusStep(); + } + + return testStep; + } +//end of file + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbspositioningstatusstep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbspositioningstatusstep.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,78 @@ +// Copyright (c) 2010 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: +// + +/** + @file te_lbspositioningstatusstepbase.cpp +*/ + +#include "te_lbspositioningstatusstep.h" +#include "te_lbsstatustestmanager.h" +#include "lbspositioningstatusprops.h" // from internal API + + +TVerdict CTe_LbsPositioningStatusStep::doTestStepPreambleL() + { + + INFO_PRINTF1(_L("CTe_LbsPositioningStatusStep::doTestStepPreambleL()")); + __UHEAP_MARK; + iSched=new(ELeave) CActiveScheduler; + CActiveScheduler::Install(iSched); + + LbsPositioningStatusProps::InitializeNiPropertyL(); + LbsPositioningStatusProps::InitializeMoPropertyL(); + + iTestManager = CTe_LbsStatusTestManager::NewL(*this); + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CTe_LbsPositioningStatusStep::doTestStepPostambleL() + { + INFO_PRINTF1(_L("CTe_LbsPositioningStatusStep::doTestStepPostambleL()")); + iTestManager->Cancel(); + delete iTestManager; + iTestManager = NULL; + delete iSched; + iSched = NULL; + __UHEAP_MARKEND; + return TestStepResult(); + } + +TVerdict CTe_LbsPositioningStatusStep::doTestStepL() + { + INFO_PRINTF1(_L("CTe_LbsPositioningStatusStep::doTestStepL()")); + iTestManager->StartTest(); + return TestStepResult(); + } + +CTe_LbsPositioningStatusStep::CTe_LbsPositioningStatusStep() + { + SetTestStepName(KStatusStep); + } + +CTe_LbsPositioningStatusStep::~CTe_LbsPositioningStatusStep() + { + if(iTestManager) + { + iTestManager->Cancel(); + } + delete iTestManager; + delete iSched; + } + + +// end of file + + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbsstatustestmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmgmt/locationcore/lbspositioningstatus/test/te_lbspositioningstatus/src/te_lbsstatustestmanager.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,254 @@ +// Copyright (c) 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: +// + +/** + @file te_lbsstatusstep.cpp + @internalComponent +*/ + +#include "te_lbsstatustestmanager.h" +#include "te_lbspositioningstatusstep.h" +#include "lbsrootcenrepdefs.h" +#include "lbspositioningstatusprops.h" +#include +#include +#include + +const TTimeIntervalMicroSeconds32 KTimerInterval = 2*1000*1000; + +CTe_LbsStatusTestManager* CTe_LbsStatusTestManager::NewL(CTe_LbsPositioningStatusStep& aTest) + { + CTe_LbsStatusTestManager* self = new(ELeave) CTe_LbsStatusTestManager(aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CTe_LbsStatusTestManager::~CTe_LbsStatusTestManager() + { + delete iPositioningStatus; + iTimer.Cancel(); + iTimer.Close(); + } + +void CTe_LbsStatusTestManager::StartTest() + { + iUpdateExpected = EFalse; + CompleteSelf(); + CActiveScheduler::Start(); + } + +CTe_LbsStatusTestManager::CTe_LbsStatusTestManager(CTe_LbsPositioningStatusStep& aTest) + : CActive(EPriorityStandard), iTest(aTest), iStep(EStepInitial) + { + CActiveScheduler::Add(this); + } + +void CTe_LbsStatusTestManager::ConstructL() + { + iPositioningStatus = CLbsPositioningStatus::NewL(*this); + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + TInt posStatusCat; + User::LeaveIfError(rep->Get(KMoPositioningStatusAPIKey, posStatusCat)); + iMoPosStatusCategory = TUid::Uid(posStatusCat); + User::LeaveIfError(rep->Get(KNiPositioningStatusAPIKey, posStatusCat)); + iNiPosStatusCategory = TUid::Uid(posStatusCat); + CleanupStack::PopAndDestroy(rep); + iTimer.CreateLocal(); + } + +void CTe_LbsStatusTestManager::RunL() + { + iTest.TESTL(!iTestFailed); + switch(iStep) + { + case EStepInitial: + { + // checks that the current status is not active + iTest.INFO_PRINTF1(_L("Checking that initial status is not active")); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusNotActive == iPositioningStatus->CurrentPositioningStatus()); + // sets the MO-LR property to 1... + iTest.INFO_PRINTF1(_L("Setting the MO-LR property to 1 (expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iMoPosStatusCategory, KLbsMoPositioningStatusKey, 1)); + iStep = EStepFirstRequest; + iUpdateExpected = ETrue; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepFirstRequest: + { + // ...and expects to be notified with status active + iTest.INFO_PRINTF1(_L("Checking that status now active")); + iTest.TESTL(iPosStatusUpdateReceived); + iTest.TESTL(iReceivedPosStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusActive == iPositioningStatus->CurrentPositioningStatus()); + // sets the NI property to 1 as well (so now both are 1)... + iTest.INFO_PRINTF1(_L("Setting the NI property to be 1 (don't expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iNiPosStatusCategory, KLbsNiPositioningStatusKey, 1)); + iStep = EStepSecondRequest; + iUpdateExpected = EFalse; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepSecondRequest: + { + // ...and expects not to be notified and status should be active + iTest.INFO_PRINTF1(_L("Checking that the update wasn't received and that the status is active")); + iTest.TESTL(!iPosStatusUpdateReceived); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusActive == iPositioningStatus->CurrentPositioningStatus()); + // sets both the MO-LR and the NI properties to 0... + iTest.INFO_PRINTF1(_L("Setting both MO-LR and NI properties to 0 (expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iMoPosStatusCategory, KLbsMoPositioningStatusKey, 0)); + iTest.TESTL(KErrNone == RProperty::Set(iNiPosStatusCategory, KLbsNiPositioningStatusKey, 0)); + iStep = EStepThirdRequest; + iUpdateExpected = ETrue; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepThirdRequest: + { + // ...and expects to be notified with status not active + iTest.INFO_PRINTF1(_L("Checking update was received and status is not active")); + iTest.TESTL(iPosStatusUpdateReceived); + iTest.TESTL(iReceivedPosStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusNotActive == iPositioningStatus->CurrentPositioningStatus()); + // sets the NI property to 1... + iTest.INFO_PRINTF1(_L("Setting NI property to 1 (expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iNiPosStatusCategory, KLbsNiPositioningStatusKey, 1)); + iStep = EStepFourthRequest; + iUpdateExpected = ETrue; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepFourthRequest: + { + // ...and expects to be notified with status active + iTest.INFO_PRINTF1(_L("Checking update was received and status is now active")); + iTest.TESTL(iPosStatusUpdateReceived); + iTest.TESTL(iReceivedPosStatus == CLbsPositioningStatus::ELbsPositioningStatusActive); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusActive == iPositioningStatus->CurrentPositioningStatus()); + // sets the NI property to 2... + iTest.INFO_PRINTF1(_L("Setting NI property to 2 (don't expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iNiPosStatusCategory, KLbsNiPositioningStatusKey, 2)); + iStep = EStepFifthRequest; + iUpdateExpected = EFalse; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepFifthRequest: + { + // ...and expects no update and status to be active + iTest.INFO_PRINTF1(_L("Checking no update was received and status is still active")); + iTest.TESTL(!iPosStatusUpdateReceived); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusActive == iPositioningStatus->CurrentPositioningStatus()); + // sets the NI property to 0... + iTest.INFO_PRINTF1(_L("Setting the NI property to 0 (expect update)")); + iTest.TESTL(KErrNone == RProperty::Set(iNiPosStatusCategory, KLbsNiPositioningStatusKey, 0)); + iStep = EStepStop; + iUpdateExpected = ETrue; + iPosStatusUpdateReceived = EFalse; + iTimer.After(iStatus, KTimerInterval); + SetActive(); + break; + } + case EStepStop: + { + // ...and expects to be notified with status not active + iTest.INFO_PRINTF1(_L("Checking that an update was received and the status is now not active")); + iTest.TESTL(iPosStatusUpdateReceived); + iTest.TESTL(iReceivedPosStatus == CLbsPositioningStatus::ELbsPositioningStatusNotActive); + iTest.TESTL(CLbsPositioningStatus::ELbsPositioningStatusNotActive == iPositioningStatus->CurrentPositioningStatus()); + CActiveScheduler::Stop(); + break; + } + default: + { + iTest.INFO_PRINTF1(_L("Unexpected step setting")); + iTest.TESTL(EFalse); + } + } + } + +void CTe_LbsStatusTestManager::OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus) + { + Cancel(); + iTest.INFO_PRINTF1(_L("Received a status update")); + if(!iUpdateExpected) + { + iTest.INFO_PRINTF1(_L("It was an unexpected update, test failed")); + iTestFailed = ETrue; + } + else + { + switch(iStep) + { + case EStepInitial: + case EStepFirstRequest: + case EStepThirdRequest: + case EStepFourthRequest: + case EStepStop: + { + iPosStatusUpdateReceived = ETrue; + iReceivedPosStatus = aPositioningStatus; + break; + } + case EStepSecondRequest: + case EStepFifthRequest: + default: + { + iTest.INFO_PRINTF1(_L("Update received when in the wrong test step")); + iTestFailed = ETrue; + } + } + + } + iUpdateExpected = EFalse; + CompleteSelf(); + } + +TInt CTe_LbsStatusTestManager::RunError(TInt /*aError*/) + { + iTest.INFO_PRINTF1(_L("Test failed, stopping")); + CActiveScheduler::Stop(); + return KErrNone; + } + +void CTe_LbsStatusTestManager::DoCancel() + { + iTimer.Cancel(); + } + + +void CTe_LbsStatusTestManager::CompleteSelf() + { + iStatus = KRequestPending; + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + } + +// end of file + diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/group/10282266.cre Binary file locationmgmt/locationcore/lbsroot/group/10282266.cre has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/group/10282266.txt Binary file locationmgmt/locationcore/lbsroot/group/10282266.txt has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/inc/lbsrootcenrepdefs.h --- a/locationmgmt/locationcore/lbsroot/inc/lbsrootcenrepdefs.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbsroot/inc/lbsrootcenrepdefs.h Tue Aug 31 16:38:06 2010 +0300 @@ -90,5 +90,8 @@ // SUPL Push API const TUint32 KSuplPushAPIKey = 0x0000B000; +// Positioning Status API +const TUint32 KNiPositioningStatusAPIKey = 0x0000C000; +const TUint32 KMoPositioningStatusAPIKey = 0x0000C001; #endif // LBSROOTCENREPDEFS_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/inc/lbssystemstatelistener.h --- a/locationmgmt/locationcore/lbsroot/inc/lbssystemstatelistener.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbsroot/inc/lbssystemstatelistener.h Tue Aug 31 16:38:06 2010 +0300 @@ -126,6 +126,10 @@ * */ RSsmStateAwareSession iStateAwareSession; + /** + * Used to indicate if the System State Manager is available + */ + TBool iSystemStateManagerAvailable; #else /** * Handle to the startup property object diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/src/lbsroot.cpp --- a/locationmgmt/locationcore/lbsroot/src/lbsroot.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbsroot/src/lbsroot.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -51,6 +51,7 @@ #include "LbsExtendModuleInfo.h" #include "lbsqualityprofile.h" #include "lbssuplpushprops.h" +#include "lbspositioningstatusprops.h" #if defined(_DEBUG) #include "LbsOomTest.h" #endif @@ -364,7 +365,7 @@ RArray qualityArray; CleanupClosePushL(qualityArray); - qualityArray.ReserveL(5); + qualityArray.Reserve(5); // Only want to use the first file that is found. // The way TFindFile::FindByDir works, it will search @@ -453,6 +454,12 @@ LbsSuplPushProps::InitializeL(); + + // Initialize the NI-LR Positioning Status Property. + // Note the MO-LR Positioning Status Property is initialized by the + // location server + LbsPositioningStatusProps::InitializeNiPropertyL(); + #if defined(_DEBUG) //Initialize the OOM Test property. ROomRequest::InitializeL(); @@ -1452,7 +1459,7 @@ finished = err != KErrNone; if(!finished) { - iLbsProcess.AppendL(newProcess); + iLbsProcess.Append(newProcess); ++count; if (newProcess->IsRunning()) { diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsroot/src/lbssystemstatelistener.cpp --- a/locationmgmt/locationcore/lbsroot/src/lbssystemstatelistener.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbsroot/src/lbssystemstatelistener.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -74,7 +74,15 @@ void CLbsSystemStateListener::ConstructL() { #ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT - User::LeaveIfError( iStateAwareSession.Connect( KSM2GenMiddlewareDomain3 ) ); + TInt err = iStateAwareSession.Connect( KSM2GenMiddlewareDomain3 ); + if (err != KErrNone) + { + iSystemStateManagerAvailable = EFalse; + } + else + { + iSystemStateManagerAvailable = ETrue; + } #else User::LeaveIfError( iStartupObserver.Attach( KPSUidStartup, KPSGlobalSystemState, EOwnerThread ) ); @@ -102,15 +110,23 @@ { // Listen to global system state changes #ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT // From 9.2 onwards - TSsmState ssmState = iStateAwareSession.State(); - if( ssmState.MainState() != ESsmNormal ) + if (!iSystemStateManagerAvailable) { - iStateAwareSession.RequestStateNotification( iStatus ); - SetActive(); - } - else{ iObserver.HandleStartupCompletionL(); } + else + { + TSsmState ssmState = iStateAwareSession.State(); + if( ssmState.MainState() != ESsmNormal ) + { + iStateAwareSession.RequestStateNotification( iStatus ); + SetActive(); + } + else + { + iObserver.HandleStartupCompletionL(); + } + } #else // Prior to 9.2 TInt systemStatus = 0; User::LeaveIfError( iStartupObserver.Get( systemStatus ) ); diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locationcore/lbsrootapi/inc/lbspropertykeydefs.h --- a/locationmgmt/locationcore/lbsrootapi/inc/lbspropertykeydefs.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locationcore/lbsrootapi/inc/lbspropertykeydefs.h Tue Aug 31 16:38:06 2010 +0300 @@ -99,6 +99,7 @@ const TUint KLbsAssistDataApiBase = 0x08001000; //Base value for Assistance Data Api keys const TUint KLbsQualityProfileKeyBase = 0x09001000; //Base value for Quality Profile keys const TUint KLbsSuplPushAPIBase = 0x0A001000; //Base value for SUPL Push API keys +const TUint KLbsPositioningStatusAPIBase = 0x0B001000; //Base value for Positioning Status API keys #endif //LBSPROPERTYKEYDEFS_H diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorapis/conf/locationinfoconverter.confml Binary file locationmgmt/locmonitor/lbslocmonitorapis/conf/locationinfoconverter.confml has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorapis/conf/locationinfoconverter_20026814.crml Binary file locationmgmt/locmonitor/lbslocmonitorapis/conf/locationinfoconverter_20026814.crml has changed diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/group/lbslocationmonitor.mmp --- a/locationmgmt/locmonitor/lbslocmonitorserver/group/lbslocationmonitor.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/group/lbslocationmonitor.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -93,7 +93,9 @@ LIBRARY ecom.lib LIBRARY centralrepository.lib - +#ifdef SYMBIAN_FEATURE_MANAGER +LIBRARY featdiscovery.lib +#endif LIBRARY lbsinternalapi.lib LIBRARY lbslocationinfoconverterplugin.lib diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/inc/clbslocmonitorgpsbus.h --- a/locationmgmt/locmonitor/lbslocmonitorserver/inc/clbslocmonitorgpsbus.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/inc/clbslocmonitorgpsbus.h Tue Aug 31 16:38:06 2010 +0300 @@ -74,4 +74,4 @@ virtual void GpsPositionAvailableL(const TPosition& aPosition) = 0; }; -#endif // CLBSLOCMONITORGPSBUS_H +#endif // CLBSLOCMONITORGPSBUS_H \ No newline at end of file diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/src/clbsconversionpositionersubsession.cpp --- a/locationmgmt/locmonitor/lbslocmonitorserver/src/clbsconversionpositionersubsession.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/src/clbsconversionpositionersubsession.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -167,7 +167,7 @@ void CLbsConversionPositionerSubsession::CreateSubSessionL(const RMessage2& aMessage, const CSecureServerBase* aServer) { - LBSLOG(ELogP1,"CLbsAreaPositionerSubsession::CreateSubSessionL()"); + LBSLOG(ELogP1,"CLbsConversionPositionerSubsession::CreateSubSessionL()"); CSecureServerBase* server = const_cast (aServer); iLocMonitorServer = reinterpret_cast(server); iSubsessionId.iSessionPtr = static_cast(aMessage.Session()); diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorconversionhandler.cpp --- a/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorconversionhandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorconversionhandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include "clbslocmonitorconversionhandler.h" #include "lbslocmonitorclientconsts.h" diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorrequesthandler.cpp --- a/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorrequesthandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorrequesthandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -52,9 +52,7 @@ // Allocate space for 1 pointer to area info source object (Global Cell Id) iCurrentAreaInfo.ReserveL(ELastAreaInfoType); TLbsLocMonitorAreaInfoGci* locMonitorAreaInfoGci = new(ELeave) TLbsLocMonitorAreaInfoGci; - CleanupStack::PushL(locMonitorAreaInfoGci); - iCurrentAreaInfo.InsertL(static_cast(locMonitorAreaInfoGci), EGlobalCellIdType); - CleanupStack::Pop(locMonitorAreaInfoGci); + iCurrentAreaInfo.Insert(static_cast(locMonitorAreaInfoGci), EGlobalCellIdType); iDb.OpenL(); } @@ -109,7 +107,7 @@ if(iRequestQueue.Count()< KLbsLocMonitorMaxReadArraySize) { - iRequestQueue.AppendL(aMessage); + iRequestQueue.Append(aMessage); } else { @@ -133,7 +131,7 @@ LBSLOG(ELogP1,"->CLbsLocMonitorRequestHandler::PositionAvailableL"); if(iPositionsQueue.Count() < KLbsLocMonitorMaxWriteArraySize) { - iPositionsQueue.Append(aPosition); + iPositionsQueue.AppendL(aPosition); } else { @@ -737,7 +735,8 @@ case ELocMonDbGetPosArea: case ELocMonDbGetLast: // Check the request is still there before completing it - if (iRequestQueue.Count() > 0) + if ((iRequestQueue.Count() > 0) && + (iRequestQueue[0].Function() == DbReadOperationToOpCode(iOperationInProgress))) { CompleteClientRequest(0, aError); } diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorserver.cpp --- a/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorserver.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/lbslocmonitorserver/src/clbslocmonitorserver.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -18,7 +18,10 @@ #include "clbslocmonitorserver.h" #include "lbslocmonitorserverdata.h" #include "lbsdevloggermacros.h" - +#ifdef SYMBIAN_FEATURE_MANAGER + #include + #include +#endif // ------------------------------------------------------------------------------- // -------------------- Server's security policy ------------------------------- @@ -126,16 +129,22 @@ // Passing EFalse means the Location Monitor would be a // permanent process only terminated from root. // - if (FindRootProcess()) - { - BaseConstructL(EFalse); - } - else - { - BaseConstructL(ETrue); - //Set timer to two seconds - SetShutdownDelay(KShutDownDelay); - } + + #ifdef SYMBIAN_FEATURE_MANAGER + TBool locationManagementSupported = CFeatureDiscovery::IsFeatureSupportedL(NFeature::KLocationManagement); + #else + TBool locationManagementSupported(ETrue); + #endif + if(locationManagementSupported) + { + BaseConstructL(EFalse); + } + else + { + BaseConstructL(ETrue); + //Set timer to two seconds + SetShutdownDelay(KShutDownDelay); + } // Create the monitor which detects a closedown signal from // the LBS Root Process. @@ -150,7 +159,7 @@ // and set DB reader and writer as its observers. iAreaInfoFinders.ReserveL(1); - iAreaInfoFinders.InsertL(static_cast(CLbsLocMonitorNetworkInfoFinder::NewL()), ENetworkInfoFinder); + iAreaInfoFinders.Insert(static_cast(CLbsLocMonitorNetworkInfoFinder::NewL()), ENetworkInfoFinder); iAreaInfoFinders[ENetworkInfoFinder]->RegisterObserverL(*iRequestHandler); // Instantiate a position listener that will feed positions to the DB writer diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/test/testlocationmonitor/group/testlocationmonitor.mmp --- a/locationmgmt/locmonitor/test/testlocationmonitor/group/testlocationmonitor.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/test/testlocationmonitor/group/testlocationmonitor.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -104,6 +104,10 @@ LIBRARY ecom.lib LIBRARY centralrepository.lib +#ifdef SYMBIAN_FEATURE_MANAGER +LIBRARY featdiscovery.lib +#endif + LIBRARY lbsinternalapi.lib LIBRARY lbsnetinternalapi.lib diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorgpsbus.h --- a/locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorgpsbus.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorgpsbus.h Tue Aug 31 16:38:06 2010 +0300 @@ -74,4 +74,4 @@ virtual void GpsPositionAvailableL(const TPosition& aPosition) = 0; }; -#endif // CLBSLOCMONITORGPSBUS_H +#endif // CLBSLOCMONITORGPSBUS_H \ No newline at end of file diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorposlistener.h --- a/locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorposlistener.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/locmonitor/test/testlocationmonitor/inc/clbslocmonitorposlistener.h Tue Aug 31 16:38:06 2010 +0300 @@ -14,15 +14,12 @@ * Description: * */ - - #ifndef LBSLOCMONITORPOSLISTENER_H #define LBSLOCMONITORPOSLISTENER_H #include #include "lbsnetinternalapi.h" #include "clbslocmonitorgpsbus.h" - class MLbsLocMonitorPosListenerObserver { public: @@ -48,7 +45,6 @@ // From MLbsLocMonitorGpsBusObserver void GpsPositionAvailableL(const TPosition& aPosition); - private: CLbsLocMonitorPosListener(MLbsLocMonitorPosListenerObserver& aObserver); @@ -58,7 +54,6 @@ //Bus used to broadcast position within LBS CLbsLocMonitorGpsBus* iGpsBus; - private: // Observer interested in knowing about newly arrived diff -r 29dbbeac905d -r 0c2046328c85 locationmgmt/networkgateway/src/netrequestchannel.cpp --- a/locationmgmt/networkgateway/src/netrequestchannel.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationmgmt/networkgateway/src/netrequestchannel.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -122,11 +122,7 @@ if((static_cast(&aMessage))->IsEmergency()) { iEmergencyLocationRequestMsg = static_cast(aMessage); - TInt err = iEmergencyBuffer.Append(&iEmergencyLocationRequestMsg); - if ( KErrNone != err) - { - LBSLOG(ELogP1, "LOCATION BUFFER APPEND FAILED!!"); - } + iEmergencyBuffer.Append(&iEmergencyLocationRequestMsg); emergency = ETrue; } } @@ -135,11 +131,7 @@ if( (static_cast(&aMessage))->IsEmergency() ) { iEmergencyPrivacyRequestMsg = static_cast(aMessage); - TInt err = iEmergencyBuffer.Append(&iEmergencyPrivacyRequestMsg); - if ( KErrNone != err) - { - LBSLOG(ELogP1, "PRIVACY BUFFER APPEND FAILED!!"); - } + iEmergencyBuffer.Append(&iEmergencyPrivacyRequestMsg); emergency = ETrue; } } diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/inc/EPos_CPosLocMonitorReqHandlerHub.h --- a/locationrequestmgmt/locationserver/inc/EPos_CPosLocMonitorReqHandlerHub.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/inc/EPos_CPosLocMonitorReqHandlerHub.h Tue Aug 31 16:38:06 2010 +0300 @@ -90,8 +90,6 @@ CPosLocMonitorReqHandlerHub( const CPosLocMonitorReqHandlerHub& ); CPosLocMonitorReqHandlerHub& operator=( const CPosLocMonitorReqHandlerHub& ); - void PublishPosition(const TPositionInfo& aPositionInfo); - private: // Data // Session with the location monitor @@ -105,9 +103,6 @@ CPosLastKnownPosAreaHandler* iLastKnownPosAreaHandler; // Empty Last Known Position Store request CPosEmptyLastKnownPosStoreHandler* iEmptyLastKnownPosStoreHandler; - - // P&S Property for publishing Last Known Position - RProperty iLastKnownPosProperty; }; diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/inc/EPos_CPosModulesStatus.h --- a/locationrequestmgmt/locationserver/inc/EPos_CPosModulesStatus.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/inc/EPos_CPosModulesStatus.h Tue Aug 31 16:38:06 2010 +0300 @@ -95,7 +95,8 @@ TInt DoTimerCallback(); void RequestComplete(const RMessage2& aMessage, TInt aCompleteCode); void NotifyEventToSubscriber(TPositionModuleStatusEvent& aOccurredEvent, const CPosModulesStatus::TPosSubscriber& aSubscriber); - + void NotifyPosModuleStatusToSubscriber(const TPositionModuleId& aImplementationUid, const TPositionModuleStatus& aStatus); + private: // Data CPosModules& iModules; RPointerArray< MPosModuleStatusListener > iListenerArray; @@ -104,7 +105,8 @@ TInt iSequenceNo; CPeriodic* iTimer; TTimeIntervalMicroSeconds32 iTimerInterval; - + TUid iPosStatusCategory; + RArray iActivePosModuleArray; }; #endif // CPOSMODULESSTATUS_H diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/inc/EPos_ServerPanic.h --- a/locationrequestmgmt/locationserver/inc/EPos_ServerPanic.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/inc/EPos_ServerPanic.h Tue Aug 31 16:38:06 2010 +0300 @@ -29,8 +29,7 @@ EPosServerPanicSessionsCountInconsistency, EPosServerPanicUnexpectedEvent, EPosServerPanicTrackingInconsistency, - EPosServerPanicGeneralInconsistency, - EPosServerPanicLastKnownPosPnsNotDefined + EPosServerPanicGeneralInconsistency }; // FUNCTION PROTOTYPES diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/lbstestpsys/group/bld.inf --- a/locationrequestmgmt/locationserver/lbstestpsys/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/lbstestpsys/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -14,8 +14,6 @@ * Description: * */ -// BLD.INF -// Component description file PRJ_PLATFORMS DEFAULT diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/src/EPos_CPosLocMonitorReqHandlerHub.cpp --- a/locationrequestmgmt/locationserver/src/EPos_CPosLocMonitorReqHandlerHub.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/src/EPos_CPosLocMonitorReqHandlerHub.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -29,8 +29,6 @@ _LIT(KTraceFileName, "EPos_CPosLocMonitorReqHandlerHub.cpp"); #endif -const TInt KLocationServerSID=0x101f97b2; - // ============================== MEMBER FUNCTIONS =================================================== /** @@ -70,23 +68,7 @@ // Establish the subsession with the location monitor - As SetPositionInfoL() // is likely to be called whenever we have an update from the PSYs, the subsession // with the location monitor is created as a member variable instead of a local variable. - iLocMonSubSession.OpenL(iLocMonSession); - - // Attach to the Last Known Location P&S property - iLastKnownPosProperty.Attach( - KPosLastKnownLocationCategory, - KPosLastKnownLocation); - - // Get the last known position from loc monitor and publish it. - TRequestStatus status; - TPositionInfo posInfo; - iLocMonSubSession.GetLastKnownPosition(posInfo, status); - User::WaitForRequest(status); - - if (status.Int()==KErrNone) - { - PublishPosition(posInfo); - } + iLocMonSubSession.OpenL(iLocMonSession); } @@ -124,15 +106,8 @@ void CPosLocMonitorReqHandlerHub::SetPositionInfo( const TPositionInfo& aPositionInfo ) { DEBUG_TRACE("CPosLocMonitorReqHandlerHub::SetPositionInfoL", __LINE__) - - // check the latest position is newer than the last published position - TPosition newPos; - aPositionInfo.GetPosition(newPos); - - // publish the position - PublishPosition(aPositionInfo); - // pass the position to the loc monitor. - TInt errSetPos = iLocMonSubSession.SetLastKnownPosition(aPositionInfo); + + TInt errSetPos = iLocMonSubSession.SetLastKnownPosition(aPositionInfo); } /** @@ -341,29 +316,4 @@ } -/** - * PublishPosition - * >> Publishes the position to the Last Known Position P&S Property - * - */ -void CPosLocMonitorReqHandlerHub::PublishPosition(const TPositionInfo& aPositionInfo) - { - TPckg positionDes( aPositionInfo ); - TInt err = iLastKnownPosProperty.Set(positionDes); - if(err == KErrNotFound) - { - __ASSERT_DEBUG(EFalse, DebugPanic(EPosServerPanicLastKnownPosPnsNotDefined)); - // The key is not defined. This should not happen in normal case. - // However, if this happens, we define the key again - _LIT_SECURITY_POLICY_C1(readPolicy, ECapabilityReadDeviceData); - _LIT_SECURITY_POLICY_S0(writePolicy, KLocationServerSID); - //Error code ignored - iLastKnownPosProperty.Define( - KPosLastKnownLocationCategory, - KPosLastKnownLocation, - RProperty::EText, - readPolicy, - writePolicy); - } - } - + diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/src/EPos_CPosModulesStatus.cpp --- a/locationrequestmgmt/locationserver/src/EPos_CPosModulesStatus.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/src/EPos_CPosModulesStatus.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -17,6 +17,8 @@ // INCLUDE FILES #include +#include +#include #include #include #include "epos_mposmodulestatuslistener.h" @@ -24,6 +26,8 @@ #include "EPos_CPosModulesStatus.h" #include "EPos_Global.h" #include "EPos_ServerPanic.h" +#include "lbsrootcenrepdefs.h" +#include "lbspositioningstatusprops.h" // CONSTANTS #ifdef _DEBUG @@ -131,7 +135,17 @@ User::LeaveIfError(iModuleStatusArray.Append(module)); } CleanupStack::PopAndDestroy(idList); + iActivePosModuleArray.Reset(); + // Get the CategoryUid from the cenrep file owned by LbsRoot. + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + TInt posStatusCategory; + DEBUG_TRACE("Opening Status API Settings...", __LINE__) + User::LeaveIfError(rep->Get(KMoPositioningStatusAPIKey, posStatusCategory)); + DEBUG_TRACE("Opened Status API Settings...", __LINE__) + CleanupStack::PopAndDestroy(rep); + iPosStatusCategory = TUid::Uid(posStatusCategory); + iTimer = CPeriodic::NewL(EPriorityLow); } @@ -447,6 +461,8 @@ return; } + NotifyPosModuleStatusToSubscriber(aImplementationUid, aStatus); + TPosModule& storedModule = iModuleStatusArray[index]; TPositionModuleStatus::TDeviceStatus storedDeviceStatus = storedModule.iStatus.DeviceStatus(); @@ -472,7 +488,7 @@ storedModule.iDataQualityTimeStamp = iSequenceNo; event.SetOccurredEvents(KEventQuality | (event.OccurredEvents())); } - + // Has any event occurred? if (event.OccurredEvents()) { @@ -694,6 +710,44 @@ } /** + * Notify event to subscriber + */ +void CPosModulesStatus::NotifyPosModuleStatusToSubscriber(const TPositionModuleId& aImplementationUid, const TPositionModuleStatus& aStatus) + { + //1. Search for uid in the list of active uids + //2. If uid doesnt exist, and status is active - add uid in the list + //3. If uid exists and status is inactive - remove it from the list + + TPositionModuleStatus::TDeviceStatus devStatus = aStatus.DeviceStatus(); + TInt item = iActivePosModuleArray.Find(aImplementationUid); + if(item == KErrNotFound) + { + if(devStatus == TPositionModuleStatus::EDeviceActive || devStatus == TPositionModuleStatus::EDeviceReady) + { + //Ignoring error as RArray by default creates array of Granularity 8 + iActivePosModuleArray.Append(aImplementationUid); + } + } + else + { + if(!(devStatus == TPositionModuleStatus::EDeviceActive || devStatus == TPositionModuleStatus::EDeviceReady)) + { + iActivePosModuleArray.Remove(item); + } + } + + TInt itemCount = iActivePosModuleArray.Count(); + if(itemCount > 0) + { + RProperty::Set(iPosStatusCategory, KLbsMoPositioningStatusKey, itemCount); + } + else + { + RProperty::Set(iPosStatusCategory, KLbsMoPositioningStatusKey, 0); + } + } + +/** * Timer callback */ TInt CPosModulesStatus::TimerCallback(TAny* aModulesStatus) diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/src/EPos_CPosServer.cpp --- a/locationrequestmgmt/locationserver/src/EPos_CPosServer.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/src/EPos_CPosServer.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -41,6 +41,7 @@ #include "EPos_CPosLocMonitorReqHandlerHub.h" #include "EPos_Global.h" +#include "lbspositioningstatusprops.h" // CONSTANTS _LIT(KPosResourceFile, "\\private\\101F97B2\\eposserver.rsc"); @@ -178,12 +179,6 @@ } #endif // WINSCW - // make sure that root process is running - if(LocationManagementSupported && !FindRootProcess()) - { - User::Leave(KErrNotReady); - } - // Backup listener DEBUG_TRACE("Checking for backup or restore...", __LINE__) iBackupListener = CPosBackupListener::NewL(); @@ -219,10 +214,11 @@ DEBUG_TRACE("Setting Location Settings observer...", __LINE__) iModuleSettings->AddListenerL(*this); + // Define the MO Positioning Status property + LbsPositioningStatusProps::InitializeMoPropertyL(); + DEBUG_TRACE("Starting server active object...", __LINE__) StartL(KPositionServerName); - - } /** @@ -242,7 +238,6 @@ */ CPosServer::~CPosServer() { - delete iLocMonitorReqHandlerHub; delete iShutdown; @@ -250,7 +245,7 @@ delete iModuleSettings; delete iBackupListener; - + // This is needed because CPositioner might have used ECom (PSYs) REComSession::FinalClose(); } diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/src/EPos_CPosSubSession.cpp --- a/locationrequestmgmt/locationserver/src/EPos_CPosSubSession.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/src/EPos_CPosSubSession.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -106,6 +106,7 @@ SetPsyDefaultUpdateTimeOut(iPsyDefaultUpdateTimeOut); iLocMonitorReqHandlerHub = &aLocMonitorReqHandlerHub; + #if defined __WINSCW__ && defined SYMBIAN_CELLMO_CENTRIC iLocationManagementSupported = EFalse; #else @@ -115,7 +116,6 @@ __ASSERT_ALWAYS(EFalse, User::Invariant()); // Would happen on older versions of symbian OS if this code ever backported #endif // SYMBIAN_FEATURE_MANAGER #endif // __WINSCW__ && defined SYMBIAN_CELLMO_CENTRIC - if(iLocationManagementSupported) { diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/src/EPos_CPositionRequest.cpp --- a/locationrequestmgmt/locationserver/src/EPos_CPositionRequest.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/src/EPos_CPositionRequest.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -37,7 +37,6 @@ - // CONSTANTS #ifdef _DEBUG _LIT(KTraceFileName, "EPos_CPositionRequest.cpp"); @@ -166,7 +165,7 @@ } __ASSERT_DEBUG(iPositioner, DebugPanic(EPosServerPanicPositionerNotInitialized)); - + iMessage = aMessage; // Store parameter here in case of leave. // Clear previous position data diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/test/te_locsrv/scripts/te_locsrvsuite.script --- a/locationrequestmgmt/locationserver/test/te_locsrv/scripts/te_locsrvsuite.script Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/test/te_locsrv/scripts/te_locsrvsuite.script Tue Aug 31 16:38:06 2010 +0300 @@ -52,7 +52,6 @@ CopyFile c:\testdata\configs\0313302A.cre c:\private\10202be9\persists\0313302A.cre REMOVE_PREFIX - RUN_TEST_STEP 100 te_locsrvsuite OpenTestStep RUN_TEST_STEP 100 te_locsrvsuite GetFixTestStep diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/test/te_locsrvtestlocmonsuite/group/bld.inf --- a/locationrequestmgmt/locationserver/test/te_locsrvtestlocmonsuite/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/test/te_locsrvtestlocmonsuite/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -20,7 +20,7 @@ // Locserver's unit test is dependent on these test location monitor components // Modified Location Server that uses the test location monitor API #include "../../testLocMonitorApi/group/bld.inf" -#include "../../testLocMonitorServer/group/BLD.INF" +#include "../../testLocMonitorServer/group/bld.inf" #include "../../testLocServer/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/test/testLocServer/group/testlocserver.mmp --- a/locationrequestmgmt/locationserver/test/testLocServer/group/testlocserver.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/test/testLocServer/group/testlocserver.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -63,6 +63,9 @@ USERINCLUDE ../inc USERINCLUDE ../../../inc USERINCLUDE ../../../resource +USERINCLUDE ../../../../../locationmgmt/locationcore/lbsroot/inc +USERINCLUDE ../../../../../locationmgmt/locationcore/lbsrootapi/inc +USERINCLUDE ../../../../../locationmgmt/locationcore/LbsInternalApi/inc // for the lbspositioningstatusprops.h USERINCLUDE ../../../../../locationmgmt/locationcore/LbsNetInternalApi/inc // for the lbsnetinternalapi.h USERINCLUDE ../../../../../locationmgmt/locationcore/LbsPartnerCommon/inc USERINCLUDE ../../../../../locationmgmt/locationcore/LbsNetRegStatusInt/inc @@ -83,6 +86,7 @@ LIBRARY bafl.lib LIBRARY efsrv.lib LIBRARY ecom.lib +LIBRARY centralrepository.lib LIBRARY lbsadmin.lib LIBRARY lbsnetinternalapi.lib LIBRARY lbsnetregstatusint.lib diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/locationserver/traces/osttracedefinitions.h --- a/locationrequestmgmt/locationserver/traces/osttracedefinitions.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/locationserver/traces/osttracedefinitions.h Tue Aug 31 16:38:06 2010 +0300 @@ -18,5 +18,5 @@ #ifndef __OSTTRACEDEFINITIONS_H__ #define __OSTTRACEDEFINITIONS_H__ -#include +#include #endif diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/QueryAndNotificationAPI/group/Bld.inf --- a/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/QueryAndNotificationAPI/group/Bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/QueryAndNotificationAPI/group/Bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -20,7 +20,7 @@ // File needs to be exported to allow UI layer to access it. Otherwise code duplication/differentiation will occur. -../inc/EPos_TPosQNInputData.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/EPos_TPosQNInputData.h) +../inc/EPos_TPosQNInputData.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(lbs/epos_tposqninputdata.h) // End of file diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/group/BLD.INF --- a/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/LbsQueryAndNotification/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -13,5 +13,5 @@ // Description: // -#include "../PrivacyDataTypes/group/Bld.inf" -#include "../QueryAndNotificationAPI/group/Bld.inf" +#include "../PrivacyDataTypes/group/bld.inf" +#include "../QueryAndNotificationAPI/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/group/BLD.INF --- a/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/LBSPrivacyNotification/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -13,8 +13,8 @@ // Description: // -#include "../LbsPrivacyController/group/BLD.INF" -#include "../LbsPrivacyExtNotifiers/group/BLD.INF" +#include "../LbsPrivacyController/group/bld.inf" +#include "../LbsPrivacyExtNotifiers/group/bld.inf" #ifdef SYMBIAN_LOCATION_PRIVACY_V2 - #include "../LbsQueryAndNotification/group/BLD.INF" + #include "../LbsQueryAndNotification/group/bld.inf" #endif diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/LbsX3P/group/BLD.INF --- a/locationrequestmgmt/networkrequesthandler/LbsX3P/group/BLD.INF Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/LbsX3P/group/BLD.INF Tue Aug 31 16:38:06 2010 +0300 @@ -14,5 +14,5 @@ // // Main projects, in build order -#include "../LbsX3PApi/group/BLD.INF" +#include "../LbsX3PApi/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/group/bld.inf --- a/locationrequestmgmt/networkrequesthandler/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -13,8 +13,8 @@ // Description: // -#include "../LBSPrivacyNotification/group/BLD.INF" -#include "../LbsX3P/group/BLD.INF" +#include "../LBSPrivacyNotification/group/bld.inf" +#include "../LbsX3P/group/bld.inf" #include "../test/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/group/lbsnetworkrequesthandler.mmp --- a/locationrequestmgmt/networkrequesthandler/group/lbsnetworkrequesthandler.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/group/lbsnetworkrequesthandler.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -91,6 +91,7 @@ USERINCLUDE ../inc USERINCLUDE ../../../locationmgmt/locationcore/LbsCommonInternalDataTypes/inc +USERINCLUDE ../../../locationmgmt/locationcore/lbsroot/inc USERINCLUDE ../../../locationmgmt/locationcore/lbsrootapi/inc USERINCLUDE ../../../locationmgmt/locationcore/LbsInternalApi/inc USERINCLUDE ../../../locationmgmt/locationcore/LbsNetInternalApi/inc @@ -112,6 +113,7 @@ LIBRARY euser.lib LIBRARY estor.lib +LIBRARY centralrepository.lib LIBRARY lbs.lib LIBRARY lbsloccommon.lib LIBRARY lbsx3p.lib diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/inc/EPos_CPosDialogCtrl.h --- a/locationrequestmgmt/networkrequesthandler/inc/EPos_CPosDialogCtrl.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/inc/EPos_CPosDialogCtrl.h Tue Aug 31 16:38:06 2010 +0300 @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include "EPos_PrivacyInternal.h" #include @@ -210,6 +210,7 @@ void DeferNotificationL(); void CreateNotificationAndEnqueueL(); void UpdateProperty(); + private: // Data RNotifier iNotifier; RArray iRequestQueue; diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/inc/privacyandlocationrequesthandler.h --- a/locationrequestmgmt/networkrequesthandler/inc/privacyandlocationrequesthandler.h Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/inc/privacyandlocationrequesthandler.h Tue Aug 31 16:38:06 2010 +0300 @@ -121,6 +121,8 @@ TPositionModuleInfoExtended::TDeviceGpsModeCapabilities DeviceGpsModeCaps(); CLbsAdmin::TLbsBehaviourMode BehaviourMode(); RLbsNetworkRegistrationStatus& NetworkRegistrationStatus(); + void IncrementPositioningStatus(); + void DecrementPositioningStatus(); private: static TBool IsSessionIdEqual( @@ -162,6 +164,12 @@ CLbsPrivLocFsm* iMolRFsm; CLbsPrivLocFsm* iX3pFsm; + + // ETrue if location management is supported + TBool iLocationManagementSupported; + + // Category of the Positioning Status P&S Keys + TUid iPosStatusCategory; }; @@ -437,7 +445,7 @@ RLbsNetworkRegistrationStatus& LbsNetworkRegistrationStatus(); TPositionModuleInfoExtended::TDeviceGpsModeCapabilities DeviceGpsModeCaps(); CLbsAdmin::TLbsBehaviourMode BehaviourMode(); - + void IncrementPositioningStatus(); protected: CLbsPrivLocFsm* iFsm; @@ -776,9 +784,16 @@ TLbsNetSessionIdInt& LastLocReqSessionId() { return iLastLocReqSessionId; } - TBool& WasPrivacyResponseReceivedStateExited() + TBool& WasPrivacyResponseReceivedStateExited() { return iWasPrivacyResponseReceivedStateExited; } + TLbsExternalRequestInfo::TRequestType& ExternalRequestType() + { return iExternalRequestType; } + + TBool& WasPositioningStatusIncremented() + { return iPositioningStatusIncremented; } + + private: // Allow access for friend classes (the states and the NRH) friend class CLbsPrivLocStateBase; friend class CLbsNetworkRequestHandler; @@ -860,6 +875,12 @@ // Has a privacy request been rejected? TBool iWasPrivacyResponseReceivedStateExited; + // The type of external request that has been recieved. + TLbsExternalRequestInfo::TRequestType iExternalRequestType; + + // Indicates if this session resulted in the positioning status being incremented. + TBool iPositioningStatusIncremented; + private: // the states CLbsPrivLocStateBase* iCurrentState; diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/src/lbsnetworkrequesthandler.cpp --- a/locationrequestmgmt/networkrequesthandler/src/lbsnetworkrequesthandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/src/lbsnetworkrequesthandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -102,8 +102,7 @@ TBool locationManagementSupported(ETrue); #endif // SYMBIAN_FEATURE_MANAGER #endif // __WINSCW__ && defined SYMBIAN_CELLMO_CENTRIC - - + if(locationManagementSupported) { iX3pHandler = CX3pHandler::NewL(*iNgMessageSwitch, iPrivLocHandler->X3pStatusHandler(), *iAdmin); diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/src/lbsnrhx3pserver.cpp --- a/locationrequestmgmt/networkrequesthandler/src/lbsnrhx3pserver.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/src/lbsnrhx3pserver.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -314,6 +314,7 @@ RThread client; aMessage.Client(client); iClientUid = client.SecureId(); + client.Close(); } } } diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/src/ngmessageswitch.cpp --- a/locationrequestmgmt/networkrequesthandler/src/ngmessageswitch.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/src/ngmessageswitch.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -135,12 +135,7 @@ void CNGMessageSendBuffer::BufferData(TLbsNetInternalMsgBase* aData) { // Add the data to the buffer - TInt err = iBuffer.Append(aData); - if( err != KErrNone ) - { - LBSLOG_ERR2(ELogP3, "CNGMessageSendBuffer::BufferData Append failed: %d", err); - delete aData; - } + iBuffer.Append(aData); } void CNGMessageSendBuffer::BufferEmergencyData(TLbsNetInternalMsgBase* aData) @@ -515,11 +510,8 @@ // not being saved. Note we do enure that the mobiles position // does get sent out to the network - its juts means that the callback // that delivers the REF pos to the privacy system does not happen! - TInt err = iRefPosBuffer.Append(item); - if( KErrNone != err ) - { - LBSLOG_ERR(ELogP3, "CNGMessageSwitch::ProcessNetChannelMessage: iRefPosBuffer.Append Failed!!"); - } + iRefPosBuffer.Append(item); + for (TInt i = 0; i < count; i++) { iObservers[i]->OnNetLocReferenceUpdate(msg->SessionId(), positionInfo); @@ -541,12 +533,7 @@ item->iSessionId = msg->SessionId(); Mem::Copy(&item->iPosInfo, &positionInfo, positionInfo.PositionClassSize()); - TInt err = iFNPPosBuffer.Append(item); // here, ownership passes to pointer array! - if( KErrNone != err ) - { - delete item; - LBSLOG_ERR(ELogP3, "CNGMessageSwitch::ProcessNetChannelMessage: iFNPPosBuffer.Append Failed!!"); - } + iFNPPosBuffer.Append(item); // here, ownership passes to pointer array! } for (TInt i = 0; i < count; i++) { diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/src/privacyandlocationrequesthandler.cpp --- a/locationrequestmgmt/networkrequesthandler/src/privacyandlocationrequesthandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/src/privacyandlocationrequesthandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -15,6 +15,12 @@ #include #include +#include + +#ifdef SYMBIAN_FEATURE_MANAGER + #include + #include +#endif // LBS-specific #include @@ -25,6 +31,8 @@ #include "nrhpanic.h" #include "lbsdevloggermacros.h" #include "lbsqualityprofile.h" +#include "lbsrootcenrepdefs.h" +#include "lbspositioningstatusprops.h" #include "privacyandlocationrequesthandler.h" @@ -93,6 +101,10 @@ iFsmArray.ResetAndDestroy(); + // force the count of active network initiated positioning sessions to 0 + // this supports the pre-APE centric architecture wherein the NRH is + // destroyed on completion of network initiated positioning. + RProperty::Set(iPosStatusCategory, KLbsNiPositioningStatusKey, 0); delete iEmergencyFsm; delete iAgpsInterface; @@ -161,6 +173,24 @@ } LBSLOG2(ELogP3, "Using KLbsSpecialFeatureIntermediateFutileUpdate = %d", specialFeature); iSpecialFeatureIntermediateFutileUpdate = (specialFeature == CLbsAdmin::ESpecialFeatureOn) ? ETrue : EFalse; + +#if defined __WINSCW__ && defined SYMBIAN_CELLMO_CENTRIC + iLocationManagementSupported = EFalse; +#else +#ifdef SYMBIAN_FEATURE_MANAGER + iLocationManagementSupported = CFeatureDiscovery::IsFeatureSupportedL(NFeature::KLocationManagement); +#else + __ASSERT_ALWAYS(EFalse, User::Invariant()); // Would happen on older versions of symbian OS if this code ever backported +#endif // SYMBIAN_FEATURE_MANAGER +#endif // __WINSCW__ && defined SYMBIAN_CELLMO_CENTRIC + + // Get the CategoryUid from the cenrep file owned by LbsRoot for accessing Positioning Status P&S Keys + CRepository* rep = CRepository::NewLC(KLbsCenRepUid); + TInt posStatusCategory; + err = rep->Get(KNiPositioningStatusAPIKey, posStatusCategory); + User::LeaveIfError(err); + CleanupStack::PopAndDestroy(rep); + iPosStatusCategory = TUid::Uid(posStatusCategory); } @@ -282,12 +312,7 @@ if (fsm) { // Add the state machine to the buffer. - TInt err = iFsmArray.Append(fsm); - if( err != KErrNone ) - { - delete fsm; - return NULL; - } + iFsmArray.Append(fsm); iNumActiveSessions++; // conceptually, a session starts when a Fsm is created for it @@ -690,6 +715,36 @@ { return iNetRegStatus; } + +// increments the P&S key tracking mobile terminated positioning requests +void CPrivacyAndLocationHandler::IncrementPositioningStatus() + { + TInt count; + RProperty::Get(iPosStatusCategory, KLbsNiPositioningStatusKey, count); + RProperty::Set(iPosStatusCategory, KLbsNiPositioningStatusKey, count+1); + } + +// decrements the P&S key tracking mobile terminated positioning requests +// if location management is supported. In the alternative architecture, +// the NRH is not aware of the positioning session's progress, but is +// transient. Therefore the positioning status is set to zero in the +// class destructor. +void CPrivacyAndLocationHandler::DecrementPositioningStatus() + { + if (iLocationManagementSupported) + { + TInt count; + RProperty::Get(iPosStatusCategory, KLbsNiPositioningStatusKey, count); + if(count>0) + { + RProperty::Set(iPosStatusCategory, KLbsNiPositioningStatusKey, count-1); + } + else + { + LBSLOG_ERR(ELogP3, "CPrivacyAndLocationHandler::DecrementPositioningStatus() - Incorrect Positioning Status count\n"); + } + } + } /** @@ -920,7 +975,7 @@ if(aSessionId == iFsm->SessionId()) { iFsm->ExitData().SetExitData(TPrivLocStateExitData::EExitSessionComplete, aReason); - iFsm->ChangeState(CLbsPrivLocFsm::EStateIdle, aSessionId); + iFsm->ChangeState(CLbsPrivLocFsm::EStateIdle, aSessionId); } } @@ -1059,6 +1114,17 @@ return iFsm->PrivLocHandler().NetworkRegistrationStatus(); } +/* + * increments the network initiated positioning status count + * and remembers that it has done + */ +void CLbsPrivLocStateBase::IncrementPositioningStatus() + { + iFsm->PrivLocHandler().IncrementPositioningStatus(); + iFsm->WasPositioningStatusIncremented() = ETrue; + } + + // ----------------------------------------------------------------------------- // // ----------------------- Class CLbsPrivLocIdleState -------------------- @@ -1134,7 +1200,7 @@ // The request relates to a rejected privacy request // or a request for this session which has already been answered. // In either case, it should be refused. The message is sent to the - // network gateway as apart of exit from the state, but we want to + // network gateway as a part of exit from the state, but we want to // remain in Idle state. iFsm->ExitData().SetExitData(TPrivLocStateExitData::EExitCancelledByPrivacyController, KErrAccessDenied); iFsm->ChangeState(CLbsPrivLocFsm::EStateIdle, aSessionId); @@ -1188,6 +1254,7 @@ const TLbsNetPosRequestPrivacyInt& aNetPosRequestPrivacy) { iFsm->SessionType() = aSessionType; + iFsm->ExternalRequestType() = aExternalRequestInfo.RequestType(); iFsm->ExitData().SetExitData(TPrivLocStateExitData::EExitPrivacyRequestReceived, KErrNone); TPrivLocWaitPrivResponseParams privacyRequestParams( aSessionId, aSessionType, @@ -1297,7 +1364,7 @@ } } - // For MtLrs the Protcol module should not + // For MtLrs the Protocol module should not // send a REF position until after we have sent the Priv response to the PM // Inform network of the privacy response for normal privacy requests. @@ -1371,6 +1438,13 @@ // Tell the AGPS handler that we are going to start a location request soon. AgpsInterface()->PreStartPositioning(iFsm->SessionId(), iFsm->IsEmergency()); + // Set the Positioning Status for the UI indicator. + // Not done for silent requests. + if (iFsm->ExternalRequestType() < TLbsExternalRequestInfo::ERequestSingleShotSilent) + { + IncrementPositioningStatus(); + } + if(iFsm->LocReqReceived()) { TPrivLocWaitLocationUpdateParams updateRequestParams(iFsm->SessionId(), @@ -2492,7 +2566,8 @@ iRefPosProcessed(EFalse), iLocReqReceived(EFalse), iReqCancelled(EFalse), - iWasPrivacyResponseReceivedStateExited(EFalse) + iWasPrivacyResponseReceivedStateExited(EFalse), + iPositioningStatusIncremented(EFalse) { } @@ -2617,6 +2692,14 @@ { LBSLOG3(ELogP3, "FSM(%d) OnSessionComplete reason=%d",iSessionId.SessionNum(),aReason); iCurrentState->OnSessionComplete(aSessionId, aReason); + + // update the positioning status. Note this is updated only if it was previously + // incremented as a result of this session. + if (WasPositioningStatusIncremented()) + { + PrivLocHandler().DecrementPositioningStatus(); + WasPositioningStatusIncremented() = EFalse; + } } // ----------------------------------------------------------------------------- diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/src/privacyhandler.cpp --- a/locationrequestmgmt/networkrequesthandler/src/privacyhandler.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/src/privacyhandler.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -971,11 +971,7 @@ privReq->SetRequestPrivacy(aNetPosRequestPrivacy); } privReq->SetStartTime(); - TInt err = iRequestBuffer.Append(privReq); - if(err != KErrNone) - { - LBSLOG2(ELogP4, "CPrivacyControllerHandler::ProcessNetworkLocationRequest : iRequestBuffer.Append failed with - %d error",err); - } + iRequestBuffer.Append(privReq); iAlwaysVerify = EFalse; if (iNrhServer == 0) diff -r 29dbbeac905d -r 0c2046328c85 locationrequestmgmt/networkrequesthandler/test/group/t_lbsnetworkrequesthandler.mmp --- a/locationrequestmgmt/networkrequesthandler/test/group/t_lbsnetworkrequesthandler.mmp Thu Aug 19 11:17:26 2010 +0300 +++ b/locationrequestmgmt/networkrequesthandler/test/group/t_lbsnetworkrequesthandler.mmp Tue Aug 31 16:38:06 2010 +0300 @@ -99,6 +99,7 @@ USERINCLUDE ../../inc USERINCLUDE ../../../../locationmgmt/locationcore/LbsCommonInternalDataTypes/inc +USERINCLUDE ../../../../locationmgmt/locationcore/lbsroot/inc USERINCLUDE ../../../../locationmgmt/locationcore/lbsrootapi/inc USERINCLUDE ../../../../locationmgmt/locationcore/LbsInternalApi/inc USERINCLUDE ../../../../locationmgmt/locationcore/LbsNetInternalApi/inc @@ -119,6 +120,7 @@ LIBRARY euser.lib LIBRARY estor.lib +LIBRARY centralrepository.lib LIBRARY lbs.lib LIBRARY lbsloccommon.lib LIBRARY lbsx3p.lib diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/networkpmasn1_pub/group/lbs_networkpmasn1_pub.mrp --- a/networkprotocolmodules/networkpmasn1_pub/group/lbs_networkpmasn1_pub.mrp Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/networkpmasn1_pub/group/lbs_networkpmasn1_pub.mrp Tue Aug 31 16:38:06 2010 +0300 @@ -18,8 +18,6 @@ source \sf\os\lbs\networkprotocolmodules\networkpmasn1_pub -exports \sf\os\lbs\networkprotocolmodules\networkpmasn1_pub\group - notes_source \component_defs\release.src ipr E diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/src/cconfigmanager.cpp --- a/networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/src/cconfigmanager.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/networkprotocolmodule/LbsProtocolModule/src/cconfigmanager.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -108,7 +108,7 @@ }; } - iDecisionTable.AppendL(value); + iDecisionTable.Append(value); } } diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/privacyprotocolmodule/ClientAPI/NetworkPrivacyAPI/inc/EPos_NetworkPrivacyPanicDeclaration.h --- a/networkprotocolmodules/privacyprotocolmodule/ClientAPI/NetworkPrivacyAPI/inc/EPos_NetworkPrivacyPanicDeclaration.h Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/privacyprotocolmodule/ClientAPI/NetworkPrivacyAPI/inc/EPos_NetworkPrivacyPanicDeclaration.h Tue Aug 31 16:38:06 2010 +0300 @@ -26,7 +26,7 @@ #ifndef NETWORKPRIVACYPANICDECLARATION_H #define NETWORKPRIVACYPANICDECLARATION_H -#include +#include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp --- a/networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -19,6 +19,10 @@ #include "privacyshutdown.h" +// P&S Key we check how many outstanding requests there are +const TInt EPrivacyNumberOfRequest = 0x1028720F; + + /** Static public constructor */ @@ -39,7 +43,8 @@ add timer to active scheduler. */ CPrivacyShutdown::CPrivacyShutdown() : CTimer(CActive::EPriorityStandard), - iState(EShutdownStateIdle) + iState(EShutdownStateIdle), + iTimerCount(0) { LBSLOG(ELogP1, "CPrivacyShutdown::CPrivacyShutdown() Begin\n"); CActiveScheduler::Add(this); @@ -79,6 +84,7 @@ { LBSLOG(ELogP1, "CPrivacyShutdown::Start() Begin\n"); iState = EShutdownStateTimerStarted; + iTimerCount = aDelay; After(aDelay); LBSLOG(ELogP1, "CPrivacyShutdown::Start() End\n"); } @@ -102,16 +108,27 @@ { LBSLOG(ELogP1, "CPrivacyShutdown::RunL() Begin\n"); - iState = EShutdownStateShutdownRequested; - - RLbsSystemController systemController; - RProcess process; - systemController.OpenL(process.SecureId()); - CleanupClosePushL(systemController); - - systemController.RequestSystemCloseDown(ETrue); - - CleanupStack::PopAndDestroy(&systemController); + // Check if there are any notifications outstanding + TInt outstandingRequests = 0; + RProperty::Get(KUidSystemCategory, EPrivacyNumberOfRequest, outstandingRequests); + if (outstandingRequests > 0) + { + LBSLOG(ELogP1, "CPrivacyShutdown::RunL() - Restarting Timer\n") + Start(iTimerCount); + } + else + { + iState = EShutdownStateShutdownRequested; + + RLbsSystemController systemController; + RProcess process; + systemController.OpenL(process.SecureId()); + CleanupClosePushL(systemController); + + systemController.RequestSystemCloseDown(ETrue); + + CleanupStack::PopAndDestroy(&systemController); + } LBSLOG(ELogP1, "CPrivacyShutdown::RunL() End\n"); } diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/privacyprotocolmodule/test/group/bld.inf --- a/networkprotocolmodules/privacyprotocolmodule/test/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/privacyprotocolmodule/test/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -14,5 +14,5 @@ // #include "../te_lbsnetworkprivacy/group/bld.inf" -#include "../te_dummynetgateway/group/BLD.INF" -#include "../te_lbsprivfwcap/group/BLD.INF" +#include "../te_dummynetgateway/group/bld.inf" +#include "../te_lbsprivfwcap/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/suplprotocolmodule/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/suplprotocolmodule/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,28 @@ +// Copyright (c) 2008-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: +// + +PRJ_EXPORTS +lbssupl.iby /epoc32/rom/include/lbssupl.iby + +// ConfML files +../conf/suplprotocolmodule.confml OS_LAYER_EXPORTS_CONFML(suplprotocolmodule.confml) +../conf/suplprotocolmodule_10285AA8.crml OS_LAYER_EXPORTS_CRML(suplprotocolmodule_10285aa8.crml) + +// Main projects, in build order +#include "../HostSettingsApi/group/bld.inf" +#include "../SuplConnectionManager/group/bld.inf" +#include "../SuplProtocol/group/bld.inf" + +#include "../SuplPushAPI/group/bld.inf" diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/suplprotocolmodule/group/lbs_suplprotocolmodule.mrp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/suplprotocolmodule/group/lbs_suplprotocolmodule.mrp Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,37 @@ +# +# Copyright (c) 2010 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: +# + +component lbs_suplprotocolmodule + +source \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\ + +binary \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\group all + +exports \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\group + +notes_source \component_defs\release.src + + +ipr E +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\HostSettingsAPI\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\SuplConnectionManager\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\SuplRrlpProtocol\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\SuplProtocol\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\SuplPushAPI\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\SuplRrlpAsn1\test +ipr T \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\test +ipr B \sf\os\lbs\networkprotocolmodules\suplprotocolmodule\test\export + diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/suplprotocolmodule/group/lbssupl.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/suplprotocolmodule/group/lbssupl.iby Tue Aug 31 16:38:06 2010 +0300 @@ -0,0 +1,36 @@ +// Copyright (c) 2008-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: +// + +#ifndef __LBS_SUPL_IBY__ +#define __LBS_SUPL_IBY__ + + +#if !defined(SYMBIAN_EXCLUDE_LOCATION) && defined(SYMBIAN_INCLUDE_LOCATION_SUPLv10) + +#include "supldevlogger.iby" +#include "asn1export.iby" +#include "asn1supl.iby" +#include "asn1rrlp.iby" +#include "lbshostsettings.iby" +#include "suplrrlpprotocol.iby" +#include "lbssuplconnectionmanager.iby" +#include "suplprotocolmodule.iby" +#include "lbssuplpush.iby" +#include "suplrrlpasn1.iby" + +#endif // SYMBIAN_EXCLUDE_LOCATION, SYMBIAN_INCLUDE_LOCATION_SUPLv10 + + +#endif // __LBS_SUPL_IBY__ diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/suplproxyprotocolmodule/clientapi/suplposmsgpluginapi/src/epos_comasuplreqasstdata.cpp --- a/networkprotocolmodules/suplproxyprotocolmodule/clientapi/suplposmsgpluginapi/src/epos_comasuplreqasstdata.cpp Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/suplproxyprotocolmodule/clientapi/suplposmsgpluginapi/src/epos_comasuplreqasstdata.cpp Tue Aug 31 16:38:06 2010 +0300 @@ -127,11 +127,7 @@ aSatInfo.Reset(); for(TInt i = 0; iProcessSessionComplete(0x%x)\n", aSessionId.SessionNum()); + iObserver.ProcessSessionComplete(aSessionId, KErrNotReady); + return; + } const TLbsNetPosRequestOptions reqParams = static_cast (aOptions); @@ -563,12 +572,7 @@ // Add this request to the queue of outstanding requests LBSLOG2(ELogP1, "CSuplProxyProtocol::RequestNetworkLocation() Adding sppm session object 0x%x to array\n", aSessionId); - TInt err = iLbsNetSessions.Append(netSession); - if(KErrNone != err) - { - LBSLOG(ELogP1, "CSuplProxyProtocol::RequestNetworkLocation() - iLbsNetSessions.Append failed!!\n"); - delete netSession; - } + iLbsNetSessions.Append(netSession); } //Create the prioritised list of positioning methods @@ -647,6 +651,13 @@ LBSLOG2(ELogP1, "-->ProcessSessionComplete(0x%x)\n", aSessionId.SessionNum()); iObserver.ProcessSessionComplete(aSessionId, KErrNone); } + else if(!iSuplTiApiWrapper) + { + //Error, TI Plugin not available. Complete the request with error + LBSLOG_ERR(ELogP1, "Error, TI Plugin not available, not able to complete request"); + LBSLOG2(ELogP1, "-->ProcessSessionComplete(0x%x)\n", aSessionId.SessionNum()); + iObserver.ProcessSessionComplete(aSessionId, KErrNotReady); + } else { @@ -722,13 +733,7 @@ // Add this request to the queue of outstanding requests LBSLOG2(ELogP1, "CSuplProxyProtocol::RequestSelfLocation() Adding sppm session object 0x%x to array\n", aSessionId); - TInt err = iLbsNetSessions.Append(netSession); - if(KErrNone != err) - { - LBSLOG(ELogP1, "CSuplProxyProtocol::RequestSelfLocation() - iLbsNetSessions.Append failed!!\n"); - delete netSession; - return; - } + iLbsNetSessions.Append(netSession); } //Inform LBS of the start of an MOLR - TB @@ -868,6 +873,7 @@ void CSuplProxyProtocol::ConstructL() { LBSLOG(ELogP1, "CSuplProxyProtocol::ConstructL() Begin\n"); + TInt err = KErrNone; CRepository* cenRep = CRepository::NewLC(KLbsSuplProxyProtocolModuleCenRepUid); TInt refLocSourceId(KErrNone); @@ -887,14 +893,18 @@ LBSLOG(ELogP9, "->A CLbsSuplTiApi::NewL() SUPL-FW\n"); LBSLOG2(ELogP9, " > Uid = 0x%08X\n", suplTiPluginImplUid); - iSuplTiApiWrapper = CLbsSuplTiApi::NewL(*this, TUid::Uid(suplTiPluginImplUid)); + TRAP(err, iSuplTiApiWrapper = CLbsSuplTiApi::NewL(*this, TUid::Uid(suplTiPluginImplUid))); + if(err != KErrNone) + { + LBSLOG_ERR2(ELogP1, "Failed to load the Terminal Initiation API Plugin (error: %d)", err); + } CLbsAdmin* admin = CLbsAdmin::NewL(); CleanupStack::PushL(admin); // Read admin setting for maximum number of external locate requests TUint maxExternalLocateRequests = KLbsDefaultMaximumExternalLocateRequests; - TInt err = admin->Get(KLbsSettingMaximumExternalLocateRequests, maxExternalLocateRequests); + err = admin->Get(KLbsSettingMaximumExternalLocateRequests, maxExternalLocateRequests); if (err != KErrNone) { LBSLOG_ERR2(ELogP4, "Failed to get KLbsSettingMaximumExternalLocateRequests (err %d)", err); @@ -980,19 +990,7 @@ { netSession->SetExtRequestInfo(extReqInfo); LBSLOG2(ELogP1, "CSuplProxyProtocol::ProcessRequest() Adding sppm session object 0x%x to array\n", sessionId); - TInt err = iLbsNetSessions.Append(netSession); - if (err != KErrNone) - { - // A problem occured and the request could not be added to the buffer - LBSLOG_WARN2(ELogP1, "CSuplProxyProtocol::ProcessRequest() - iLbsNetSessions.Append failed!! - (%d)\n", err); - if (aRequest->IsResponseRequired()) - { - aRequest->CompleteRequest(err); - } - delete netSession; - delete aRequest; - return; - } + iLbsNetSessions.Append(netSession); } } } @@ -1147,12 +1145,7 @@ netSession->SetPosSessionStarted(ETrue); netSession->SetSessionStarted(); LBSLOG2(ELogP1, "CSuplProxyProtocol::NotifySubSessionOpen() Adding sppm session object 0x%x to array\n", sessionId); - TInt err = iLbsNetSessions.Append(netSession); - if(KErrNone != err) - { - LBSLOG(ELogP1, "CSuplProxyProtocol::NotifySubSessionOpen() - iLbsNetSessions.Append failed!!\n"); - delete netSession; - } + iLbsNetSessions.Append(netSession); } //Update LBS of the currently active services including this new session type StatusUpdate(MLbsNetworkProtocolObserver2::EServiceTriggeredMolr,ETrue); @@ -1551,7 +1544,7 @@ const TLbsNetSessionId& aSessionId) { LBSLOG(ELogP1, "CSuplProxyProtocol::RequestComplete() Begin\n"); - + TInt index = iLbsNetSessions.Find(aSessionId, CLbsNetSession::IsSessionMatch); diff -r 29dbbeac905d -r 0c2046328c85 networkprotocolmodules/suplproxyprotocolmodule/test/group/bld.inf --- a/networkprotocolmodules/suplproxyprotocolmodule/test/group/bld.inf Thu Aug 19 11:17:26 2010 +0300 +++ b/networkprotocolmodules/suplproxyprotocolmodule/test/group/bld.inf Tue Aug 31 16:38:06 2010 +0300 @@ -19,4 +19,4 @@ #include "../te_lbs_sppm_privfwcap/group/bld.inf" #include "../te_terminalplugin/group/bld.inf" #include "../te_suplproxyprotocolmodule/group/bld.inf" -#include "../te_sppm_reflocplugin/group/bld.inf" +#include "../te_sppm_reflocplugin/group/bld.inf" \ No newline at end of file diff -r 29dbbeac905d -r 0c2046328c85 package_definition.xml --- a/package_definition.xml Thu Aug 19 11:17:26 2010 +0300 +++ b/package_definition.xml Tue Aug 31 16:38:06 2010 +0300 @@ -20,6 +20,9 @@ + + + diff -r 29dbbeac905d -r 0c2046328c85 sysdef_1_4_0.dtd --- a/sysdef_1_4_0.dtd Thu Aug 19 11:17:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -