64 { |
64 { |
65 //No Implementation Required Here |
65 //No Implementation Required Here |
66 } |
66 } |
67 void CLocationInterface::ConstructL() |
67 void CLocationInterface::ConstructL() |
68 { |
68 { |
69 iGenericPosInfo = HPositionGenericInfo::NewL() ; |
69 iGenericPosition = HPositionGenericInfo::NewL() ; |
70 |
70 |
71 if ( !iGenericPosInfo ) |
71 if ( !iGenericPosition ) |
72 { |
72 { |
73 User::Leave( KErrNoMemory ) ; |
73 User::Leave( KErrNoMemory ) ; |
74 } |
74 } |
75 |
75 |
76 iLocationService = CLocationService::NewL() ; |
76 iLocationService = CLocationService::NewL() ; |
77 User::LeaveIfError( iLocationService->GetModuleInfo( iModuleInfo ) ); |
77 //User::LeaveIfError( iLocationService->GetModuleInfo( iModuleInfo ) ); |
78 User::LeaveIfError( this->SetSupportedFields() ); |
78 //User::LeaveIfError( this->SetSupportedFields() ); |
79 } |
79 } |
80 |
80 |
81 |
81 |
82 /** |
82 /** |
83 * This function is a static method to create iLocatinInterface object |
83 * This function is a static method to create iLocatinInterface object |
432 User::Leave(KErrArgument); |
437 User::Leave(KErrArgument); |
433 } |
438 } |
434 } |
439 } |
435 LocationInterfaceCB* callback = |
440 LocationInterfaceCB* callback = |
436 LocationInterfaceCB::NewL(aCallback, |
441 LocationInterfaceCB::NewL(aCallback, |
437 &aInParamList, &iModuleInfo, transid) ; |
442 &aInParamList, /*&iModuleInfo,*/ transid) ; |
438 |
443 |
439 CleanupStack :: PushL(callback) ; |
444 CleanupStack :: PushL(callback) ; |
440 callback->SetRequestType(KGetLocationCB) ; |
445 callback->SetRequestType(KGetLocationCB) ; |
441 |
446 |
442 iLocationService->GetLocationL(callback ,category, |
447 iLocationService->GetLocationL(callback ,category, |
443 iFieldList,updateoptions,enableHighAcc) ; |
448 NULL,updateoptions,enableHighAcc) ; |
444 //Store the allocatioed address |
449 //Store the allocatioed address |
445 iHandleCB.Append(callback); |
450 iHandleCB.Append(callback); |
446 //Append Transcationid to out list |
451 //Append Transcationid to out list |
447 aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(transid))); |
452 aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(transid))); |
448 CleanupStack :: Pop(callback) ; |
453 CleanupStack :: Pop(callback) ; |
780 } |
785 } |
781 } |
786 } |
782 |
787 |
783 LocationInterfaceCB* callback = |
788 LocationInterfaceCB* callback = |
784 LocationInterfaceCB::NewL(aCallback, |
789 LocationInterfaceCB::NewL(aCallback, |
785 &aOutParamList, &iModuleInfo, transid) ; |
790 &aOutParamList,/* &iModuleInfo,*/ transid) ; |
786 CleanupStack :: PushL(callback) ; |
791 CleanupStack :: PushL(callback) ; |
787 callback->SetRequestType(KTraceCB) ; |
792 callback->SetRequestType(KTraceCB) ; |
788 |
793 |
789 |
794 |
790 iLocationService->TraceL( callback, catergory,iFieldList, |
795 iLocationService->TraceL( callback, catergory,NULL, |
791 updateOption,enableHighAcc ); |
796 updateOption,enableHighAcc ); |
792 iHandleCB.Append(callback); |
797 iHandleCB.Append(callback); |
793 aOutParamList.AppendL(TLiwGenericParam(KTransactionId, |
798 aOutParamList.AppendL(TLiwGenericParam(KTransactionId, |
794 TLiwVariant(transid))) ; //Append Transcationid to out list |
799 TLiwVariant(transid))) ; //Append Transcationid to out list |
795 |
800 |
1270 /** |
1275 /** |
1271 * CLocationInterface :: SetSupportedFields fills iGenericPosInfo as per the capability of the |
1276 * CLocationInterface :: SetSupportedFields fills iGenericPosInfo as per the capability of the |
1272 * positioning module used |
1277 * positioning module used |
1273 */ |
1278 */ |
1274 |
1279 |
1275 TInt CLocationInterface :: SetSupportedFields() |
|
1276 { |
|
1277 //Extract all the information Accuracy, timestamp, satellite and course info and append |
|
1278 // to out parmlist |
|
1279 |
|
1280 |
|
1281 |
|
1282 TUint fieldIter = 0 ; |
|
1283 |
|
1284 TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; |
|
1285 |
|
1286 if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //set horizontal,vertical speeds along with errros |
|
1287 { |
|
1288 iFieldList[fieldIter++] = EPositionFieldHorizontalSpeed ; |
|
1289 iFieldList[fieldIter++] = EPositionFieldHorizontalSpeedError ; |
|
1290 iFieldList[fieldIter++] = EPositionFieldVerticalSpeed ; |
|
1291 iFieldList[fieldIter++] = EPositionFieldVerticalSpeedError ; |
|
1292 } |
|
1293 |
|
1294 if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Set satellite info fields if positioning module supports |
|
1295 { // |
|
1296 |
|
1297 iFieldList[fieldIter++] = EPositionFieldSatelliteNumInView ; |
|
1298 iFieldList[fieldIter++] = EPositionFieldSatelliteNumUsed ; |
|
1299 iFieldList[fieldIter++] = EPositionFieldSatelliteTime ; |
|
1300 iFieldList[fieldIter++] = EPositionFieldSatelliteHorizontalDoP ; |
|
1301 iFieldList[fieldIter++] = EPositionFieldSatelliteVerticalDoP ; |
|
1302 |
|
1303 } |
|
1304 |
|
1305 if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Set Direction info fields if positioning module supports |
|
1306 { |
|
1307 |
|
1308 iFieldList[fieldIter++] = EPositionFieldTrueCourse ; |
|
1309 iFieldList[fieldIter++] = EPositionFieldTrueCourseError ; |
|
1310 iFieldList[fieldIter++] = EPositionFieldMagneticCourse ; |
|
1311 iFieldList[fieldIter++] = EPositionFieldMagneticCourseError ; |
|
1312 |
|
1313 } |
|
1314 |
|
1315 |
|
1316 if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Set NMEA fields if positioning module supports |
|
1317 { |
|
1318 |
|
1319 iFieldList[fieldIter++] = EPositionFieldHeading ; |
|
1320 iFieldList[fieldIter++] = EPositionFieldHeadingError ; |
|
1321 iFieldList[fieldIter++] = EPositionFieldMagneticHeading ; |
|
1322 iFieldList[fieldIter++] = EPositionFieldMagneticHeadingError ; |
|
1323 |
|
1324 } |
|
1325 |
|
1326 /*if(currCapability & TPositionModuleInfo :: ECapabilityNmea) |
|
1327 { |
|
1328 |
|
1329 iFieldList[fieldIter++] = EPositionFieldNMEASentences ; |
|
1330 iFieldList[fieldIter++] = EPositionFieldNMEASentencesStart ; |
|
1331 |
|
1332 }*/ |
|
1333 iFieldList[fieldIter] = EPositionFieldNone ; //Field Termination |
|
1334 iGenericPosInfo->ClearRequestedFields() ; |
|
1335 iGenericPosInfo->SetRequestedFields(iFieldList) ; |
|
1336 |
|
1337 |
|
1338 return KErrNone ; |
|
1339 } |
|
1340 |
1280 |
1341 /** |
1281 /** |
1342 * CLocationInterface :: GetLocationInfo an internal utility funtionin, gets all the location information |
1282 * CLocationInterface :: GetLocationInfo an internal utility funtionin, gets all the location information |
1343 * which is supported by this Module |
1283 * which is supported by this Module |
1344 */ |
1284 */ |
1345 |
1285 |
1346 |
1286 |
1347 void CLocationInterface :: GetLocationInfo( CLiwGenericParamList& aOutParamList,TInt aPosInfoCategory) |
1287 void CLocationInterface :: GetLocationInfo( CLiwGenericParamList& aOutParamList,TInt aPosInfoCategory) |
1348 { |
1288 { |
1349 TPosition pos ; |
1289 TPosition pos ; |
1350 iGenericPosInfo->GetPosition(pos) ; //Now populate outparam list with latitude, longitude and altitude data |
1290 iGenericPosition->GetPosition(pos) ; //Now populate outparam list with latitude, longitude and altitude data |
1351 |
1291 |
1352 CLiwDefaultMap *Result = CLiwDefaultMap::NewL() ; |
1292 CLiwDefaultMap *Result = CLiwDefaultMap::NewL() ; |
1353 |
1293 |
1354 CleanupStack :: PushL(Result) ; |
1294 CleanupStack :: PushL(Result) ; |
1355 TReal64 Val = pos.Longitude() ; |
1295 TReal64 Val = pos.Longitude() ; |
1380 Result->InsertL(KVerAccuracy, TLiwVariant((TReal)Val1)) ; |
1320 Result->InsertL(KVerAccuracy, TLiwVariant((TReal)Val1)) ; |
1381 } |
1321 } |
1382 TLiwVariant MapVariant(Result) ; |
1322 TLiwVariant MapVariant(Result) ; |
1383 |
1323 |
1384 |
1324 |
1385 TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; |
1325 //TPositionModuleInfo :: TCapabilities currCapability = iModuleInfo.Capabilities() ; |
1386 |
1326 |
1387 if ( aPosInfoCategory == EGenericPositionInfo ) |
1327 if ( aPosInfoCategory == EGenericPositionInfo ) |
1388 { |
1328 { |
1389 if(currCapability & TPositionModuleInfo :: ECapabilitySpeed) //Populate output param with speed info |
1329 |
1390 { |
|
1391 TReal32 speedinfo = 0 ; |
1330 TReal32 speedinfo = 0 ; |
1392 |
1331 |
1393 if(!iGenericPosInfo->GetValue(EPositionFieldHorizontalSpeed , speedinfo)) //Extract speed |
1332 if(!iGenericPosition->GetValue(EPositionFieldHorizontalSpeed , speedinfo)) //Extract speed |
1394 { |
1333 { |
1395 Result->InsertL(KPositionFieldHorizontalSpeed ,TLiwVariant((TReal) speedinfo)) ; |
1334 Result->InsertL(KPositionFieldHorizontalSpeed ,TLiwVariant((TReal) speedinfo)) ; |
1396 } |
1335 } |
1397 |
1336 |
1398 |
1337 |
1399 |
1338 |
1400 if(!iGenericPosInfo->GetValue(EPositionFieldHorizontalSpeedError , speedinfo) ) |
1339 if(!iGenericPosition->GetValue(EPositionFieldHorizontalSpeedError , speedinfo) ) |
1401 { |
1340 { |
1402 Result->InsertL(KPositionFieldHorizontalSpeedError ,TLiwVariant((TReal) speedinfo)) ; |
1341 Result->InsertL(KPositionFieldHorizontalSpeedError ,TLiwVariant((TReal) speedinfo)) ; |
1403 } |
1342 } |
1404 |
1343 |
1405 /*if(!iGenericPosInfo->GetValue(EPositionFieldVerticalSpeed , speedinfo)) |
1344 /*if(!iGenericPosInfo->GetValue(EPositionFieldVerticalSpeed , speedinfo)) |
1412 { |
1351 { |
1413 Result->InsertL(KPositionFieldVerticalSpeedError ,TLiwVariant((TReal) speedinfo)) ; |
1352 Result->InsertL(KPositionFieldVerticalSpeedError ,TLiwVariant((TReal) speedinfo)) ; |
1414 }*/ |
1353 }*/ |
1415 |
1354 |
1416 |
1355 |
1417 } //End of EcapabilitySpeed |
1356 |
1418 |
1357 |
1419 |
1358 TInt8 satinfo = 0; |
1420 if(currCapability & TPositionModuleInfo :: ECapabilitySatellite) //Extract satellitinfo if any and append it |
1359 |
1421 { //as part of out parm list |
1360 if(!iGenericPosition->GetValue(EPositionFieldSatelliteNumInView , satinfo)) |
1422 TInt8 satinfo = 0; |
1361 { |
1423 |
1362 Result->InsertL(KPositionFieldSatelliteNumInView ,TLiwVariant((TReal) satinfo)) ; |
1424 if(!iGenericPosInfo->GetValue(EPositionFieldSatelliteNumInView , satinfo)) |
1363 } |
1425 { |
1364 if(!iGenericPosition->GetValue(EPositionFieldSatelliteNumUsed , satinfo)) |
1426 Result->InsertL(KPositionFieldSatelliteNumInView ,TLiwVariant((TReal) satinfo)) ; |
1365 { |
1427 } |
1366 Result->InsertL(KPositionFieldSatelliteNumUsed ,TLiwVariant((TReal) satinfo)) ; |
1428 if(!iGenericPosInfo->GetValue(EPositionFieldSatelliteNumUsed , satinfo)) |
1367 } |
1429 { |
1368 |
1430 Result->InsertL(KPositionFieldSatelliteNumUsed ,TLiwVariant((TReal) satinfo)) ; |
1369 |
1431 } |
1370 |
1432 } //End of ECapabilitySatellite |
|
1433 |
|
1434 if(currCapability & TPositionModuleInfo :: ECapabilityDirection) //Extract direction info if any and append it |
|
1435 { // as part of out parm list |
|
1436 TReal32 direcinfo = 0; |
1371 TReal32 direcinfo = 0; |
1437 |
1372 |
1438 |
1373 |
1439 if(!iGenericPosInfo->GetValue(EPositionFieldTrueCourse , direcinfo) ) |
1374 if(!iGenericPosition->GetValue(EPositionFieldTrueCourse , direcinfo) ) |
1440 { |
1375 { |
1441 Result->InsertL(KPositionFieldTrueCourse ,TLiwVariant((TReal) direcinfo)) ; |
1376 Result->InsertL(KPositionFieldTrueCourse ,TLiwVariant((TReal) direcinfo)) ; |
1442 } |
1377 } |
1443 |
1378 |
1444 |
1379 |
1445 if(!iGenericPosInfo->GetValue(EPositionFieldTrueCourseError , direcinfo) ) |
1380 if(!iGenericPosition->GetValue(EPositionFieldTrueCourseError , direcinfo) ) |
1446 { |
1381 { |
1447 Result->InsertL(KPositionFieldTrueCourseError ,TLiwVariant((TReal) direcinfo)) ; |
1382 Result->InsertL(KPositionFieldTrueCourseError ,TLiwVariant((TReal) direcinfo)) ; |
1448 } |
1383 } |
1449 |
1384 |
1450 |
1385 |
1451 if(!iGenericPosInfo->GetValue(EPositionFieldMagneticCourseError , direcinfo) ) |
1386 if(!iGenericPosition->GetValue(EPositionFieldMagneticCourseError , direcinfo) ) |
1452 { |
1387 { |
1453 Result->InsertL(KPositionFieldMagneticCourseError ,TLiwVariant((TReal) direcinfo)) ; |
1388 Result->InsertL(KPositionFieldMagneticCourseError ,TLiwVariant((TReal) direcinfo)) ; |
1454 } |
1389 } |
1455 |
1390 |
1456 |
1391 |
1457 if(!iGenericPosInfo->GetValue(EPositionFieldMagneticCourse , direcinfo) ) |
1392 if(!iGenericPosition->GetValue(EPositionFieldMagneticCourse , direcinfo) ) |
1458 { |
1393 { |
1459 Result->InsertL(KPositionFieldMagneticCourse ,TLiwVariant((TReal) direcinfo)) ; |
1394 Result->InsertL(KPositionFieldMagneticCourse ,TLiwVariant((TReal) direcinfo)) ; |
1460 } |
1395 } |
1461 } // End of ECapabilityDirection |
1396 |
1462 |
1397 |
1463 |
1398 |
1464 if(currCapability & TPositionModuleInfo :: ECapabilityCompass) //Extract compass info if any and append it |
1399 |
1465 { // as part of out parm list |
1400 TReal32 compassinfo ; |
1466 TReal32 compassinfo ; |
1401 |
1467 |
1402 |
1468 |
1403 if(!iGenericPosition->GetValue(EPositionFieldHeading , compassinfo) ) |
1469 if(!iGenericPosInfo->GetValue(EPositionFieldHeading , compassinfo) ) |
1404 { |
1470 { |
1405 Result->InsertL(KPositionFieldHeading ,TLiwVariant((TReal) compassinfo)) ; |
1471 Result->InsertL(KPositionFieldHeading ,TLiwVariant((TReal) compassinfo)) ; |
1406 } |
1472 } |
1407 |
1473 |
1408 |
1474 |
1409 if(!iGenericPosition->GetValue(EPositionFieldHeadingError , compassinfo) ) |
1475 if(!iGenericPosInfo->GetValue(EPositionFieldHeadingError , compassinfo) ) |
1410 { |
1476 { |
1411 Result->InsertL(KPositionFieldHeadingError ,TLiwVariant((TReal) compassinfo)) ; |
1477 Result->InsertL(KPositionFieldHeadingError ,TLiwVariant((TReal) compassinfo)) ; |
1412 } |
1478 } |
1413 |
1479 |
1414 |
1480 |
1415 if(!iGenericPosition->GetValue(EPositionFieldMagneticHeading , compassinfo) ) |
1481 if(!iGenericPosInfo->GetValue(EPositionFieldMagneticHeading , compassinfo) ) |
1416 { |
1482 { |
1417 Result->InsertL(KPositionFieldMagneticHeading ,TLiwVariant((TReal) compassinfo)) ; |
1483 Result->InsertL(KPositionFieldMagneticHeading ,TLiwVariant((TReal) compassinfo)) ; |
1418 } |
1484 } |
1419 |
1485 |
1420 |
1486 |
1421 |
1487 |
1422 if(!iGenericPosition->GetValue(EPositionFieldMagneticHeadingError , compassinfo) ) |
1488 if(!iGenericPosInfo->GetValue(EPositionFieldMagneticHeadingError , compassinfo) ) |
1423 { |
1489 { |
1424 Result->InsertL(KPositionFieldMagneticHeadingError ,TLiwVariant((TReal) compassinfo)) ; |
1490 Result->InsertL(KPositionFieldMagneticHeadingError ,TLiwVariant((TReal) compassinfo)) ; |
1425 |
1491 |
1426 } |
1492 } |
|
1493 |
|
1494 |
|
1495 } //End of ECapabilityCompass |
|
1496 |
|
1497 /*if( currCapability & TPositionModuleInfo :: ECapabilityNmea ) //Extract Nmea info if any and append it |
|
1498 { //as part of out param list |
|
1499 TUint8 numSentences ; |
|
1500 |
|
1501 if(!iGenericPosInfo->GetValue(EPositionFieldNMEASentences , numSentences) ) |
|
1502 { |
|
1503 Result->InsertL(KPositionFieldNMEASentences ,TLiwVariant((TReal) numSentences)) ; |
|
1504 } |
1427 } |
1505 |
1428 |
1506 |
1429 |
1507 TBuf8 <20> nmeaSentences ; |
|
1508 if(!iGenericPosInfo->GetValue(EPositionFieldNMEASentencesStart , nmeaSentences) ) |
|
1509 { |
|
1510 Result->InsertL(KPositionFieldNMEASentencesStart ,TLiwVariant( numSentences)) ; |
|
1511 } |
|
1512 }*/ //End of ECapabilityNmea |
|
1513 |
|
1514 } |
|
1515 aOutParamList.AppendL(TLiwGenericParam ( KLocationMap, TLiwVariant(Result))) ; |
1430 aOutParamList.AppendL(TLiwGenericParam ( KLocationMap, TLiwVariant(Result))) ; |
1516 Result->DecRef(); |
1431 Result->DecRef(); |
1517 CleanupStack :: Pop(Result) ; |
1432 CleanupStack :: Pop(Result) ; |
1518 |
1433 |
1519 } |
1434 } |