# HG changeset patch # User Mikko Sunikka # Date 1257505500 -7200 # Node ID 8d692d9f828f5df16ae430b9e8bde5d7c3c1e22a # Parent 44bb89c96acb6ce9dfc25a7f0dd80a9a1e9bf9d3 Revision: 200943 Kit: 200945 diff -r 44bb89c96acb -r 8d692d9f828f package_definition.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_definition.xml Fri Nov 06 13:05:00 2009 +0200 @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/inc/locationcb.h --- a/serviceproviders/sapi_location/inc/locationcb.h Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/inc/locationcb.h Fri Nov 06 13:05:00 2009 +0200 @@ -68,7 +68,7 @@ LocationInterfaceCB( MLiwNotifyCallback* aCallBack , const CLiwGenericParamList* aInParmList , - TPositionModuleInfo* aModuleInfo, + //TPositionModuleInfo* aModuleInfo, TInt32 aTransactionId = 0 ) ; @@ -88,7 +88,7 @@ static LocationInterfaceCB * NewL( MLiwNotifyCallback* aCallBack , const CLiwGenericParamList* aInParmList, - TPositionModuleInfo* aModuleInfo , + //TPositionModuleInfo* aModuleInfo , TInt32 aTransactionId = 0) ; /** diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/inc/locationinterface.h --- a/serviceproviders/sapi_location/inc/locationinterface.h Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/inc/locationinterface.h Fri Nov 06 13:05:00 2009 +0200 @@ -26,7 +26,6 @@ // CONSTANTS -const TInt KMaxSupportedFields = 25 ; @@ -271,7 +270,6 @@ * Positioning module used for location estimation */ - TInt SetSupportedFields() ; /** * Internal utility function which gets all location information which module supports @@ -296,27 +294,13 @@ /** - * Member variable which holds all the Generic position information - */ - - HPositionGenericInfo *iGenericPosInfo ; - - /** - * Class member which contains module information which is used for location esitmation - */ - TPositionModuleInfo iModuleInfo ; - /** * Class member which is used to obtain updates of Last Known Position */ TPosition iPosition; - /** - * Class member which contains all the field ids of all the supported Hposition info fields - */ - - TPositionFieldId iFieldList[KMaxSupportedFields] ; - - + * Generic position class + */ + HPositionGenericInfo *iGenericPosition; }; diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/locationservice/inc/locationservice.h --- a/serviceproviders/sapi_location/locationservice/inc/locationservice.h Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/locationservice/inc/locationservice.h Fri Nov 06 13:05:00 2009 +0200 @@ -40,6 +40,7 @@ _LIT8(KVerAccuracy,"VerticalAccuracy"); _LIT(KUnknown,"Unknown"); +const TInt KMaxSupportedFields = 25 ; /** * Default Update options @@ -57,6 +58,7 @@ const TInt KSMaxAge = 0; const TInt KGetLocationReq = 0 ; const TInt KTraceReq = 1 ; +const TInt errServiceNotReady = 1006; /** * Enums required for mathoperations @@ -279,6 +281,8 @@ */ void GetHighAccuracyModuleL(TPositionModuleId* aModId); + TInt SetSupportedFields() ; + TInt SetRequestingField(); @@ -319,6 +323,20 @@ * Module indtifier used by location server for getting location information */ TPositionModuleId iModuleId ; + /** + * Member variable which holds all the Generic position information + */ + + HPositionGenericInfo *iGenericPosInfo ; + /** + * Class member which contains all the field ids of all the supported Hposition info fields + */ + + TPositionFieldId iFieldList[KMaxSupportedFields] ; + /** + * Class member which contains module information which is used for location esitmation + */ + TPositionModuleInfo iModuleInfo ; }; diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/locationservice/src/locationcoreimp.cpp --- a/serviceproviders/sapi_location/locationservice/src/locationcoreimp.cpp Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/locationservice/src/locationcoreimp.cpp Fri Nov 06 13:05:00 2009 +0200 @@ -65,7 +65,7 @@ User :: LeaveIfError((this->iPositioner).Open(aPositionServer)) ; } - CleanupClosePushL(iPositioner); + //CleanupClosePushL(iPositioner); //Set the identity of this particular requestor User::LeaveIfError( (this->iPositioner).SetRequestor( CRequestor::ERequestorService, @@ -75,14 +75,14 @@ this->iPosInfoBase = &(this->iPositionInfo); this->iRequestType = aRequestType; this->iGenericPosInfo = HPositionGenericInfo :: NewL(); - CleanupStack :: PushL(this->iGenericPosInfo); + //CleanupStack :: PushL(this->iGenericPosInfo); if(aList) { User :: LeaveIfError((this->iGenericPosInfo)->SetRequestedFields(aList)); } - CleanupStack ::Pop(this->iGenericPosInfo ); + //CleanupStack ::Pop(this->iGenericPosInfo ); CleanupStack::Pop(&iPositioner); } /** @@ -197,7 +197,10 @@ } iPositioner.NotifyPositionUpdate( *iGenericPosInfo, iStatus ); - SetActive() ; + if (!IsActive()) + { + SetActive(); + } return KErrNone ; } @@ -234,7 +237,10 @@ if(!this->IsStatusComplete()) { iPositioner.NotifyPositionUpdate( *iGenericPosInfo, iStatus ); - SetActive(); + if (!IsActive()) + { + SetActive(); + } } } @@ -254,7 +260,10 @@ { iPositioner.NotifyPositionUpdate( *iGenericPosInfo, iStatus); - SetActive(); + if (!IsActive()) + { + SetActive(); + } } } diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/locationservice/src/locationservice.cpp --- a/serviceproviders/sapi_location/locationservice/src/locationservice.cpp Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/locationservice/src/locationservice.cpp Fri Nov 06 13:05:00 2009 +0200 @@ -31,6 +31,7 @@ EXPORT_C CLocationService :: CLocationService() + :iGenericPosInfo(NULL) { //No Implementation Required Here } @@ -60,6 +61,7 @@ } iPosServer.Close(); iRegTable.Close(); + delete iGenericPosInfo; } @@ -89,12 +91,18 @@ void CLocationService::ConstructL() { User :: LeaveIfError(iPosServer.Connect()); - CleanupClosePushL(iPosServer); + //CleanupClosePushL(iPosServer); + iGenericPosInfo = HPositionGenericInfo::NewL() ; + + if ( !iGenericPosInfo ) + { + User::Leave( KErrNoMemory ) ; + } //Get the module id of the default module available - User :: LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); + //User :: LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); - CleanupStack::Pop(&iPosServer); + //CleanupStack::Pop(&iPosServer); } /** @@ -111,7 +119,7 @@ //Flags used for indicating if a particular module is found TInt termInternalFlag = 0; TInt termFlag = 0 ,assisFlag = 0 ,networkFlag = 0,unknownFlag = 0; - TInt err; + //TInt err; User::LeaveIfError(iPosServer.GetNumModules(numOfModules)); @@ -171,26 +179,43 @@ */ EXPORT_C void CLocationService :: GetLocationL( TPositionInfoBase* aInfoBase , - const TPositionUpdateOptions* aUpdateOpts,TBool aEnableHighAcc ) + const TPositionUpdateOptions* aUpdateOpts, + TBool aEnableHighAcc ) { + //Check if atleast one of the module is enabled + TInt modError = iPosServer.GetDefaultModuleId(iModuleId); + if (modError) + { + User::Leave(errServiceNotReady); + } // Open subsession to the position server TPositionModuleId ModuleId; - TInt error; + //TInt error; if(aEnableHighAcc) { GetHighAccuracyModuleL(&ModuleId); User::LeaveIfError(iPositioner.Open(iPosServer,ModuleId)); + iModuleId = ModuleId; } else { User::LeaveIfError(iPositioner.Open(iPosServer)); + User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); } - CleanupClosePushL(iPositioner); - + //CleanupClosePushL(iPositioner); + TInt errorInprocessing = KErrNone; + errorInprocessing = SetRequestingField(); + if(errorInprocessing) + { + iPositioner.Close(); + User::Leave(errorInprocessing); + } + // (static_cast(aInfoBase))->ClearRequestedFields() ; + (static_cast(aInfoBase))->SetRequestedFields(iFieldList) ; //setting identity for this requestor User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService, CRequestor::EFormatApplication, @@ -200,7 +225,14 @@ if(aUpdateOpts) { - User::LeaveIfError(iPositioner.SetUpdateOptions(*aUpdateOpts)); + TInt errorInprocessing = iPositioner.SetUpdateOptions(*aUpdateOpts); + + if(errorInprocessing) + { + iPositioner.Close(); + User::Leave(errorInprocessing); + } + } else @@ -227,7 +259,8 @@ iPositioner.NotifyPositionUpdate( *aInfoBase, status ); User :: WaitForRequest(status) ; - CleanupStack::PopAndDestroy(&iPositioner); + //CleanupStack::PopAndDestroy(&iPositioner); + iPositioner.Close(); User::LeaveIfError(status.Int()); } @@ -237,7 +270,8 @@ * positioning moulde, currently this methods only supports info of default module indentifier */ - EXPORT_C TInt CLocationService :: GetModuleInfo( TPositionModuleInfoBase& aModuleInfo ) const +EXPORT_C TInt CLocationService :: GetModuleInfo( + TPositionModuleInfoBase& aModuleInfo ) const { return iPosServer.GetModuleInfoById(iModuleId , aModuleInfo) ; @@ -252,27 +286,35 @@ */ EXPORT_C void CLocationService :: GetLocationL( MLocationCallBack* aCallBackObj , TInt aLocationInfoCategory, - TPositionFieldIdList aFieldList , + TPositionFieldIdList/* aFieldList*/ , const TPositionUpdateOptions* aUpateOptions, TBool aEnableHighAcc ) { + TInt modError = iPosServer.GetDefaultModuleId(iModuleId); + if (modError) + { + User::Leave(errServiceNotReady); + } TPositionModuleId ModuleId; if(aEnableHighAcc) { GetHighAccuracyModuleL(&ModuleId); + iModuleId = ModuleId; } else { //Indicates that when opening the subsession ,moudleId need not be specified ModuleId.iUid = 0; + User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); } TInt err = KErrGeneral; + User::LeaveIfError(SetSupportedFields()); CGetLoc* activeGetLoc = CGetLoc :: NewL(iPosServer , - aFieldList , + iFieldList , KGetLocationRequest, aLocationInfoCategory, ModuleId) ; @@ -300,10 +342,15 @@ EXPORT_C void CLocationService :: TraceL( MLocationCallBack* aCallBackObj , TInt aLocationInfoCategory, - TPositionFieldIdList aFiledList , + TPositionFieldIdList/* aFiledList*/ , const TPositionUpdateOptions* aUpateOptions, TBool aEnableHighAcc ) { + TInt modError = iPosServer.GetDefaultModuleId(iModuleId); + if (modError) + { + User::Leave(errServiceNotReady); + } TPositionModuleId ModuleId; if(aEnableHighAcc) { @@ -312,15 +359,17 @@ { User::Leave(KErrGeneral); } + iModuleId = ModuleId; } else { //Indicates that when opening the subsession ,moudleId need not be specified ModuleId.iUid = 0; + User::LeaveIfError(iPosServer.GetDefaultModuleId(iModuleId)); } CGetLoc* activeTrace = CGetLoc :: NewL(iPosServer , - aFiledList , + iFieldList , KTraceRequest, aLocationInfoCategory, ModuleId) ; @@ -501,3 +550,127 @@ return KErrNotFound; } +TInt CLocationService :: SetSupportedFields() + { + + TUint fieldIter = 0 ; + //get positioning module information + TInt infoerr = GetModuleInfo(iModuleInfo); + if (infoerr) + { + return infoerr; + } + + TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; + + if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros + { + iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; + + iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; + iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; + iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; + } + + if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports + { // + + iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; + iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; + iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; + iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; + iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; + + } + + if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports + { + + iFieldList[fieldIter++] = EPositionFieldTrueCourse ; + iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; + iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; + iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; + + } + + + if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports + { + + iFieldList[fieldIter++] = EPositionFieldHeading ; + iFieldList[fieldIter++] = EPositionFieldHeadingError ; + iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; + iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; + + } + + + iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination + iGenericPosInfo->ClearRequestedFields() ; + iGenericPosInfo->SetRequestedFields(iFieldList) ; + + + return KErrNone ; + } +TInt CLocationService :: SetRequestingField() + { + + TUint fieldIter = 0 ; + //get positioning module information + TInt infoerr = GetModuleInfo(iModuleInfo); + if (infoerr) + { + return infoerr; + } + + TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; + + if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros + { + iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; + + iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; + iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; + iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; + } + + if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports + { // + + iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; + iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; + iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; + iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; + iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; + + } + + if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports + { + + iFieldList[fieldIter++] = EPositionFieldTrueCourse ; + iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; + iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; + iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; + + } + + + if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports + { + + iFieldList[fieldIter++] = EPositionFieldHeading ; + iFieldList[fieldIter++] = EPositionFieldHeadingError ; + iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; + iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; + + } + + + iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination + + + + return KErrNone ; + } + diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/src/locationcallBack.cpp --- a/serviceproviders/sapi_location/src/locationcallBack.cpp Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/src/locationcallBack.cpp Fri Nov 06 13:05:00 2009 +0200 @@ -43,11 +43,11 @@ LocationInterfaceCB :: LocationInterfaceCB( MLiwNotifyCallback* aCallBack , const CLiwGenericParamList* aInParmList , - TPositionModuleInfo* aPositionModuleInfo , + //TPositionModuleInfo* aPositionModuleInfo , TInt32 aTransactionId ) : iCallBack(aCallBack), iTransactionId(aTransactionId) { - iModuleInfo = aPositionModuleInfo ; + //iModuleInfo = aPositionModuleInfo ; //Extract the location info category from inputparamlist TInt index = 0; @@ -85,11 +85,11 @@ LocationInterfaceCB *LocationInterfaceCB :: NewL(MLiwNotifyCallback* aCallBack , const CLiwGenericParamList* aInParmList , - TPositionModuleInfo* aPositionModuleInfo, + //TPositionModuleInfo* aPositionModuleInfo, TInt32 aTransactionid ) { LocationInterfaceCB *self = new(ELeave) LocationInterfaceCB(aCallBack , aInParmList , - aPositionModuleInfo, aTransactionid) ; + /*aPositionModuleInfo,*/ aTransactionid) ; CleanupStack::PushL(self); //Store the outparam and in param list @@ -194,12 +194,11 @@ result->InsertL(KVerAccuracy, TLiwVariant((TReal)Val1)) ; } - TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo->Capabilities() ; + //TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo->Capabilities() ; if ( iLocinfoCategory == EGenericInfo ) { - if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //Populate output param with speed info - { + TReal32 speedinfo = 0 ; if(!aGenericInfo->GetValue(EPositionFieldHorizontalSpeed , speedinfo) ) //Extract speed @@ -215,11 +214,8 @@ - } //End of EcapabilitySpeed - if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Extract satellitinfo if any and append it - { //as part of out parm list TInt8 satinfo = 0; if(!aGenericInfo->GetValue(EPositionFieldSatelliteNumInView , satinfo)) @@ -232,10 +228,8 @@ } - } + - if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Extract direction info if any and append it - { // as part of out parm list TReal32 direcinfo = 0; if(!aGenericInfo->GetValue(EPositionFieldTrueCourse , direcinfo) ) @@ -264,17 +258,13 @@ } - } - - - if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Extract compass info if any and append it - { // as part of out parm list + TReal32 compassinfo ; if(!aGenericInfo->GetValue(EPositionFieldHeading , compassinfo) ) { result->InsertL(KPositionFieldHeading,TLiwVariant((TReal)compassinfo)); - ; + } @@ -300,7 +290,6 @@ - } /*if( currCapability & TPositionModuleInfo :: ECapabilityNmea ) //Extract Nmea info if any and append it { //as part of out param list diff -r 44bb89c96acb -r 8d692d9f828f serviceproviders/sapi_location/src/locationinterface.cpp --- a/serviceproviders/sapi_location/src/locationinterface.cpp Mon Oct 26 08:20:53 2009 +0200 +++ b/serviceproviders/sapi_location/src/locationinterface.cpp Fri Nov 06 13:05:00 2009 +0200 @@ -51,7 +51,7 @@ delete iHandleCB[iter] ; } iHandleCB.Close(); - delete iGenericPosInfo ; + delete iGenericPosition ; } @@ -66,16 +66,16 @@ } void CLocationInterface::ConstructL() { - iGenericPosInfo = HPositionGenericInfo::NewL() ; + iGenericPosition = HPositionGenericInfo::NewL() ; - if ( !iGenericPosInfo ) + if ( !iGenericPosition ) { User::Leave( KErrNoMemory ) ; } iLocationService = CLocationService::NewL() ; - User::LeaveIfError( iLocationService->GetModuleInfo( iModuleInfo ) ); - User::LeaveIfError( this->SetSupportedFields() ); + //User::LeaveIfError( iLocationService->GetModuleInfo( iModuleInfo ) ); + //User::LeaveIfError( this->SetSupportedFields() ); } @@ -148,6 +148,11 @@ sapiErr = SErrMissingArgument; break; } + case SErrServiceNotReady: + { + sapiErr = SErrServiceNotReady; + break; + } default: { sapiErr = SErrGeneralError; @@ -245,7 +250,7 @@ User::LeaveIfError(iLocationService->GetLastKnownLoc(iPosition)) ; TUint category1 = EBasicInfo; - iGenericPosInfo->SetPosition(iPosition); + iGenericPosition->SetPosition(iPosition); GetLocationInfo(aOutParamList, category1) ; } @@ -434,13 +439,13 @@ } LocationInterfaceCB* callback = LocationInterfaceCB::NewL(aCallback, - &aInParamList, &iModuleInfo, transid) ; + &aInParamList, /*&iModuleInfo,*/ transid) ; CleanupStack :: PushL(callback) ; callback->SetRequestType(KGetLocationCB) ; iLocationService->GetLocationL(callback ,category, - iFieldList,updateoptions,enableHighAcc) ; + NULL,updateoptions,enableHighAcc) ; //Store the allocatioed address iHandleCB.Append(callback); //Append Transcationid to out list @@ -581,7 +586,7 @@ } } - iLocationService->GetLocationL(iGenericPosInfo, + iLocationService->GetLocationL(iGenericPosition, updateOptions,enableHighAcc) ; GetLocationInfo(aOutParamList,category) ; @@ -782,12 +787,12 @@ LocationInterfaceCB* callback = LocationInterfaceCB::NewL(aCallback, - &aOutParamList, &iModuleInfo, transid) ; + &aOutParamList,/* &iModuleInfo,*/ transid) ; CleanupStack :: PushL(callback) ; callback->SetRequestType(KTraceCB) ; - iLocationService->TraceL( callback, catergory,iFieldList, + iLocationService->TraceL( callback, catergory,NULL, updateOption,enableHighAcc ); iHandleCB.Append(callback); aOutParamList.AppendL(TLiwGenericParam(KTransactionId, @@ -1272,71 +1277,6 @@ * positioning module used */ -TInt CLocationInterface :: SetSupportedFields() - { - //Extract all the information Accuracy, timestamp, satellite and course info and append - // to out parmlist - - - - TUint fieldIter = 0 ; - - TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; - - if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros - { - iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; - iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; - iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; - iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; - } - - if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports - { // - - iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; - iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; - iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; - iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; - iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; - - } - - if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports - { - - iFieldList[fieldIter++] = EPositionFieldTrueCourse ; - iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; - iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; - iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; - - } - - - if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports - { - - iFieldList[fieldIter++] = EPositionFieldHeading ; - iFieldList[fieldIter++] = EPositionFieldHeadingError ; - iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; - iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; - - } - - /*if(currCapability & TPositionModuleInfo :: ECapabilityNmea) - { - - iFieldList[fieldIter++] = EPositionFieldNMEASentences ; - iFieldList[fieldIter++] = EPositionFieldNMEASentencesStart ; - - }*/ - iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination - iGenericPosInfo->ClearRequestedFields() ; - iGenericPosInfo->SetRequestedFields(iFieldList) ; - - - return KErrNone ; - } /** * CLocationInterface :: GetLocationInfo an internal utility funtionin, gets all the location information @@ -1347,7 +1287,7 @@ void CLocationInterface :: GetLocationInfo( CLiwGenericParamList& aOutParamList,TInt aPosInfoCategory) { TPosition pos ; - iGenericPosInfo->GetPosition(pos) ; //Now populate outparam list with latitude, longitude and altitude data + iGenericPosition->GetPosition(pos) ; //Now populate outparam list with latitude, longitude and altitude data CLiwDefaultMap *Result = CLiwDefaultMap::NewL() ; @@ -1382,22 +1322,21 @@ TLiwVariant MapVariant(Result) ; - TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; + //TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; if ( aPosInfoCategory == EGenericPositionInfo ) { - if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //Populate output param with speed info - { + TReal32 speedinfo = 0 ; - if(!iGenericPosInfo->GetValue(EPositionFieldHorizontalSpeed , speedinfo)) //Extract speed + if(!iGenericPosition->GetValue(EPositionFieldHorizontalSpeed , speedinfo)) //Extract speed { Result->InsertL(KPositionFieldHorizontalSpeed ,TLiwVariant((TReal) speedinfo)) ; } - if(!iGenericPosInfo->GetValue(EPositionFieldHorizontalSpeedError , speedinfo) ) + if(!iGenericPosition->GetValue(EPositionFieldHorizontalSpeedError , speedinfo) ) { Result->InsertL(KPositionFieldHorizontalSpeedError ,TLiwVariant((TReal) speedinfo)) ; } @@ -1414,104 +1353,80 @@ }*/ - } //End of EcapabilitySpeed - if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Extract satellitinfo if any and append it - { //as part of out parm list - TInt8 satinfo = 0; + TInt8 satinfo = 0; - if(!iGenericPosInfo->GetValue(EPositionFieldSatelliteNumInView , satinfo)) - { - Result->InsertL(KPositionFieldSatelliteNumInView ,TLiwVariant((TReal) satinfo)) ; - } - if(!iGenericPosInfo->GetValue(EPositionFieldSatelliteNumUsed , satinfo)) - { - Result->InsertL(KPositionFieldSatelliteNumUsed ,TLiwVariant((TReal) satinfo)) ; - } - } //End of ECapabilitySatellite + if(!iGenericPosition->GetValue(EPositionFieldSatelliteNumInView , satinfo)) + { + Result->InsertL(KPositionFieldSatelliteNumInView ,TLiwVariant((TReal) satinfo)) ; + } + if(!iGenericPosition->GetValue(EPositionFieldSatelliteNumUsed , satinfo)) + { + Result->InsertL(KPositionFieldSatelliteNumUsed ,TLiwVariant((TReal) satinfo)) ; + } + - if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Extract direction info if any and append it - { // as part of out parm list + TReal32 direcinfo = 0; - if(!iGenericPosInfo->GetValue(EPositionFieldTrueCourse , direcinfo) ) + if(!iGenericPosition->GetValue(EPositionFieldTrueCourse , direcinfo) ) { Result->InsertL(KPositionFieldTrueCourse ,TLiwVariant((TReal) direcinfo)) ; } - if(!iGenericPosInfo->GetValue(EPositionFieldTrueCourseError , direcinfo) ) + if(!iGenericPosition->GetValue(EPositionFieldTrueCourseError , direcinfo) ) { Result->InsertL(KPositionFieldTrueCourseError ,TLiwVariant((TReal) direcinfo)) ; } - if(!iGenericPosInfo->GetValue(EPositionFieldMagneticCourseError , direcinfo) ) + if(!iGenericPosition->GetValue(EPositionFieldMagneticCourseError , direcinfo) ) { Result->InsertL(KPositionFieldMagneticCourseError ,TLiwVariant((TReal) direcinfo)) ; } - if(!iGenericPosInfo->GetValue(EPositionFieldMagneticCourse , direcinfo) ) + if(!iGenericPosition->GetValue(EPositionFieldMagneticCourse , direcinfo) ) { Result->InsertL(KPositionFieldMagneticCourse ,TLiwVariant((TReal) direcinfo)) ; } - } // End of ECapabilityDirection + - if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Extract compass info if any and append it - { // as part of out parm list - TReal32 compassinfo ; + + TReal32 compassinfo ; - - if(!iGenericPosInfo->GetValue(EPositionFieldHeading , compassinfo) ) - { - Result->InsertL(KPositionFieldHeading ,TLiwVariant((TReal) compassinfo)) ; - } + + if(!iGenericPosition->GetValue(EPositionFieldHeading , compassinfo) ) + { + Result->InsertL(KPositionFieldHeading ,TLiwVariant((TReal) compassinfo)) ; + } - if(!iGenericPosInfo->GetValue(EPositionFieldHeadingError , compassinfo) ) - { - Result->InsertL(KPositionFieldHeadingError ,TLiwVariant((TReal) compassinfo)) ; - } + if(!iGenericPosition->GetValue(EPositionFieldHeadingError , compassinfo) ) + { + Result->InsertL(KPositionFieldHeadingError ,TLiwVariant((TReal) compassinfo)) ; + } - if(!iGenericPosInfo->GetValue(EPositionFieldMagneticHeading , compassinfo) ) - { - Result->InsertL(KPositionFieldMagneticHeading ,TLiwVariant((TReal) compassinfo)) ; - } + if(!iGenericPosition->GetValue(EPositionFieldMagneticHeading , compassinfo) ) + { + Result->InsertL(KPositionFieldMagneticHeading ,TLiwVariant((TReal) compassinfo)) ; + } - if(!iGenericPosInfo->GetValue(EPositionFieldMagneticHeadingError , compassinfo) ) - { - Result->InsertL(KPositionFieldMagneticHeadingError ,TLiwVariant((TReal) compassinfo)) ; - - } - + if(!iGenericPosition->GetValue(EPositionFieldMagneticHeadingError , compassinfo) ) + { + Result->InsertL(KPositionFieldMagneticHeadingError ,TLiwVariant((TReal) compassinfo)) ; - } //End of ECapabilityCompass - - /*if( currCapability & TPositionModuleInfo :: ECapabilityNmea ) //Extract Nmea info if any and append it - { //as part of out param list - TUint8 numSentences ; - - if(!iGenericPosInfo->GetValue(EPositionFieldNMEASentences , numSentences) ) - { - Result->InsertL(KPositionFieldNMEASentences ,TLiwVariant((TReal) numSentences)) ; + } } - TBuf8 <20> nmeaSentences ; - if(!iGenericPosInfo->GetValue(EPositionFieldNMEASentencesStart , nmeaSentences) ) - { - Result->InsertL(KPositionFieldNMEASentencesStart ,TLiwVariant( numSentences)) ; - } - }*/ //End of ECapabilityNmea - - } aOutParamList.AppendL(TLiwGenericParam ( KLocationMap, TLiwVariant(Result))) ; Result->DecRef(); CleanupStack :: Pop(Result) ;