Exemplo n.º 1
0
/** 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);

}