/** Create the module information depending on module id(i'e either agps_manager or network location manager) Fills a module info class/structure with values depending on the module id. @param aModuleId module id within the ini file @param aModInfo The modified module info structure. */ EXPORT_C void T_LbsUtils::Create_ModuleInfoL(TPositionModuleId aModuleId, TPositionModuleInfo& aModInfo) { TPositionQuality posQuality; // Use these values if the module is a-gps manager if (aModuleId == (TUid::Uid(APGS_MODINFO_MODULE_ID))) { aModInfo.SetModuleId(TUid::Uid(APGS_MODINFO_MODULE_ID)); aModInfo.SetIsAvailable(AGPS_MODINFO_IS_AVAILABLE); aModInfo.SetModuleName(AGPS_MODINFO_MOD_NAME); aModInfo.SetTechnologyType(AGPS_MODINFO_TECHNOLOGY_TYPE); aModInfo.SetDeviceLocation(AGPS_MODINFO_DEVICE_LOCATION); aModInfo.SetCapabilities(AGPS_MODINFO_CAPABILITIES); // Classes Supported - this is a binary bitmap, but support for each class // has to be set individually. TInt supportedClasses = AGPS_MODINFO_CLASSES_SUPPORTED_POSITION_FAMILY; TPositionClassFamily currentClass = EPositionInfoFamily; while(currentClass <= EPositionUpdateOptionsFamily) { aModInfo.SetClassesSupported(currentClass, supportedClasses & 1); supportedClasses >>= 1; currentClass = static_cast<TPositionClassFamily>(static_cast<TInt>(currentClass) + 1); } aModInfo.SetVersion(AGPS_MODINFO_VERSION); posQuality.SetTimeToFirstFix(AGPS_MODINFO_TIME_TO_FIRST_FIX); posQuality.SetTimeToNextFix(AGPS_MODINFO_TIME_TO_NEXT_FIX); posQuality.SetHorizontalAccuracy(AGPS_MODINFO_HORIZONTAL_ACCURACY); posQuality.SetVerticalAccuracy(AGPS_MODINFO_VERTICAL_ACCURACY); posQuality.SetCostIndicator(AGPS_MODINFO_COST_INDICATOR); posQuality.SetPowerConsumption(AGPS_MODINFO_POWER_CONSUMPTION); aModInfo.SetPositionQuality(posQuality); }
void CTe_LbsIniFileReader::ReadPosQualityCriteria(TPositionQuality& aPosQuality) { TInt intValue; TInt64 int64Value; TReal32 real32Value; // Get the Time To First Fix FindVar(KTimeToFirstFixStr,int64Value); __ASSERT_ALWAYS( int64Value <= KMaxTInt, User::Panic(KLbsNetPsyTestPanic, ELbsPanicBadFirstFixValue)); if(int64Value>=0) { int64Value *= KMilliSecToMicroSecConverter; aPosQuality.SetTimeToFirstFix(int64Value); } else { aPosQuality.SetTimeToFirstFix(0); } // Get the Time To Next Fix FindVar(KTimeToNextFixStr,int64Value); __ASSERT_ALWAYS( int64Value <= KMaxTInt, User::Panic(KLbsNetPsyTestPanic, ELbsPanicBadNextFixValue)); if(int64Value>=0) { int64Value *= KMilliSecToMicroSecConverter; aPosQuality.SetTimeToNextFix(int64Value); } else { aPosQuality.SetTimeToNextFix(0); } // Get the Horizontal Accuracy FindVar(KHorizontalAccuracyStr,real32Value); if(real32Value>=0) { aPosQuality.SetHorizontalAccuracy(real32Value); } else { aPosQuality.SetHorizontalAccuracy(0); } // Get the Vertical Accuracy FindVar(KVerticalAccuracyStr,real32Value); if(real32Value>=0) { aPosQuality.SetVerticalAccuracy(real32Value); } else { aPosQuality.SetVerticalAccuracy(0); } // Get the cost indicator FindVar(KCostIndicatorStr,intValue); TPositionQuality::TCostIndicator costIndicator; switch(intValue) { case 1: costIndicator = TPositionQuality::ECostZero; break; case 2: costIndicator = TPositionQuality::ECostPossible; break; case 3: costIndicator = TPositionQuality::ECostCharge; break; default: costIndicator = TPositionQuality::ECostUnknown; break; } aPosQuality.SetCostIndicator(costIndicator); // Get the power consumption FindVar(KPowerConsumptionStr,intValue); TPositionQuality::TPowerConsumption powerConsumption; switch(intValue) { case 1: powerConsumption = TPositionQuality::EPowerZero; break; case 2: powerConsumption = TPositionQuality::EPowerLow; break; case 3: powerConsumption = TPositionQuality::EPowerMedium; break; case 4: powerConsumption = TPositionQuality::EPowerHigh; break; default: powerConsumption = TPositionQuality::EPowerUnknown; break; } aPosQuality.SetPowerConsumption(powerConsumption); }