void CLcfPsyDummy1::GetGenericPositionInfoL(TPositionInfoBase& aPosInfo) { _LIT(KStreetDescriptor, "Tieteenkatu 1"); _LIT(KCityDescriptor, "Tampere"); _LIT(KCountryDescriptor, "Finland"); // The position info object is at least a // HPositionGenericInfo HPositionGenericInfo* posInfo = static_cast<HPositionGenericInfo*>(&aPosInfo); // This PSY can deliver street, city and country // information. Attach this data if it is requested by // the client if (posInfo->IsRequestedField(EPositionFieldStreet)) { User::LeaveIfError(posInfo->SetValue( EPositionFieldStreet, KStreetDescriptor)); } if (posInfo->IsRequestedField(EPositionFieldCity)) { User::LeaveIfError(posInfo->SetValue( EPositionFieldCity, KCityDescriptor)); } if (posInfo->IsRequestedField(EPositionFieldCountry)) { User::LeaveIfError(posInfo->SetValue( EPositionFieldCountry, KCountryDescriptor)); } }
// ----------------------------------------------------------------------------- // PosGenericInfoUser::CopyData // ----------------------------------------------------------------------------- // template < class T > TInt PosGenericInfoUser::CopyData( const HPositionGenericInfo& aSrc, HPositionGenericInfo& aDes, TInt aFieldId ) { T data; TInt err( KErrNone ); err = aSrc.GetValue( aFieldId, data ); if ( err != KErrNone ) { return err; } return aDes.SetValue( aFieldId, data ); }
// ----------------------------------------------------------------------------- // PosGenericInfoUser::CopyField // ----------------------------------------------------------------------------- // TInt PosGenericInfoUser::CopyField( const HPositionGenericInfo& aSrc, HPositionGenericInfo& aDes, TInt aFieldId ) { //Get field data type TInt dataType; TBool isList; TInt err( KErrNone ); err = FieldDataType( aFieldId, dataType, isList ); if ( err != KErrNone ) { return err; } if ( isList ) { //copy list TUint8 count; //length of the list err = aSrc.GetValue( aFieldId, count ); if ( err != KErrNone ) { return err; } for ( TInt i = 0; i < count; i++ ) { err = CopyDataByType( aSrc, aDes, aFieldId + 1 + i, dataType ); if ( err != KErrNone ) { return err; } } err = aDes.SetValue( aFieldId, count ); } else { err = CopyDataByType( aSrc, aDes, aFieldId, dataType ); } return err; }
// --------------------------------------------------------- // CPosPSYClearPositionDataTest::SetHPositionGenericInfoDataL // // (other items were commented in a header). // --------------------------------------------------------- // void CPosPSYClearPositionDataTest::SetHPositionGenericInfoDataL( HPositionGenericInfo& aGenericInfo) { User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldCountry, KCountry)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldCountryCode, KCountryCode)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldState, KState)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldCity, KCity)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldDistrict, KDistrict)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldStreet, KStreet)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldStreetExtension, KStreetExtension)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldLocationName, KLocationName)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldPostalCode, KPostalCode)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldLocality, KLocality)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldCrossing1, KCrossing1)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldCrossing2, KCrossing2)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldHorizontalSpeed, KHorizontalSpeed)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldHorizontalSpeedError, KHorizontalSpeedError )); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldVerticalSpeedError, KVerticalSpeedError)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldVerticalSpeed, KVerticalSpeed)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldHeading, KHeading)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldHeadingError, KHeadingError)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldTrueCourse, KTrueCourse)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldTrueCourseError, KTrueCourseError)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldMagneticCourse, KMagneticCourse)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldBuildingName, KBuildingName)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldBuildingFloor, KBuildingFloor)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldBuildingRoom, KBuildingRoom)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldBuildingZone, KBuildingZone)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldBuildingTelephone, KBuildingTelephone)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldNMEASentences, KNMEASentences)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldNMEASentencesStart, KNMEASentencesStart)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteNumInView, KSatelliteNumInView)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteNumUsed, KSatelliteNumUsed)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteTime, KSatelliteTime)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteHorizontalDoP, KSatelliteHorizontalDoP)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteVerticalDoP, KSatelliteVerticalDoP)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteTimeDoP, KSatelliteTimeDoP)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatellitePositionDoP, KSatellitePositionDoP)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteSeaLevelAltitude, KSatelliteSeaLevelAltitude)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldSatelliteGeoidalSeparation, KSatelliteGeoidalSeparation)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldMediaLinks, KMediaLinks)); User::LeaveIfError(aGenericInfo.SetValue(EPositionFieldMediaLinksStart, KMediaLinksStart)); }
void CNetworkPsy2::TimerCompleted() { TPsyConfig& config(iPsyConfigArray[iCurrentIndex]); if(config.iType==TPsyConfig::EConfigLRResponse) { //If no pending LR, then just return if(!iRequestStatus) { return; } TInt err = config.iData.iLRConfig.iErr; //complete location request if(iPositionInfoBase->PositionClassType() & EPositionInfoClass) { //Set TPositionInfo TPosition pos; pos.SetCoordinate( config.iData.iLRConfig.iLat, config.iData.iLRConfig.iLon, config.iData.iLRConfig.iAlt); TPositionInfo* posInfo = reinterpret_cast<TPositionInfo*>(iPositionInfoBase); posInfo->SetPosition(pos); } if(iPositionInfoBase->PositionClassType() & EPositionGenericInfoClass) { //Set HGeneric Info HPositionGenericInfo* genInfo = static_cast<HPositionGenericInfo*>(iPositionInfoBase); if(genInfo->IsRequestedField(EPositionFieldNMEASentences)) { genInfo->SetValue(EPositionFieldNMEASentences, TInt8(1)); HBufC8* nmea = NULL; TRAP(err, nmea = HBufC8::NewL(config.iData.iLRConfig.iNmeaDataSize)); if(KErrNone == err) { TPtr8 nmeaPtr(nmea->Des()); nmeaPtr.Fill('H', config.iData.iLRConfig.iNmeaDataSize); err = genInfo->SetValue(EPositionFieldNMEASentences+1, *nmea); } delete nmea; } } CompleteRequest(err); if(config.iData.iLRConfig.iNumOfResponse>1) { config.iData.iLRConfig.iNumOfResponse--; } else if(config.iData.iLRConfig.iNumOfResponse>0) { iCurrentIndex++; } else { //0 means forever response with this } } else //ECinfigModuleStatus { //Change module status TPositionModuleStatus modStatus; modStatus.SetDataQualityStatus(config.iData.iStatusConfig.iDataQuality); modStatus.SetDeviceStatus(config.iData.iStatusConfig.iDeviceStatus); MPositionerStatus* observer = PositionerStatus(); observer->ReportStatus(modStatus); iCurrentIndex++; } iTimer->Cancel(); if(iCurrentIndex>=iPsyConfigArray.Count()) { //When all items are used, then clean the config items iPsyConfigArray.Reset(); iCurrentIndex = 0; } StartTimerIfNeeded(); }