locationmanager/locationtrail/src/clocationrecord.cpp
changeset 43 c5e73110f733
parent 40 910a23996aa0
child 48 1389872e7c51
equal deleted inserted replaced
40:910a23996aa0 43:c5e73110f733
   134     iNetworkInfoTimer = CPeriodic::NewL( CActive::EPriorityStandard );
   134     iNetworkInfoTimer = CPeriodic::NewL( CActive::EPriorityStandard );
   135 
   135 
   136 #ifdef LOC_REVERSEGEOCODE
   136 #ifdef LOC_REVERSEGEOCODE
   137     iTagCreator = CTagCreator::NewL();
   137     iTagCreator = CTagCreator::NewL();
   138 
   138 
   139 
   139     iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>(
   140     if (!iRevGeocoderPlugin)
   140           REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey));
   141         {
   141 
   142         iRevGeocoderPlugin = reinterpret_cast<CReverseGeoCoderPlugin*>(
   142      iRevGeocoderPlugin->AddObserverL(*this);
   143               REComSession::CreateImplementationL(KReverseGeoCodeUid,iDtorKey));
   143 
   144         if(iRevGeocoderPlugin)
   144 
   145             {
       
   146             iRevGeocoderPlugin->AddObserverL(*this);
       
   147             }
       
   148          }
       
   149  
   145  
   150  #endif
   146  #endif
   151 
   147 
   152 	
   148 	
   153     TInt interval( 0 );
   149     TInt interval( 0 );
   360     _LIT( KDateTimeFormat, "%Y/%M/%D %H:%T:%S" );
   356     _LIT( KDateTimeFormat, "%Y/%M/%D %H:%T:%S" );
   361     const TInt DateTimeStrMaxLength = 20;
   357     const TInt DateTimeStrMaxLength = 20;
   362     LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() );
   358     LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %Ld", aTime.Int64() );
   363     TBuf<DateTimeStrMaxLength> str1;
   359     TBuf<DateTimeStrMaxLength> str1;
   364     aTime.FormatL( str1, KDateTimeFormat );
   360     aTime.FormatL( str1, KDateTimeFormat );
   365    // LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 );
   361     LOG1( "CLocationRecord::GetLocationByTimeL - aTime: %S", &str1 );
   366 #endif
   362 #endif
   367 
   363 
   368     TTimeIntervalSeconds interval;
   364     TTimeIntervalSeconds interval;
   369     TTimeIntervalSeconds nextInterval;
   365     TTimeIntervalSeconds nextInterval;
   370     for ( TInt i(iTrail.Count()-1) ; i >= 0 && !posFound ; i-- )
   366     for ( TInt i(iTrail.Count()-1) ; i >= 0 && !posFound ; i-- )
   375 
   371 
   376 #ifdef _DEBUG
   372 #ifdef _DEBUG
   377         LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() );
   373         LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %Ld", iTrail[i]->iTimeStamp.Int64() );
   378         TBuf<DateTimeStrMaxLength> str;
   374         TBuf<DateTimeStrMaxLength> str;
   379         iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat );
   375         iTrail[i]->iTimeStamp.FormatL( str, KDateTimeFormat );
   380         //LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str );
   376         LOG1( "CLocationRecord::GetLocationByTimeL - Trail timestamp: %S", &str );
   381         LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff );
   377         LOG1( "CLocationRecord::GetLocationByTimeL - timeDiff: %d", timeDiff );
   382 #endif
   378 #endif
   383 
   379 
   384         if ( err == KErrNone && timeDiff <= KMaximumIntervalSeconds )
   380         if ( err == KErrNone && timeDiff <= KMaximumIntervalSeconds )
   385             {
   381             {
  1205          }
  1201          }
  1206         
  1202         
  1207      const TReal64 KMeterInDegrees = 0.000009;
  1203      const TReal64 KMeterInDegrees = 0.000009;
  1208      const TReal64 KPi = 3.14159265358979;
  1204      const TReal64 KPi = 3.14159265358979;
  1209      const TReal32 K180Degrees = 180.0;
  1205      const TReal32 K180Degrees = 180.0;
  1210      
       
  1211      //TLocationData locationData = iMediaItems[0].iLocationData;
       
  1212             
  1206             
  1213      TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude();
  1207      TReal64 latitude = iMediaItems[0]->iLocationData.iPosition.Latitude();
  1214      TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude();
  1208      TReal64 longitude = iMediaItems[0]->iLocationData.iPosition.Longitude();
  1215      // calculate distance in degrees
  1209      // calculate distance in degrees
  1216      TReal64 cosine;
  1210      TReal64 cosine;
  1579 void CLocationRecord::HandleFindLocationFromDB()
  1573 void CLocationRecord::HandleFindLocationFromDB()
  1580     {
  1574     {
  1581     LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" );    
  1575     LOG( "CLocationRecord::HandleFindLocationFromDB(), begin" );    
  1582 	if ( iMediaItems.Count() > 0 )
  1576 	if ( iMediaItems.Count() > 0 )
  1583 	   {
  1577 	   {
  1584 		//TODO: by module owner
       
  1585 		TInt trapErr = KErrNone;
  1578 		TInt trapErr = KErrNone;
  1586 		TRAP(trapErr,FindLocationFromDBL());
  1579 		TRAP(trapErr,FindLocationFromDBL());
  1587 		// no memory, don't proceed further
  1580 		// no memory, don't proceed further
  1588 		// other error sceenario, we can move the node to the end and process the next
  1581 		// other error sceenario, we can move the node to the end and process the next
  1589 		if(trapErr != KErrNoMemory && trapErr != KErrNone)
  1582 		if(trapErr != KErrNoMemory && trapErr != KErrNone)
  1850             iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo);
  1843             iGeoConverter->ConvertL(iMediaItems[0]->iLocationData.iNetworkInfo);
  1851             iMediaHandlingFlag |= KSnapGeoConvertInProgress;
  1844             iMediaHandlingFlag |= KSnapGeoConvertInProgress;
  1852             iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState;
  1845             iMediaHandlingFlag &= ~KSnapGeoConvertInPendingState;
  1853             }
  1846             }
  1854 #else
  1847 #else
       
  1848         // cell id based geo tagging is not supported.. go for remapping.
  1855         locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1849         locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1856         iMediaItems[0]->iLocationId = locationId;
  1850         iMediaItems[0]->iLocationId = locationId;
  1857         CreateRelationL( iMediaItems[0]->iObjectId, locationId );
  1851         TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId );
  1858         TLocationSnapshotItem* firstPtr = iMediaItems[0];
  1852         TLocationSnapshotItem* firstPtr = iMediaItems[0];
       
  1853 
       
  1854         // Go for remapping.. get locationdata from trail with object time
       
  1855         TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId );
       
  1856         TRemapItem remapItem;
       
  1857         remapItem.iObjectId = iMediaItems[0]->iObjectId;
       
  1858         remapItem.iTime = timestamp;
       
  1859         remapItem.iLocationId = locationId;
       
  1860         remapItem.iRelationId = relationId;
       
  1861         iRemapper->Append( remapItem );
       
  1862         
  1859         iMediaItems.Remove(0);
  1863         iMediaItems.Remove(0);
  1860         delete firstPtr;
  1864         delete firstPtr;
  1861         iMediaItems.Compress();
  1865         iMediaItems.Compress();
  1862         iMediaHandlingFlag &= ~KLocationQueryInProgress;
  1866         iMediaHandlingFlag &= ~KLocationQueryInProgress;
  1863         if ( iMediaItems.Count() > 0 )
  1867         if ( iMediaItems.Count() > 0 )
  1907             iNewItem.iLocationData.iPosition.SetCoordinate
  1911             iNewItem.iLocationData.iPosition.SetCoordinate
  1908                 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
  1912                 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
  1909             iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy();
  1913             iNewItem.iLocationData.iQuality = aPosition.HorizontalAccuracy();
  1910             TItemId locationId = DoCreateLocationL( iNewItem.iLocationData );
  1914             TItemId locationId = DoCreateLocationL( iNewItem.iLocationData );
  1911             iRemapper->UpdateRelationsL( locationId ); 
  1915             iRemapper->UpdateRelationsL( locationId ); 
  1912             // TODO: remap.
       
  1913 #ifdef LOC_REVERSEGEOCODE
  1916 #ifdef LOC_REVERSEGEOCODE
  1914             if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
  1917             if(!(iMediaHandlingFlag & KReverseGeoCodingInProgress))
  1915                 {
  1918                 {
  1916                 iRemapState = ERemapRevGeoCodeInProgress;
  1919                 iRemapState = ERemapRevGeoCodeInProgress;
  1917                 //Find the address by coordinate, results a call to ReverseGeocodeComplete()
  1920                 //Find the address by coordinate, results a call to ReverseGeocodeComplete()
  1937                 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
  1940                 ( aPosition.Latitude(), aPosition.Longitude(), aPosition.Altitude());
  1938            iMediaItems[0]->iLocationData.iQuality = aPosition.HorizontalAccuracy();
  1941            iMediaItems[0]->iLocationData.iQuality = aPosition.HorizontalAccuracy();
  1939            TLocationSnapshotItem* item = iMediaItems[0];
  1942            TLocationSnapshotItem* item = iMediaItems[0];
  1940            TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1943            TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1941            iMediaItems[0]->iLocationId = locationId;
  1944            iMediaItems[0]->iLocationId = locationId;
  1942            CreateRelationL( iMediaItems[0]->iObjectId, locationId );
  1945            TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId );
       
  1946 
       
  1947            // Go for remapping.. get locationdata from trail with object time
       
  1948            TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId );
       
  1949            TRemapItem remapItem;
       
  1950            remapItem.iObjectId = iMediaItems[0]->iObjectId;
       
  1951            remapItem.iTime = timestamp;
       
  1952            remapItem.iLocationId = locationId;
       
  1953            remapItem.iRelationId = relationId;
       
  1954            iRemapper->Append( remapItem );
       
  1955 
  1943            if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
  1956            if((iMediaItems[0]->iFlag & KSnapMediaFile) > 0)
  1944                {
  1957                {
  1945                iLastMediaItem = *(iMediaItems[0]);
  1958                iLastMediaItem = *(iMediaItems[0]);
  1946                }
  1959                }
  1947            iMediaItems.Remove(0);
  1960            iMediaItems.Remove(0);
  1981                 {
  1994                 {
  1982                 TLocationSnapshotItem* item = iMediaItems[0];
  1995                 TLocationSnapshotItem* item = iMediaItems[0];
  1983                 // Fails may be becuase of n/w reason..create location + relation so that we can handle at 3:00 AM.
  1996                 // Fails may be becuase of n/w reason..create location + relation so that we can handle at 3:00 AM.
  1984                 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1997                 TItemId locationId = DoCreateLocationL( iMediaItems[0]->iLocationData );
  1985                 iMediaItems[0]->iLocationId = locationId;
  1998                 iMediaItems[0]->iLocationId = locationId;
  1986                 CreateRelationL( iMediaItems[0]->iObjectId, locationId );
  1999                 TItemId relationId = CreateRelationL( iMediaItems[0]->iObjectId, locationId );
       
  2000 
       
  2001                 // Go for remapping.. get locationdata from trail with object time
       
  2002                 TTime timestamp = GetMdeObjectTimeL( iMediaItems[0]->iObjectId );
       
  2003                 TRemapItem remapItem;
       
  2004                 remapItem.iObjectId = iMediaItems[0]->iObjectId;
       
  2005                 remapItem.iTime = timestamp;
       
  2006                 remapItem.iLocationId = locationId;
       
  2007                 remapItem.iRelationId = relationId;
       
  2008                 iRemapper->Append( remapItem );
  1987 
  2009 
  1988                 iMediaItems.Remove(0);
  2010                 iMediaItems.Remove(0);
  1989                 iMediaItems.Compress();
  2011                 iMediaItems.Compress();
  1990                 iMediaHandlingFlag &= ~KLocationQueryInProgress;
  2012                 iMediaHandlingFlag &= ~KLocationQueryInProgress;
  1991                 delete item;
  2013                 delete item;
  2240         cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals,
  2262         cond.AddPropertyConditionL( networkCodeDef, ETextPropertyConditionCompareEquals,
  2241                 iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId );
  2263                 iMediaItems[0]->iLocationData.iNetworkInfo.iNetworkId );
  2242             
  2264             
  2243         iNetLocationQuery->FindL(1, 1); 
  2265         iNetLocationQuery->FindL(1, 1); 
  2244         iMediaHandlingFlag |= KLocationQueryInProgress;
  2266         iMediaHandlingFlag |= KLocationQueryInProgress;
  2245     //    iMediaHandlingFlag |= KNetQueryInProgress;
       
  2246         }
  2267         }
  2247     else
  2268     else
  2248         {
  2269         {
  2249         TLocationSnapshotItem* firstPtr = iMediaItems[0];
  2270         TLocationSnapshotItem* firstPtr = iMediaItems[0];
  2250         iMediaItems.Remove(0);
  2271         iMediaItems.Remove(0);