# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1270063101 -10800 # Node ID 6fcbaa43369c6f551955a0628147f501934ab070 # Parent 19bff11d6c18b8969dcc934b4d5bfb1c7dbc5ddd Revision: 201011 Kit: 201013 diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/clientlib/src/EPos_CPosLandmarkDatabase.cpp --- a/landmarks/locationlandmarks/clientlib/src/EPos_CPosLandmarkDatabase.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/clientlib/src/EPos_CPosLandmarkDatabase.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -141,6 +141,7 @@ // TUid CPosLandmarkDatabase::ImplementationId() const { +//coverity[naming_error :FALSE] return REComSession::GetImplementationUidL (iDtorIdKey);//iDtorIdKey; //return iDtorIdKey; } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/clientlib/src/epos_poslandmarkserialization.cpp --- a/landmarks/locationlandmarks/clientlib/src/epos_poslandmarkserialization.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/clientlib/src/epos_poslandmarkserialization.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -59,8 +59,11 @@ memclr( &header, sizeof header ); TPckg headerPack( header ); TPtrC name, desc, icon; - + //coverity[check_return :FALSE] + //coverity[unchecked_value :FALSE] aLandmark.GetLandmarkName( name ); + //coverity[check_return :FALSE] + //coverity[unchecked_value :FALSE] aLandmark.GetLandmarkDescription( desc ); header.iIsIconSet = ( KErrNone == aLandmark.GetIcon( icon, header.iIconIndex, header.iIconMaskIndex ) ); diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/clientlib/src/epos_poslmcategoryserialization.cpp --- a/landmarks/locationlandmarks/clientlib/src/epos_poslmcategoryserialization.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/clientlib/src/epos_poslmcategoryserialization.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -50,6 +50,8 @@ TPckg infoPack( header ); TPtrC name, icon; + //coverity[check_return :FALSE] + //coverity[unchecked_value :FALSE] aCategory.GetCategoryName( name ); header.iIsIconSet = ( KErrNone == aCategory.GetIcon( icon, header.iIconIndex, header.iIconMaskIndex ) ); diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/converter/src/EPos_CPosLmKmlParser.cpp --- a/landmarks/locationlandmarks/converter/src/EPos_CPosLmKmlParser.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/converter/src/EPos_CPosLmKmlParser.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -306,11 +306,15 @@ while (TextUtils::ColumnText(Pointer,aCount,&contentBuf,KPosXmlCommaSeparator) != KErrNotFound ) { + if(addressField[column] == EPositionFieldPostalCode) { if(!(IsNumber(Pointer.Left( KMaxPostalCode )))) column++; // if it is not number then set it to state } + if(column>=5) + break; + if( addressField[column] == EPositionFieldCountry) { if(IsNumber(Pointer.Left( KMaxPostalCode ))) @@ -324,7 +328,7 @@ column++; aCount++; if(aCount >= 4 || column>=5) - break; + break; } CleanupStack::PopAndDestroy(); diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/converter/src/EPos_CPosLmLmxParser.cpp --- a/landmarks/locationlandmarks/converter/src/EPos_CPosLmLmxParser.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/converter/src/EPos_CPosLmLmxParser.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -234,9 +234,11 @@ PosLmConverterUtils::AssertL( iWorkingCategory != NULL ); iWorkingCategory->SetCategoryNameL( aContent.Left( KPosLmMaxCategoryNameLength ) ); break; + //coverity[unterminated_case :FALSE] case EPosXmlAddrPlaceId: //addition for Place id PosLmConverterUtils::AssertL( iWorkingLandmark != NULL ); iWorkingLandmark->SetPlaceIdL( aContent.Left( KPosLmMaxTextFieldLength ) ); + //coverity[fallthrough : FALSE] default: // We need to check if it is a addressInfo tag. // AddressInfo Tag diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/dbreg/src/EPos_CPosLmDbRegistry.cpp --- a/landmarks/locationlandmarks/dbreg/src/EPos_CPosLmDbRegistry.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/dbreg/src/EPos_CPosLmDbRegistry.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -108,12 +108,10 @@ User::LeaveIfError(iDb.Create(aFileSession, aFileName)); TDeleteFile* del = new (ELeave) TDeleteFile; - CleanupStack::PushL(del); del->iFs = &aFileSession; del->iFilename.Set(aFileName); CleanupStack::PushL(TCleanupItem(DeleteFileCleanupItem, del)); - CleanupClosePushL(iDb); //Create the database table CDbColSet* columns = CDbColSet::NewLC(); @@ -134,9 +132,7 @@ User::LeaveIfError(iDb.Execute(*sql)); CleanupStack::PopAndDestroy(sql); - CleanupStack::Pop(&iDb); - CleanupStack::Pop(); //DeleteFileCleanupItem - CleanupStack::PopAndDestroy(del); + CleanupStack::PopAndDestroy(&del); //DeleteFileCleanupItem } // ----------------------------------------------------------------------------- diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalDatabase.cpp --- a/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalDatabase.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalDatabase.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -321,6 +321,7 @@ // EXPORT_C void CPosLmLocalDatabase::CommitServerTransactionLX() { + //coverity[naming_error : FALSE] CommitServerTransactionL(); CleanupStack::Pop(); // rollback } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalExportOp.cpp --- a/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalExportOp.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalExportOp.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -155,12 +155,15 @@ i < iNrOfSubOperations && iCurrentCategory < iCategoryIdArray.Count(); i++) { + //coverity[alloc_fn : FALSE] + //coverity[assign :FALSE] CPosLandmarkCategory* category = ReadCategoryFromDbLC(iCategoryIdArray[iCurrentCategory++]); if (iTransferOptions & CPosLandmarkDatabase::EIncludeGlobalCategoryNames) { + //coverity[leave_without_push : FALSE] SetPredefinedGlobalNameL(category); } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/localaccess/src/EPos_RPosLmLocalAccessSubsession.cpp --- a/landmarks/locationlandmarks/localaccess/src/EPos_RPosLmLocalAccessSubsession.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/localaccess/src/EPos_RPosLmLocalAccessSubsession.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -91,6 +91,7 @@ TPosLmEventType aEventType, TPosLmItemId aId) { + //coverity[var_decl : FALSE] TPosLmEvent event; event.iEventType = aEventType; event.iLandmarkItemId = aId; diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/localaccess/src/epos_rposlmlocalnameindex.cpp --- a/landmarks/locationlandmarks/localaccess/src/epos_rposlmlocalnameindex.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/localaccess/src/epos_rposlmlocalnameindex.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -46,8 +46,10 @@ TPosLmItemId aId, const TDesC& aName ) { CIndexItem* self = new (ELeave) CIndexItem; + CleanupStack::PushL( self ); self->iId = aId; self->iName = aName.AllocL(); + CleanupStack::Pop( self ); return self; } @@ -275,7 +277,7 @@ TInt err = iSession.SendReceive( EPosLmServerUpdateNameIndex, TIpcArgs( EPosLmServerRemoveLandmarks, &idsDes ) ); - delete ids; + delete[] ids; User::LeaveIfError( err ); } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/searchclientlib/src/EPos_PosLmDisplayDataHandler.cpp --- a/landmarks/locationlandmarks/searchclientlib/src/EPos_PosLmDisplayDataHandler.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/searchclientlib/src/EPos_PosLmDisplayDataHandler.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -31,7 +31,6 @@ CPosLmDisplayData& aDisplayData, CPosLmDisplayItem* aDisplayItem ) { - RPointerArray& displayItems = aDisplayData.DisplayItems(); InsertItemL( aDisplayData, aDisplayItem, aDisplayData.Count() ); // append to the end } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/server/inc/epos_lmdebug.h --- a/landmarks/locationlandmarks/server/inc/epos_lmdebug.h Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/server/inc/epos_lmdebug.h Wed Mar 31 22:18:21 2010 +0300 @@ -49,6 +49,7 @@ inline void Log( TRefByValue aFmt, ... ) { + //coverity[var_decl : FALSE] VA_LIST list; VA_START( list, aFmt ); diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/server/src/EPos_CPosLmLocalAccessSubsession.cpp --- a/landmarks/locationlandmarks/server/src/EPos_CPosLmLocalAccessSubsession.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/server/src/EPos_CPosLmLocalAccessSubsession.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -754,12 +754,14 @@ if ( aMessage.Int0() == EPosLmServerUpdateLandmarks ) { +//coverity[freed_arg : FALSE] index.UpdateL( id, lmBuf ); } else { index.InsertL( id, lmBuf ); } +//coverity[pass_freed_arg : FALSE] CleanupStack::Pop( lmBuf ); } diff -r 19bff11d6c18 -r 6fcbaa43369c landmarks/locationlandmarks/server/src/EPos_CPosLmNameIndex.cpp --- a/landmarks/locationlandmarks/server/src/EPos_CPosLmNameIndex.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/landmarks/locationlandmarks/server/src/EPos_CPosLmNameIndex.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -344,7 +344,8 @@ item->SetValid(); CleanupStack::PopAndDestroy( name ); } - + //coverity[check_return :FALSE] + //coverity[unchecked_value :FALSE] iTable.NextL(); iTablePosition++; } @@ -448,7 +449,9 @@ // void CPosLmNameIndex::InsertL( TPosLmItemId aLmid, HBufC* aName ) { - DoInsertL( aLmid, aName ); + //coverity[ alloc_fn : FALSE ] + DoInsertL( aLmid, aName ); + } //-------------------------------------------------------------------- @@ -539,7 +542,9 @@ void CPosLmNameIndex::UpdateL( TPosLmItemId aId, const TDesC& aName ) { HBufC* name = aName.AllocLC(); +//coverity[freed_arg : FALSE] UpdateL( aId, name ); +//coverity[pass_freed_arg : FALSE] CleanupStack::Pop( name ); } diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/group/bld.inf --- a/locationsystemui/locationsysui/group/bld.inf Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/group/bld.inf Wed Mar 31 22:18:21 2010 +0300 @@ -114,5 +114,7 @@ //Satellite Info #include "../locblidsatelliteinfo/group/bld.inf" +// Query and Notification +#include "../queryandnotification/group/bld.inf" PRJ_TESTMMPFILES // End of File diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locblidsatelliteinfo/inc/satellitecontrol.h --- a/locationsystemui/locationsysui/locblidsatelliteinfo/inc/satellitecontrol.h Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locblidsatelliteinfo/inc/satellitecontrol.h Wed Mar 31 22:18:21 2010 +0300 @@ -22,7 +22,7 @@ #define __SATELLITE_CONTROL_H__ // INCLUDE FILES -#include +#include #include #include "SatInfoConsts.h" #include "MSatelliteEng.h" diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locblidsatelliteinfo/src/satellitecontrol.cpp --- a/locationsystemui/locationsysui/locblidsatelliteinfo/src/satellitecontrol.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locblidsatelliteinfo/src/satellitecontrol.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include //===HEADER FILE INCLUDED FOR HACK======= #include diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsessioneditor.cpp --- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsessioneditor.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsessioneditor.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -613,6 +613,7 @@ if( !aSeconds ) { tempString.Num(aSeconds); + AknTextUtils::LanguageSpecificNumberConversion(tempString); aTimeString = StringLoader::LoadL( R_LOC_SUPL_TRIGGER_TIME_MINUTES, tempString ); return; } @@ -625,6 +626,7 @@ TReal mins = TReal(aSeconds)/KMinToSecs; Math::Round( approxValue, mins, 2 ); tempString.Num(approxValue, fmt); + AknTextUtils::LanguageSpecificNumberConversion(tempString); aTimeString = StringLoader::LoadL( R_LOC_SUPL_TRIGGER_TIME_MINUTES, tempString ); } else if( hrs == 1 ) @@ -638,6 +640,7 @@ { Math::Round( approxValue, hrs, 2 ); tempString.Num(approxValue, fmt); + AknTextUtils::LanguageSpecificNumberConversion(tempString); aTimeString = StringLoader::LoadL( R_LOC_SUPL_TRIGGER_TIME_HOURS, tempString ); } else if( days == 1 ) @@ -648,7 +651,8 @@ { Math::Round( approxValue, days, 2 ); tempString.Num(approxValue, fmt); - aTimeString = StringLoader::LoadL( R_LOC_SUPL_TRIGGER_TIME_DAYS, tempString ); + AknTextUtils::LanguageSpecificNumberConversion(tempString); + aTimeString = StringLoader::LoadL( R_LOC_SUPL_TRIGGER_TIME_DAYS, tempString ); } } } diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locutils/src/locphonenumberformat.cpp --- a/locationsystemui/locationsysui/locutils/src/locphonenumberformat.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locutils/src/locphonenumberformat.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -19,7 +19,7 @@ // INCLUDE FILES #include -#include +#include #include #include #include diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locutils/src/loctextutils.cpp --- a/locationsystemui/locationsysui/locutils/src/loctextutils.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locutils/src/loctextutils.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDE FILES #include "loctextutils.h" -#include +#include #include #include diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locverifier/inc/lpdperiodicprocessor.h --- a/locationsystemui/locationsysui/locverifier/inc/lpdperiodicprocessor.h Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locverifier/inc/lpdperiodicprocessor.h Wed Mar 31 22:18:21 2010 +0300 @@ -20,8 +20,7 @@ #define CLPDPERIODICPROCESSOR_H // INCLUDES -#include -#include +#include #include #include "lpdsuplsettingsadapterobserver.h" diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locverifier/inc/lpdperiodicreqinfo.h --- a/locationsystemui/locationsysui/locverifier/inc/lpdperiodicreqinfo.h Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locverifier/inc/lpdperiodicreqinfo.h Wed Mar 31 22:18:21 2010 +0300 @@ -20,7 +20,7 @@ #define CLPDPERIODICREQINFO_H #include -#include +#include /** * Periodic info structure to Que. diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locverifier/inc/lpdquerylauncherbase.h --- a/locationsystemui/locationsysui/locverifier/inc/lpdquerylauncherbase.h Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locverifier/inc/lpdquerylauncherbase.h Wed Mar 31 22:18:21 2010 +0300 @@ -25,7 +25,7 @@ #include #include #include -#include +#include // SYSTEM INCLUDE diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locverifier/inc/lpdverifierplugin.h --- a/locationsystemui/locationsysui/locverifier/inc/lpdverifierplugin.h Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locverifier/inc/lpdverifierplugin.h Wed Mar 31 22:18:21 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDES -#include +#include #include #include diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/locverifier/src/lpdrequestorprocessor.cpp --- a/locationsystemui/locationsysui/locverifier/src/lpdrequestorprocessor.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/locationsystemui/locationsysui/locverifier/src/lpdrequestorprocessor.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -25,7 +25,7 @@ #include #include #include -#include +#include // CONSTANTS _LIT( KUnknownRequestor, "Unknown" ); diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/BWINS/EPOSPRVQNIFU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/BWINS/EPOSPRVQNIFU.DEF Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,20 @@ +EXPORTS + ??0CPosPrivacyNotifier@@IAE@XZ @ 1 NONAME ; CPosPrivacyNotifier::CPosPrivacyNotifier(void) + ??1CPosPrivacyNotifier@@UAE@XZ @ 2 NONAME ; CPosPrivacyNotifier::~CPosPrivacyNotifier(void) + ?BaseConstructL@CPosPrivacyNotifier@@IAEXVTUid@@H@Z @ 3 NONAME ; void CPosPrivacyNotifier::BaseConstructL(class TUid, int) + ?CancelReason@CPosPrivacyNotifier@@QBE?AW4TPosVerifyCancelReason@@XZ @ 4 NONAME ; enum TPosVerifyCancelReason CPosPrivacyNotifier::CancelReason(void) const + ?CheckClientSecureId@CPosPrivacyNotifier@@QAEHVTSecureId@@@Z @ 5 NONAME ; int CPosPrivacyNotifier::CheckClientSecureId(class TSecureId) + ?CompleteAllRequests@CPosPrivacyNotifier@@QAEXH@Z @ 6 NONAME ; void CPosPrivacyNotifier::CompleteAllRequests(int) + ?CompleteRequest@CPosPrivacyNotifier@@QAEXJH@Z @ 7 NONAME ; void CPosPrivacyNotifier::CompleteRequest(long, int) + ?CurrentRequest@CPosPrivacyNotifier@@QBEJXZ @ 8 NONAME ; long CPosPrivacyNotifier::CurrentRequest(void) const + ?GetRequestsL@CPosPrivacyNotifier@@QBEXAAV?$RArray@J@@@Z @ 9 NONAME ; void CPosPrivacyNotifier::GetRequestsL(class RArray &) const + ?LocationRequestDecision@CPosPrivacyNotifier@@QBE?AW4TPosRequestDecision@@XZ @ 10 NONAME ; enum TPosRequestDecision CPosPrivacyNotifier::LocationRequestDecision(void) const + ?NotificationReason@CPosPrivacyNotifier@@QBE?AW4TPosNotificationReason@@XZ @ 11 NONAME ; enum TPosNotificationReason CPosPrivacyNotifier::NotificationReason(void) const + ?NotifierBase@CPosPrivacyNotifier@@QBEPAVMEikSrvNotifierBase2@@XZ @ 12 NONAME ; class MEikSrvNotifierBase2 * CPosPrivacyNotifier::NotifierBase(void) const + ?QueryTimeoutStrategy@CPosPrivacyNotifier@@QBE?AW4TPosRequestDecision@@XZ @ 13 NONAME ; enum TPosRequestDecision CPosPrivacyNotifier::QueryTimeoutStrategy(void) const + ?RequestSource@CPosPrivacyNotifier@@QBE?AW4TPosRequestSource@@XZ @ 14 NONAME ; enum TPosRequestSource CPosPrivacyNotifier::RequestSource(void) const + ?RequestTypeL@CPosPrivacyNotifier@@QBE?AW4TRequestType@1@J@Z @ 15 NONAME ; enum CPosPrivacyNotifier::TRequestType CPosPrivacyNotifier::RequestTypeL(long) const + ?RequestorCountL@CPosPrivacyNotifier@@QBEHXZ @ 16 NONAME ; int CPosPrivacyNotifier::RequestorCountL(void) const + ?RequestorLC@CPosPrivacyNotifier@@QBEPAVCPosRequestor@@H@Z @ 17 NONAME ; class CPosRequestor * CPosPrivacyNotifier::RequestorLC(int) const + ?SetCurrentRequestL@CPosPrivacyNotifier@@QAEXJ@Z @ 18 NONAME ; void CPosPrivacyNotifier::SetCurrentRequestL(long) + diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/EABI/eposprvqnifU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/EABI/eposprvqnifU.DEF Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,24 @@ +EXPORTS + _ZN19CPosPrivacyNotifier14BaseConstructLE4TUidi @ 1 NONAME + _ZN19CPosPrivacyNotifier15CompleteRequestEli @ 2 NONAME + _ZN19CPosPrivacyNotifier18SetCurrentRequestLEl @ 3 NONAME + _ZN19CPosPrivacyNotifier19CheckClientSecureIdE9TSecureId @ 4 NONAME + _ZN19CPosPrivacyNotifier19CompleteAllRequestsEi @ 5 NONAME + _ZN19CPosPrivacyNotifierC2Ev @ 6 NONAME + _ZN19CPosPrivacyNotifierD0Ev @ 7 NONAME + _ZN19CPosPrivacyNotifierD1Ev @ 8 NONAME + _ZN19CPosPrivacyNotifierD2Ev @ 9 NONAME + _ZNK19CPosPrivacyNotifier11RequestorLCEi @ 10 NONAME + _ZNK19CPosPrivacyNotifier12CancelReasonEv @ 11 NONAME + _ZNK19CPosPrivacyNotifier12GetRequestsLER6RArrayIlE @ 12 NONAME + _ZNK19CPosPrivacyNotifier12NotifierBaseEv @ 13 NONAME + _ZNK19CPosPrivacyNotifier12RequestTypeLEl @ 14 NONAME + _ZNK19CPosPrivacyNotifier13RequestSourceEv @ 15 NONAME + _ZNK19CPosPrivacyNotifier14CurrentRequestEv @ 16 NONAME + _ZNK19CPosPrivacyNotifier15RequestorCountLEv @ 17 NONAME + _ZNK19CPosPrivacyNotifier18NotificationReasonEv @ 18 NONAME + _ZNK19CPosPrivacyNotifier20QueryTimeoutStrategyEv @ 19 NONAME + _ZNK19CPosPrivacyNotifier23LocationRequestDecisionEv @ 20 NONAME + _ZTI19CPosPrivacyNotifier @ 21 NONAME ; ## + _ZTV19CPosPrivacyNotifier @ 22 NONAME ; ## + diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/group/EPos_PrivacyQNInterface.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/group/EPos_PrivacyQNInterface.mmp Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for handling SUPL_INIT message. +* +*/ + + + +TARGET eposprvqnif.dll +TARGETTYPE dll +UID 0x1000008d 0x101f7a88 + +VENDORID 0x70000001 +CAPABILITY ALL -TCB + +SOURCEPATH ../src +SOURCE EPos_CPosPrivacyNotifier.cpp +SOURCE EPos_CPosPrivacyNotifierExtension.cpp +SOURCE EPos_CPosRequestHandler.cpp + +USERINCLUDE ../inc + +MW_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY euser.lib +LIBRARY estor.lib +LIBRARY eiksrv.lib +LIBRARY eposprvtyp.lib + +SMPSAFE diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/group/bld.inf Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,26 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for handling SUPL_INIT message. +* +*/ + +#include + +PRJ_MMPFILES +EPos_PrivacyQNInterface.mmp + +PRJ_EXPORTS +./lbsqueryandnotification.iby CORE_MW_LAYER_IBY_EXPORT_PATH(lbsqueryandnotification.iby) + +// End of file diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/group/lbsqueryandnotification.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/group/lbsqueryandnotification.iby Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,29 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for handling SUPL_INIT message. +* +*/ +#ifndef __LBS_QUERYANDNOTIFICATION_IBY__ +#define __LBS_QUERYANDNOTIFICATION_IBY__ + + +REM LBS Query And Notification Api + +#if !defined(SYMBIAN_EXCLUDE_LOCATION) && defined(SYMBIAN_INCLUDE_LOCATION_ADVANCED_DIALOG) + +file=ABI_DIR\DEBUG_DIR\eposprvqnif.dll System\libs\eposprvqnif.dll + +#endif // SYMBIAN_EXCLUDE_LOCATION && SYMBIAN_INCLUDE_LOCATION_ADVANCED_DIALOG + +#endif diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosPrivacyNotifierExtension.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosPrivacyNotifierExtension.h Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for privacy notifier extension helper. +* +*/ + + + + +/** + @file + @internalComponent + @released +*/ + +#ifndef CPOSPRIVACYNOTIFIEREXTENSION_H +#define CPOSPRIVACYNOTIFIEREXTENSION_H + +// INCLUDES +#include +#include +#include +#include +// FORWARD DECLARATIONS +class CPosRequestHandler; + +// CLASS DECLARATION + +/** +* The privacy notifier extension helper class. +*/ +NONSHARABLE_CLASS(CPosPrivacyNotifierExtension) : public CBase, public MEikSrvNotifierBase2 + { + public: + + /** + * Two-phased constructor. + */ + static CPosPrivacyNotifierExtension* NewL( + CPosPrivacyNotifier* aPrivNotifier); + + /** + * Destructor. + */ + ~CPosPrivacyNotifierExtension(); + + public: // New functions + + /** + * Finds the request id in the array which matches the specified + * request id. + * @param aRequestId The id of a query or notification request. + * @return The index of the matching request id within the array. + * KErrNotFound, if no matching request id can be found. + */ + TInt Find(TPosQNRequestId aRequestId) const; + + /** + * Resets data + */ + void ResetData(); + + /** + * Removes a request from the array containing all outstanding requests. + * @param aRequestId The id of a query or notification request. + * @return The index of the matching request id within the array. + * KErrNotFound, if no matching request id can be found. + */ + TInt RemoveRequestFromArray(TPosQNRequestId aRequestId); + + /** + * Empties the array containing all outstanding requests. + */ +// void RemoveAllRequestsFromArray(); + + /** + * Prepares the current request by getting RequestorStack. + */ + void PrepareL(TPosQNRequestId aRequestId); + + /** + * This method completes a privacy query or notification request. + * + * @param aRequestId The id of the privacy query or notification request + * to complete. + * @param aCompletionCode The request completion code. + */ + void CompleteRequest( + /* IN */ TPosQNRequestId aRequestId, + /* IN */ TInt aCompletionCode + ); + + /** + * This method completes all outstanding requests. + * + * This function should be used if a serious error is encountered. All + * requests can then be completed with the same error code. + * + * @param aCompletionCode The request completion code. + */ + void CompleteAllRequests( + /* IN */ TInt aCompletionCode + ); + + public: // Functions from base classes + + /** + * From MEikSrvNotifierBase2 Called to destroy notifier. + */ + void Release(); + + /** + * From MEikSrvNotifierBase2 Called when the DLL is loaded. + * @return info object containing UID, channel and priority + */ + TNotifierInfo RegisterL(); + + /** + * From MEikSrvNotifierBase2 + * @return info object containing UID, channel and priority + */ + TNotifierInfo Info() const; + + /** + * From MEikSrvNotifierBase2 + * + * Not supported, leaves if called. + * @param aBuffer Input descriptor. Not used. + * @return TPtrC8 + */ + TPtrC8 StartL(const TDesC8& aBuffer); + + /** + * From MEikSrvNotifierBase2 + * + * @param aBuffer Input descriptor, contains the format. Not used. + * @param aReplySlot Reply slot. Not used. + * @param aMessage Used to write data back to client + */ + void StartL( + const TDesC8& aBuffer, + TInt aReplySlot, + const RMessagePtr2& aMessage + ); + + /** + * From MEikSrvNotifierBase2 + * Cancels all outstanding requests. + */ + void Cancel(); + + /** + * From MEikSrvNotifierBase2 + * Starts the notifier dialog. + * @param aBuffer Input descriptor, contains the format. + * A TPosQNInputData is expected as input. + * @return TPtrC8 + */ + TPtrC8 UpdateL(const TDesC8& aBuffer); + + private: + /** + * C++ default constructor. + */ + CPosPrivacyNotifierExtension(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(CPosPrivacyNotifier* aPrivNotifier); + + // By default, prohibit copy constructor + CPosPrivacyNotifierExtension(const CPosPrivacyNotifierExtension&); + // Prohibit assigment operator + CPosPrivacyNotifierExtension& operator= ( + const CPosPrivacyNotifierExtension&); + + public: // Data + TNotifierInfo iNotifierInfo; + RArray iRequestArray; + TPosQNRequestId iCurrentRequestId; + RPosRequestorStack iRequestorStack; + RMessagePtr2 iMessage; + + private: // Data + CPosPrivacyNotifier* iPrivacyNotifier; + CPosRequestHandler* iRequestHandler; + + }; + +#endif // CPOSPRIVACYNOTIFIEREXTENSION_H + +// End of File diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosRequestHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosRequestHandler.h Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for privacy notifier request handling helper. +* +*/ + + + + +/** + @file + @internalComponent + @released +*/ + +#ifndef EPOS_CPOSREQUESTHANDLER_H +#define EPOS_CPOSREQUESTHANDLER_H + +// INCLUDES +#include +#include +#include + +// FORWARD DECLARATIONS +class CPosPrivacyNotifier; + +// CLASS DECLARATION + +/** +* The privacy notifier request handling helper class. +*/ +NONSHARABLE_CLASS(CPosRequestHandler) : public CActive + { + public: // Constructors and destructors + + /** + * Two-phased constructor. + */ + static CPosRequestHandler* NewL( + CPosPrivacyNotifier* aNotifier, + CPosPrivacyNotifierExtension* aExtension); + + /** + * Destructor. + */ + ~CPosRequestHandler(); + + public: // New functions + + /** + * Starts the active scheduler. + * @param aInputData Data containing update parameters. + */ + void ScheduleRequest(const TPosQNInputData& aInputData); + + protected: // Functions from base classes + + /** + * From CActive. + */ + void RunL(); + + /** + * From CActive. + */ + void DoCancel(); + + /** + * From CActive. + */ + TInt RunError(TInt aError); + + private: + + /** + * Private C++ default constructor. + */ + CPosRequestHandler(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( + CPosPrivacyNotifier* aNotifier, + CPosPrivacyNotifierExtension* aExtension); + + private: // Data + + CPosPrivacyNotifier* iPrivacyNotifier; + CPosPrivacyNotifierExtension* iExtension; + TPosQNInputData iInputData; + +}; + +#endif // EPOS_CPOSREQUESTHANDLER_H + diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/src/EPos_CPosPrivacyNotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/src/EPos_CPosPrivacyNotifier.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,490 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for LBS Privacy Query & Notify (Q&N) privacy notifiers. +* +*/ + + + +#include +#include +#include +#include +#include "EPos_CPosPrivacyNotifierExtension.h" + +#if defined(NRH_UNIT_TEST) +// For the NRH unit test, use a custom notifier UID. +// This is so that we can have both the unit test +// Q&N notifier and the integration test Q&N notifier +// (using the real UID) in the same ROM. +const TUid KNotifierUid = { 0x10283744 }; +#else +const TUid KNotifierUid = { KPosPrivacyNotifierImplUid }; +#endif // NRH_UNIT_TEST + + +// --------------------------------------------------------------------------- +/** +Default constructor. + +This constructor assumes that the notifier only supports +EBasicCapabilities, i.e. the notifier supports queries but only +notifications of accepted requests are supported. If the notifier +is more advanced, the overloaded constructor should be used. +*/ +EXPORT_C CPosPrivacyNotifier::CPosPrivacyNotifier() + { + } + +// --------------------------------------------------------------------------- +/** +Symbian 2nd phase constructor. Must be called first thing during construction. + +The notifier must specify channel and priority. These attributes are +defined by the Notifier Framework in eiknotapi.h. + +The different priority values are defined in +MEikSrvNotifierBase2::TNotifierPriority. + +@param aChannel A channel. See definition in Notifier Framework. +@param aPriority A notifier priority. See definition in Notifier Framework. + +@see MEikSrvNotifierBase2::TNotifierPriority +*/ +EXPORT_C void CPosPrivacyNotifier::BaseConstructL( + TUid aChannel, + TInt aPriority) + { + iExtension = CPosPrivacyNotifierExtension::NewL(this); + iExtension->iNotifierInfo.iChannel = aChannel; + iExtension->iNotifierInfo.iPriority = aPriority; + iExtension->iNotifierInfo.iUid = KNotifierUid; + } + +// --------------------------------------------------------------------------- +EXPORT_C CPosPrivacyNotifier::~CPosPrivacyNotifier() + { + delete iExtension; + } + +// --------------------------------------------------------------------------- +/** +Retrieves a handle to the notifier base. + +This handle is needed to populate the notifier base array in the +notifier factory method. + +@return A handle to the notifier base. +*/ +EXPORT_C MEikSrvNotifierBase2* CPosPrivacyNotifier::NotifierBase() const + { + return iExtension; + } + +// --------------------------------------------------------------------------- +/** +Retrieves the cancel reason. + +Cancel reason can only be retrieved when HandleRequestCancelled or +HandleAllRequestCancelled is running. If the method is called at another +time, it will return ECancelReasonNotAvailable. + +Note that the TCancelReason enum is designed to be extendable, +i.e. new values may be added in the future. This means that any +unrecognized value must be treated like ECancelReasonNotAvailable. + +@return The cancel reason. + +@see HandleRequestCancelled() +@see HandleAllRequestCancelled() +@see ECancelReasonNotAvailable +@see TCancelReason +*/ +EXPORT_C TPosVerifyCancelReason + CPosPrivacyNotifier::CancelReason() const + { + TPosQNRequestId requestId = CurrentRequest(); + TInt index = iExtension->Find(requestId); + + if (index == KErrNotFound) + { + return EPosCancelReasonNotAvailable; + } + + return iExtension->iRequestArray[index].iCancelReason; + } + +// --------------------------------------------------------------------------- +/** +Returns a list of all outstanding privacy query and notification requests. + +If there are no outstanding requests, an empty array will be returned. + +@param aRequestArray On return, this array will contain all + outstanding query and notification requests. +*/ +EXPORT_C void CPosPrivacyNotifier::GetRequestsL( + RArray& aRequestArray) const + { + aRequestArray.Reset(); + for (TInt i = 0; i < iExtension->iRequestArray.Count(); i++) + { + User::LeaveIfError( + aRequestArray.Append(iExtension->iRequestArray[i].iId)); + } + } + +// --------------------------------------------------------------------------- +/** +Checks whether a request is privacy query or notification type. + +@param aRequestId The ID of the request to check. +@return @p EQuery if query type and ENotification if notification type. + +@leave If the specified request is not an outstanding request, this method + will leave with error code KErrNotFound. +*/ +EXPORT_C CPosPrivacyNotifier::TRequestType CPosPrivacyNotifier::RequestTypeL( + TPosQNRequestId aRequestId) const + { + TInt index = iExtension->Find(aRequestId); + __ASSERT_ALWAYS(index != KErrNotFound, User::Leave(KErrNotFound)); + + if (iExtension->iRequestArray[index].iType == + TPosQNInputData::EQuery) + { + return CPosPrivacyNotifier::EQuery; + } + + return CPosPrivacyNotifier::ENotification; + } + +// --------------------------------------------------------------------------- +/** +Sets the request which the notifier wants to read information about. + +Current request specifies the request which will be accessed when +RequestorCountL and RequestorLC are called. + +@param aRequestId The ID of the current request. + +@leave If the specified request is not an outstanding request, this method + will leave with error code KErrNotFound. +*/ +EXPORT_C void CPosPrivacyNotifier::SetCurrentRequestL( + TPosQNRequestId aRequestId) + { + iExtension->PrepareL(aRequestId); + } + +// --------------------------------------------------------------------------- +/** +Returns the ID of the current request. + +Current request specifies the request which will be accessed when +RequestorCountL and RequestorLC are called. + +@return The ID of the current request. If the current request has + become invalid, e.g. the request set as current has been cancelled, + KPosNullQNRequestId will be returned. + +@see RequestorCountL() +@see RequestorLC() +*/ +EXPORT_C TPosQNRequestId CPosPrivacyNotifier::CurrentRequest() const + { + return iExtension->iCurrentRequestId; + } + +// --------------------------------------------------------------------------- +/** +Retrieves the timeout strategy for a query. + +Timeout strategy specifies what the decision will be if the +verification query times out. The decision is either +EPosDecisionRejected or EPosDecisionAccepted. + +Before calling this method, current request must first be set by +calling SetCurrentRequestL. + +Timeout strategy can only be retrieved for a query request. If the +current request is a notification, this method will return +EPosDecisionNotAvailable. + +Note that the TPosRequestDecision enum is designed to be +extendable, i.e. new values may be added in the future. This means +that any unrecognized value must be treated like +EPosDecisionNotAvailable. + +@return The timeout strategy. + +@see SetCurrentRequestL() +*/ +EXPORT_C TPosRequestDecision CPosPrivacyNotifier::QueryTimeoutStrategy() const + { + TPosQNRequestId requestId = CurrentRequest(); + TInt index = iExtension->Find(requestId); + + if (index == KErrNotFound || + iExtension->iRequestArray[index].iType == + TPosQNInputData::ENotification) + { + return EPosDecisionNotAvailable; + } + + return iExtension->iRequestArray[index].iTimeoutStrategy; + } + +// --------------------------------------------------------------------------- +/** +Retrieves the source of the location request. + +Before calling this method, current request must first be set by +calling SetCurrentRequestL. + +Note that the TPosRequestSource enum is designed to be extendable, +i.e. new values may be added in the future. This means that any +unrecognized value must be treated like EPosRequestSourceNotAvailable. + +@return The request source, e.g. EPosRequestSourceNetwork or + EPosRequestSourceNotAvailable if the request source is not specified. + +@see SetCurrentRequestL() +@see TPosRequestSource +*/ +EXPORT_C TPosRequestSource CPosPrivacyNotifier::RequestSource() const + { + TPosQNRequestId requestId = CurrentRequest(); + TInt index = iExtension->Find(requestId); + + if (index == KErrNotFound) + { + return EPosRequestSourceNotAvailable; + } + + return iExtension->iRequestArray[index].iRequestSource; + } + +// --------------------------------------------------------------------------- +/** +Retrieves whether the location request was accepted or rejected. + +For notification requests, this method will return the request +decision. For queries, this method will return EPosDecisionNotAvailable. + +Before calling this method, current request must first be set by +calling SetCurrentRequestL, otherwise this method will return +EPosDecisionNotAvailable. + +Note that the TPosRequestDecision enum is designed to be +extendable, i.e. new values may be added in the future. +This means that any unrecognized value must be treated like +EPosDecisionNotAvailable. + +@return Whether the location request was accepted or rejected, or + EPosDecisionNotAvailable if the outcome has not yet been decided. + +@see SetCurrentRequestL() +@see TPosRequestDecision +*/ +EXPORT_C TPosRequestDecision + CPosPrivacyNotifier::LocationRequestDecision() const + { + TPosQNRequestId requestId = CurrentRequest(); + TInt index = iExtension->Find(requestId); + + if (index == KErrNotFound || + iExtension->iRequestArray[index].iType == TPosQNInputData::EQuery) + { + return EPosDecisionNotAvailable; + } + + return iExtension->iRequestArray[index].iRequestDecision; + } + +// --------------------------------------------------------------------------- +/** +Retrieves the reason for a notification. + +Note that the TPosNotificationReason enum is designed to be +extendable, i.e. new values may be added in the future. This means +that any unrecognized value must be treated like +EPosNotificationReasonNotAvailable. +If the notification reason is not known, the notification request +should be completed with code KErrNotSupported. + +@return The notification reason. + For queries, this method will return EPosNotificationReasonNotAvailable. + + Before calling this method, current request must first be set by + calling SetCurrentRequestL, otherwise this method will return + EPosNotificationReasonNotAvailable. + +@see EPosNotificationReasonNotAvailable +@see SetCurrentRequestL() +@see TPosNotificationReason +*/ +EXPORT_C TPosNotificationReason CPosPrivacyNotifier::NotificationReason() const + { + TPosQNRequestId requestId = CurrentRequest(); + TInt index = iExtension->Find(requestId); + + if (index == KErrNotFound || + iExtension->iRequestArray[index].iType == TPosQNInputData::EQuery) + { + return EPosNotificationReasonNotAvailable; + } + + return iExtension->iRequestArray[index].iNotificationReason; + } + +// --------------------------------------------------------------------------- +/** +Returns the number of requestors in the current request. + +Before calling this method, current request must first be set by +calling SetCurrentRequestL. + +@return The number of requestors in the current request. + +@leave If the current request has not been set or the current request is no + longer valid, e.g. because it has been cancelled or completed, this + method will leave with error code KErrNotFound. + +@see SetCurrentRequestL() +*/ +EXPORT_C TInt CPosPrivacyNotifier::RequestorCountL() const + { + __ASSERT_ALWAYS(CurrentRequest() != KPosNullQNRequestId, + User::Leave(KErrNotFound)); + + return iExtension->iRequestorStack.Count(); + } + +// --------------------------------------------------------------------------- +/** +Returns basic information about the requestor at a specified index. + +Before calling this method, current request must first be set by +calling SetCurrentRequestL. + +Whether the requestor is a contact or a service can be found by +calling CPosRequestor::RequestorType. + +If the requestor is a contact, the requestor object can be cast to +CPosContactRequestor. + +If the requestor is a service, the requestor object can be cast to +CPosServiceRequestor. + +@param aRequestorIndex The index of the requestor. +@return Information about the requestor. + +@leave If the specified requestor index is not valid, i.e. less than 0 or + larger than or equal to RequestorCountL, this method will + leave with error code KErrArgument. + + If the current request has not been set or the current request is no + longer valid, e.g. because it has been cancelled or completed, this method + will leave with error code KErrNotFound. + +@see SetCurrentRequestL() +@see RequestorCountL() +@see CPosContactRequestor +@see CPosServiceRequestor +@see CPosRequestor::RequestorType +*/ +EXPORT_C CPosRequestor* CPosPrivacyNotifier::RequestorLC( + TInt aRequestorIndex) const + { + __ASSERT_ALWAYS(CurrentRequest() != KPosNullQNRequestId, + User::Leave(KErrNotFound)); + + __ASSERT_ALWAYS(aRequestorIndex >= 0 && + aRequestorIndex < iExtension->iRequestorStack.Count(), + User::Leave(KErrArgument)); + + CPosRequestor* requestor = iExtension->iRequestorStack[aRequestorIndex]; + TInt type = requestor->RequestorType(); + CPosRequestor::TRequestorIdFormat format = requestor->RequestorIdFormat(); + TPtrC idString = requestor->RequestorIdString(); + + if (type == CPosRequestor::ERequestorService) + { + CPosServiceRequestor* serviceRequestor = CPosServiceRequestor::NewLC(format, idString); + serviceRequestor->SetRequestType(requestor->RequestType()); + serviceRequestor->SetNetworkType(requestor->NetworkType()); + return serviceRequestor; + } + + CPosContactRequestor* contactRequestor = CPosContactRequestor::NewLC(format, idString); + contactRequestor->SetRequestType(requestor->RequestType()); + contactRequestor->SetNetworkType(requestor->NetworkType()); + return contactRequestor; + } + +// --------------------------------------------------------------------------- +/** +This method completes a privacy query or notification request. + +@param aRequestId The ID of the privacy query or notification request + to complete. +@param aCompletionCode The request completion code. + If the request is a privacy query, the completion code should be one of: + - KErrNone if query is accepted by the phone user. + - KErrAccessDenied if query is rejected by the phone user. + - KErrTimedOut if the query times out. + + If the request is a privacy notification, the completion code should be one of: + - KErrNone if the phone user dismisses the privacy notification + - KErrTimedOut if the notification times out. +*/ +EXPORT_C void CPosPrivacyNotifier::CompleteRequest( + TPosQNRequestId aRequestId, + TInt aCompletionCode) + { + iExtension->CompleteRequest(aRequestId, aCompletionCode); + } + +// --------------------------------------------------------------------------- +/** +This method completes all outstanding requests. + +This method can be used to accept or reject all outstanding +requests by completing with codes @p KErrNone or @p KErrAccessDenied +respectively. All notification requests will also be completed with +this code. + +@param aCompletionCode The request completion code. +*/ +EXPORT_C void CPosPrivacyNotifier::CompleteAllRequests(TInt aCompletionCode) + { + iExtension->CompleteAllRequests(aCompletionCode); + } + +// --------------------------------------------------------------------------- +/** +Checks that the Privacy UI was launched by the expected client. + +The caller specifies the secure ID of the expected client and this +method returns whether the Privacy UI was launched by that client or not. + +@param aSecureId The secureID of the expected client +@return ETrue if the client that called the notifier is the expected client +*/ +#pragma message("NOTE: CPosPrivacyNotifier::CheckClientSecureId has no type/return definition.") +EXPORT_C TBool CPosPrivacyNotifier::CheckClientSecureId(TSecureId aSecureId) + { + return iExtension->iMessage.SecureId() == aSecureId; + } diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/src/EPos_CPosPrivacyNotifierExtension.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/src/EPos_CPosPrivacyNotifierExtension.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,283 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for privacy notifier extension helper. +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include "EPos_CPosPrivacyNotifierExtension.h" +#include "EPos_CPosRequestHandler.h" + + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CPosPrivacyNotifierExtension::CPosPrivacyNotifierExtension() + { + } + +// ----------------------------------------------------------------------------- +// CPosPrivacyNotifierExtension::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::ConstructL( + CPosPrivacyNotifier* aPrivNotifier) + { + iRequestHandler = CPosRequestHandler::NewL(aPrivNotifier, this); + iPrivacyNotifier = aPrivNotifier; + ResetData(); + } + +// Two-phased constructor +CPosPrivacyNotifierExtension* CPosPrivacyNotifierExtension::NewL( + CPosPrivacyNotifier* aPrivNotifier) + { + CPosPrivacyNotifierExtension* self = new (ELeave) + CPosPrivacyNotifierExtension; + CleanupStack::PushL(self); + self->ConstructL(aPrivNotifier); + CleanupStack::Pop(self); + return self; + } + +// Destructor +CPosPrivacyNotifierExtension::~CPosPrivacyNotifierExtension() + { + iRequestorStack.ResetAndDestroy(); + iRequestArray.Close(); + delete iRequestHandler; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::Find +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CPosPrivacyNotifierExtension::Find(TPosQNRequestId aRequestId) const + { + for (TInt index = 0; index < iRequestArray.Count(); index++) + { + if (iRequestArray[index].iId == aRequestId) + { + return index; + } + } + return KErrNotFound; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::ResetData +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::ResetData() + { + iRequestorStack.ResetAndDestroy(); + iCurrentRequestId = KPosNullQNRequestId; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::RemoveRequestFromArray +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CPosPrivacyNotifierExtension::RemoveRequestFromArray( + TPosQNRequestId aRequestId) + { + TInt index = Find(aRequestId); + if (index == KErrNotFound) + { + return KErrNotFound; + } + + iRequestArray.Remove(index); + return index; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::PrepareL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::PrepareL( + TPosQNRequestId aRequestId) + { + TInt index = Find(aRequestId); + __ASSERT_ALWAYS(index != KErrNotFound, User::Leave(KErrNotFound)); + + iCurrentRequestId = aRequestId; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::CompleteRequest +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::CompleteRequest( + TPosQNRequestId aRequestId, + TInt aCompletionCode) + { + if (RemoveRequestFromArray(aRequestId) != KErrNotFound) + { + iMessage.Complete(aCompletionCode); + ResetData(); + } + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::CompleteAllRequests +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::CompleteAllRequests(TInt aCompletionCode) + { + CompleteRequest(iCurrentRequestId, aCompletionCode); + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::Release +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::Release() + { + delete iPrivacyNotifier; + iPrivacyNotifier = NULL; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::RegisterL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +CPosPrivacyNotifierExtension::TNotifierInfo + CPosPrivacyNotifierExtension::RegisterL() + { + return iNotifierInfo; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::Info +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +CPosPrivacyNotifierExtension::TNotifierInfo + CPosPrivacyNotifierExtension::Info() const + { + return iNotifierInfo; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TPtrC8 CPosPrivacyNotifierExtension::StartL(const TDesC8& /*aBuffer*/) + { + User::Leave(KErrNotSupported); + return TPtrC8(); + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::StartL( + const TDesC8& /*aBuffer*/, + TInt /*aReplySlot*/, + const RMessagePtr2& aMessage) + { + iMessage = aMessage; + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::Cancel +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPrivacyNotifierExtension::Cancel() + { + if (iRequestArray.Count() > 0) + { + TPosQNRequestId reqId = iRequestArray[0].iId; + iPrivacyNotifier->HandleRequestCancelled(reqId); + CompleteRequest(reqId, KErrCancel); + } + } + +// --------------------------------------------------------- +// CPosPrivacyNotifierExtension::UpdateL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TPtrC8 CPosPrivacyNotifierExtension::UpdateL(const TDesC8& aBuffer) + { + TPtrC8 tposQnData = aBuffer.Left(KPosQNInputDataClassSize); + + TPckgBuf input; + input.Copy(tposQnData); + TPosQNInputData update = input(); + + TInt index = Find(update.iId); + if (update.iCancelReason == EPosCancelReasonNotAvailable || + (update.iCancelReason == EPosCancelReasonTimeout && + update.iNotificationReason == EPosVerificationTimeout) ) + { + HBufC8* buf = HBufC8::NewLC(update.iDataSize); + TPtrC8 bufPtr = aBuffer.Mid(KPosQNInputDataClassSize); + + RDesReadStream stream(bufPtr); + CleanupClosePushL(stream); + iRequestorStack.InternalizeL(stream); + CleanupStack::PopAndDestroy(2, buf); //buf, stream + + User::LeaveIfError(iRequestArray.Append(update)); + iRequestHandler->ScheduleRequest(update); + } + else + { + if (index == KErrNotFound) + { + User::Leave(KErrArgument); + } + + iRequestArray[index].iCancelReason = update.iCancelReason; + } + + return TPtrC8(); + } + +// End of File diff -r 19bff11d6c18 -r 6fcbaa43369c locationsystemui/locationsysui/queryandnotification/src/EPos_CPosRequestHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/queryandnotification/src/EPos_CPosRequestHandler.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,111 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for privacy notifier request handling helper. +* +*/ + + + +#include +#include "EPos_CPosRequestHandler.h" +#include "EPos_CPosPrivacyNotifierExtension.h" + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CPosRequestHandler::CPosRequestHandler() : + CActive(CActive::EPriorityHigh) + { + } + +// EPOC default constructor can leave. +void CPosRequestHandler::ConstructL( + CPosPrivacyNotifier* aNotifier, + CPosPrivacyNotifierExtension* aExtension) + { + iPrivacyNotifier = aNotifier; + iExtension = aExtension; + CActiveScheduler::Add(this); + } + +// Two-phased constructor. +CPosRequestHandler* CPosRequestHandler::NewL( + CPosPrivacyNotifier* aNotifier, + CPosPrivacyNotifierExtension* aExtension) + { + CPosRequestHandler* self = + new(ELeave) CPosRequestHandler; + CleanupStack::PushL(self); + self->ConstructL(aNotifier, aExtension); + CleanupStack::Pop(self); + return self; + } + +// Destructor +CPosRequestHandler::~CPosRequestHandler() + { + Cancel(); + } + +// --------------------------------------------------------- +// CPosRequestHandler::ScheduleRequest +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosRequestHandler::ScheduleRequest(const TPosQNInputData& aInputData) + { + iInputData = aInputData; + + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + } + +// --------------------------------------------------------- +// CPosRequestHandler::RunL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosRequestHandler::RunL() + { + iPrivacyNotifier->HandleNewRequestL(iInputData.iId); + } + +// --------------------------------------------------------- +// CPosRequestHandler::DoCancel +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosRequestHandler::DoCancel() + { + } + +// --------------------------------------------------------- +// CPosRequestHandler::RunError +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CPosRequestHandler::RunError(TInt aError) + { + iExtension->CompleteRequest(iInputData.iId, aError); + return KErrNone; + } + +// End of File diff -r 19bff11d6c18 -r 6fcbaa43369c locsrv_plat/group/bld.inf --- a/locsrv_plat/group/bld.inf Mon Mar 15 12:42:19 2010 +0200 +++ b/locsrv_plat/group/bld.inf Wed Mar 31 22:18:21 2010 +0300 @@ -41,5 +41,6 @@ #include "../location_triggering_management_api/group/bld.inf" #include "../location_triggering_status_information_api/group/bld.inf" #include "../oma_supl_asn_codec_plugin_api/group/bld.inf" +#include "../query_and_notification_api/group/bld.inf" #include "../location_local_variation_api/group/bld.inf" diff -r 19bff11d6c18 -r 6fcbaa43369c locsrv_plat/query_and_notification_api/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locsrv_plat/query_and_notification_api/group/bld.inf Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: File that exports the files belonging to +: SUPL Settings API +* +*/ + + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +../inc/EPos_CPosPrivacyNotifier.h MW_LAYER_PLATFORM_EXPORT_PATH(EPos_CPosPrivacyNotifier.h) diff -r 19bff11d6c18 -r 6fcbaa43369c locsrv_plat/query_and_notification_api/inc/EPos_CPosPrivacyNotifier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locsrv_plat/query_and_notification_api/inc/EPos_CPosPrivacyNotifier.h Wed Mar 31 22:18:21 2010 +0300 @@ -0,0 +1,141 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Class for LBS Privacy Query & Notify (Q&N) privacy notifiers. +* +*/ + + + +#ifndef CPOSPRIVACYNOTIFIER_H +#define CPOSPRIVACYNOTIFIER_H + +// INCLUDES +#include +#include +#include + +// DATA TYPES + + +// CONSTANT DECLARATIONS +/** +@publishedPartner +@deprecated +*/ +const TPosQNRequestId KPosNullQNRequestId = -1; + +// FORWARD DECLARATIONS +class CPosPrivacyNotifierExtension; +class CPosRequestor; +class MEikSrvNotifierBase2; + +// CLASS DECLARATION +/** +Base class for LBS Privacy Query & Notify (Q&N) privacy notifiers. + +A privacy notifier is a UI plug-in which handles privacy query and +notification requests. + +This class contains declarations for event methods that must be implemented +by the notifier in order to receive information about new requests or +cancelled requests. + +It also contains methods for accessing information about a request and for +completing a request. + +@publishedPartner +@deprecated +*/ +class CPosPrivacyNotifier : public CBase + { + public: + /** + Specifies whether the requested dialog should be a query or a + notification dialog. + */ + enum TRequestType { + /** Query dialog requested. */ + EQuery = 0, + /** Notification dialog requested. */ + ENotification + }; + + public: + IMPORT_C virtual ~CPosPrivacyNotifier(); + + public: + + /** + * This method is called when a new privacy query or notification has + * been requested. + * + * @param aRequestId The ID of the new query or notification request. + */ + virtual void HandleNewRequestL( + /* IN */ TPosQNRequestId aRequestId + ) = 0; + + /** + * This method is called when a privacy query or notification request is + * cancelled. + * + * It is not necessary to call @ref CompleteRequest for a cancelled + * request. + * + * @param aRequestId The ID of the cancelled query or notification + * request. + */ + virtual void HandleRequestCancelled( + /* IN */ TPosQNRequestId aRequestId + ) = 0; + + /** + * This method is called to cancel all outstanding requests. + * + * It is not necessary to call @ref CompleteRequest for a cancelled + * request. + */ + virtual void HandleAllRequestCancelled() = 0; + + IMPORT_C MEikSrvNotifierBase2* NotifierBase() const; + IMPORT_C TPosVerifyCancelReason CancelReason() const; + IMPORT_C void GetRequestsL(RArray& aRequestArray) const; + IMPORT_C TRequestType RequestTypeL(TPosQNRequestId aRequestId) const; + IMPORT_C void SetCurrentRequestL(TPosQNRequestId aRequestId); + IMPORT_C TPosQNRequestId CurrentRequest() const; + IMPORT_C TPosRequestDecision QueryTimeoutStrategy() const; + IMPORT_C TPosRequestSource RequestSource() const; + IMPORT_C TPosRequestDecision LocationRequestDecision() const; + IMPORT_C TPosNotificationReason NotificationReason() const; + IMPORT_C TInt RequestorCountL() const; + IMPORT_C CPosRequestor* RequestorLC(TInt aRequestorIndex) const; + IMPORT_C void CompleteRequest(TPosQNRequestId aRequestId, TInt aCompletionCode); + IMPORT_C void CompleteAllRequests(TInt aCompletionCode); + IMPORT_C TBool CheckClientSecureId(TSecureId aSecureId); + + protected: + IMPORT_C CPosPrivacyNotifier(); + IMPORT_C void BaseConstructL(TUid aChannel,TInt aPriority); + + private: + // By default, prohibit copy constructor + CPosPrivacyNotifier( const CPosPrivacyNotifier& ); + // Prohibit assigment operator + CPosPrivacyNotifier& operator= ( const CPosPrivacyNotifier& ); + + private: + CPosPrivacyNotifierExtension* iExtension; + }; + +#endif // CPOSPRIVACYNOTIFIER_H diff -r 19bff11d6c18 -r 6fcbaa43369c locsrv_pub/blid_application_satellite_info_api/tsrc/UT_CSatelliteUITest/group/CSatelliteUITest_DoxyFile.txt --- a/locsrv_pub/blid_application_satellite_info_api/tsrc/UT_CSatelliteUITest/group/CSatelliteUITest_DoxyFile.txt Mon Mar 15 12:42:19 2010 +0200 +++ b/locsrv_pub/blid_application_satellite_info_api/tsrc/UT_CSatelliteUITest/group/CSatelliteUITest_DoxyFile.txt Wed Mar 31 22:18:21 2010 +0300 @@ -1,19 +1,20 @@ -# -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# -# +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: MMP file for STIF Test Framework's Hardcoded test +* module. +* +*/ # Doxyfile 1.4.1 diff -r 19bff11d6c18 -r 6fcbaa43369c package_definition.xml --- a/package_definition.xml Mon Mar 15 12:42:19 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 19bff11d6c18 -r 6fcbaa43369c supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -383,6 +383,11 @@ { iOMASuplProtocolHandler2->HandlePacket(aPacket,aPortNum); } + else + if (iOMASuplProtocolHandler1) + { + iOMASuplProtocolHandler1->HandlePacket(aPacket,aPortNum); + } } } @@ -515,6 +520,11 @@ { iOMASuplProtocolHandler2->HandleSuplMessageL(aSuplSession,aStatus,aMessage); } + else + if (iOMASuplProtocolHandler1) + { + iOMASuplProtocolHandler1->HandleSuplMessageL(aSuplSession,aStatus,aMessage); + } } } diff -r 19bff11d6c18 -r 6fcbaa43369c supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -83,6 +83,7 @@ #include "epos_omasuplconfigurationkeys.h" #include "epos_csuplsettingparams.h" #include "epos_comasuplasnbase.h" +#include "epos_csuplsettingsconstants.h" _LIT(KTraceFileName,"SUPL_OMA_SESSION::EPos_COMASuplSession.cpp"); @@ -1512,7 +1513,8 @@ TOMASuplUtcTime UtcTime; TOMASuplPositionEstimate PosEstimate; TDateTime TimeStamp; - TInt ZoneCode,Zone,altitude,AltitudeUncertainty, HorizontalAccuracy; + TInt ZoneCode,Zone,altitude, HorizontalAccuracy; + TInt AltitudeUncertainty = 0; TOMASuplAltitudeInfo AltitudeInfo; TInt latitude,longitude; TOMASuplPositionEstimate::TOMASuplLatitudeSign LatSign; @@ -1696,7 +1698,8 @@ TOMASuplUtcTime UtcTime; TOMASuplPositionEstimate PosEstimate; TDateTime TimeStamp; - TInt ZoneCode,Zone,altitude,AltitudeUncertainty, HorizontalAccuracy; + TInt ZoneCode,Zone,altitude, HorizontalAccuracy; + TInt AltitudeUncertainty = 0; TOMASuplAltitudeInfo AltitudeInfo; TInt latitude,longitude; TOMASuplPositionEstimate::TOMASuplLatitudeSign LatSign; @@ -1947,101 +1950,128 @@ // void COMASuplSession::HandleOMASuplMessageL(COMASuplAsnMessageBase* aDecodedAsnMessage,TRequestStatus& aStatus,TInt aSessionIdSeed,TInt aErrorCode) { - delete iSuplState; - iSuplState = NULL; + delete iSuplState; + iSuplState = NULL; - iSETSessionUniqueId = aSessionIdSeed; - iRunRequestStatus = & aStatus; - *iRunRequestStatus = KRequestPending; + iSETSessionUniqueId = aSessionIdSeed; + iRunRequestStatus = & aStatus; + *iRunRequestStatus = KRequestPending; - TInt networkMode = 1; - networkMode = GetNetworkModeL(); + TInt networkMode = 1; + networkMode = GetNetworkModeL(); - TBuf<64> msg; - if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed ) - { - msg.Copy(_L("The device is in OFFLINE mode.")); - iTrace->Trace(msg,KTraceFileName, __LINE__); - iSessionObserver.TerminateSession(this, KErrGeneral); - return; - } - else - { - msg.Copy(_L("The device is in ON LINE mode.")); - iTrace->Trace(msg,KTraceFileName, __LINE__); - } - - CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage(); - - if (usage == CSuplSettings::ESuplUsageDisabled) - { - msg.Copy(_L("SUPL Usage is disabled")); - iTrace->Trace(msg,KTraceFileName, __LINE__); - iSessionObserver.TerminateSession(this, KErrGeneral); - return; - } + TBuf<64> msg; + if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed ) + { + msg.Copy(_L("The device is in OFFLINE mode.")); + iTrace->Trace(msg,KTraceFileName, __LINE__); + iSessionObserver.TerminateSession(this, KErrGeneral); + return; + } + else + { + msg.Copy(_L("The device is in ON LINE mode.")); + iTrace->Trace(msg,KTraceFileName, __LINE__); + } + + CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage(); + + if (usage == CSuplSettings::ESuplUsageDisabled) + { + msg.Copy(_L("SUPL Usage is disabled")); + iTrace->Trace(msg,KTraceFileName, __LINE__); + iSessionObserver.TerminateSession(this, KErrGeneral); + return; + } - COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType(); + COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType(); - if(messageType == COMASuplAsnMessageBase::ESUPL_INIT && aErrorCode == KErrNone) + if(messageType == COMASuplAsnMessageBase::ESUPL_INIT && aErrorCode == KErrNone) + { + HandleOMASuplMessageL(aDecodedAsnMessage); + } + else //Other messages than SUPL_INIT.... Send End + { + CreateCloneMessageL(aDecodedAsnMessage); + UpdateSuplSessionIDL(); + + if (iRequestType == ESUPL_NETWORK && messageType == COMASuplAsnMessageBase::ESUPL_INIT) { - HandleOMASuplMessageL(aDecodedAsnMessage); + ServerAddressCheckForSuplInitL(); } - else //Other messages than SUPL_INIT.... Send End - { - CreateCloneMessageL(aDecodedAsnMessage); - UpdateSuplSessionIDL(); - iSuplSessionState = ESUPL_INITIALIZED; - iSuplMsgType = ESUPL_END; - - if((aErrorCode == KErrCompletion && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || - (aErrorCode == KErrOMASuplOutOfRangeParameter && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || - (aErrorCode == KErrOMASuplMessageLengthMismatch && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || - (aErrorCode == KErrOMASuplShortFrame && messageType == COMASuplAsnMessageBase::ESUPL_INIT)) - { - iErrorStatusCode = COMASuplEnd::EUnexpectedDataValue; - if(aErrorCode == KErrOMASuplMessageLengthMismatch) - { - iErrorStatusCode = COMASuplEnd::EProtocolError; - } - if(aErrorCode == KErrOMASuplShortFrame) - { - iErrorStatusCode = COMASuplEnd::EDataMissing; - } - TInt len = iHSLPAddress.Length(); - HBufC8 *hslpAdress = NULL; - if(len > 0) - { - hslpAdress = HBufC8::NewL(iHSLPAddress.Length()); - hslpAdress->Des().Copy(iHSLPAddress); - } + iSuplSessionState = ESUPL_INITIALIZED; + iSuplMsgType = ESUPL_END; + + if((aErrorCode == KErrCompletion && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || + (aErrorCode == KErrOMASuplOutOfRangeParameter && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || + (aErrorCode == KErrOMASuplMessageLengthMismatch && messageType == COMASuplAsnMessageBase::ESUPL_INIT) || + (aErrorCode == KErrOMASuplShortFrame && messageType == COMASuplAsnMessageBase::ESUPL_INIT)) + { + iErrorStatusCode = COMASuplEnd::EUnexpectedDataValue; + if(aErrorCode == KErrOMASuplMessageLengthMismatch) + { + iErrorStatusCode = COMASuplEnd::EProtocolError; + } + if(aErrorCode == KErrOMASuplShortFrame) + { + iErrorStatusCode = COMASuplEnd::EDataMissing; + } + TInt len = iHSLPAddress.Length(); + HBufC8 *hslpAdress = NULL; + if(len > 0) + { + hslpAdress = HBufC8::NewL(iHSLPAddress.Length()); + hslpAdress->Des().Copy(iHSLPAddress); + } + else if(len ==0) + { + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + } + else + { + iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); - else if(len ==0) - { - iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); - } - CleanupStack::PushL(hslpAdress); - iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); - CleanupStack::PopAndDestroy(hslpAdress); - } - else - { - iErrorStatusCode = COMASuplEnd::EUnexpectedMessage; - iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl); - } + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + + } + CleanupStack::PopAndDestroy(serverParams); + } + delete iSuplState; + iSuplState = NULL; + CleanupStack::PushL(hslpAdress); + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); + CleanupStack::PopAndDestroy(hslpAdress); + } + else + { + iErrorStatusCode = COMASuplEnd::EUnexpectedMessage; + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl); + } - SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); - iSuplState->SetMsgStateObserver(this); - //SMP Changes - iSuplSessionState = ESUPL_GENERATE; - iSuplState->GenerateMessageL(); - - } + SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); + iSuplState->SetMsgStateObserver(this); + //SMP Changes + iSuplState->GenerateMessageL(); //Has to be here because initialisation has to be done for NI case in decode failed scenario. + iSuplSessionState = ESUPL_GENERATE; + } } // ----------------------------------------------------------------------------- @@ -2052,10 +2082,11 @@ // void COMASuplSession::HandleOMASuplMessageL(COMASuplAsnMessageBase* aDecodedAsnMessage) { + CreateCloneMessageL(aDecodedAsnMessage); if(CheckProtocolVersionL(aDecodedAsnMessage)) //Checks version with supported version { COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType(); - CreateCloneMessageL(aDecodedAsnMessage); + if(messageType != COMASuplAsnMessageBase::ESUPL_POS) { iCompleteSelfRequestor->CompleteSelf(); //This will result in call of RequestCompleted() @@ -3255,26 +3286,48 @@ else if(len ==0) { - iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + CleanupStack::PushL(hslpAdress); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + CleanupStack::Pop(hslpAdress); + } + else + { + iTrace->Trace(_L("Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); + + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + + } + CleanupStack::PopAndDestroy(serverParams); } - CleanupStack::PushL(hslpAdress); - - delete iSuplState; - iSuplState = NULL; - - if(setStatusCode) - { - iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); - } - else - { - iSuplState = COMASuplEndState::NewL(iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress ); - } + delete iSuplState; + iSuplState = NULL; + CleanupStack::PushL(hslpAdress); + if(setStatusCode) + { + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); + } + else + { + iSuplState = COMASuplEndState::NewL(iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress ); + } CleanupStack::PopAndDestroy(hslpAdress); @@ -3728,81 +3781,114 @@ // ----------------------------------------------------------------------------- TBool COMASuplSession::CheckProtocolVersionL(COMASuplAsnMessageBase* aDecodedAsn) { - TOMASuplVersion version; - COMASuplSessionID* SessionID = NULL; - aDecodedAsn->MessageBase(version,SessionID); - - TInt recMajor,recMinor,recServInd; - version.SuplVersion(recMajor,recMinor,recServInd); - - if(recMajor == KSuplMajorVersion ) - { - return ETrue; - } - else - { - COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsn->MessageType(); - if(messageType == COMASuplAsnMessageBase::ESUPL_END) - { - iTrace->Trace(_L("Received message is SUPL_END...with wrong Version.Terminating session"), KTraceFileName, __LINE__); - iSessionObserver.TerminateSession(this, KErrCompletion); - } - else - { - iTrace->Trace(_L("Received message with wrong version."), KTraceFileName, __LINE__); - - delete iSuplState; - iSuplMsgType = ESUPL_END; - iErrorStatusCode = COMASuplEnd::EVersionNotSupported; - SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); - - if(iRequestType == ESUPL_NETWORK ) - { - - iSuplSessionState = ESUPL_INITIALIZED; - TInt len = iHSLPAddress.Length(); - HBufC8 *hslpAdress = NULL; - if(len > 0) - { - hslpAdress = HBufC8::NewL(iHSLPAddress.Length()); - hslpAdress->Des().Copy(iHSLPAddress); - } - else if(len ==0) - { - iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); - } - - CleanupStack::PushL(hslpAdress); - iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); - CleanupStack::PopAndDestroy(hslpAdress); - - // Set the SessionId. - iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SLP Session ID"), KTraceFileName, __LINE__); - UpdateSLPSessionIDL(SessionID); - - iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SET Session ID"), KTraceFileName, __LINE__); - UpdateSETSessionIDL(SessionID); - iSuplState->SetMsgStateObserver(this); - iSuplState->GenerateMessageL(); - iSuplSessionState = ESUPL_GENERATE; - - } - else - { - iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl); - iSuplSessionState = ESUPL_ENCODE; - iSuplState->SetMsgStateObserver(this); - iSuplState->GenerateMessageL(); - } - } - - return EFalse; - } - + TOMASuplVersion version; + COMASuplSessionID* SessionID = NULL; + aDecodedAsn->MessageBase(version,SessionID); + + TInt recMajor,recMinor,recServInd; + version.SuplVersion(recMajor,recMinor,recServInd); + + if(recMajor == KSuplMajorVersion ) + { + return ETrue; + } + else + { + COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsn->MessageType(); + if(messageType == COMASuplAsnMessageBase::ESUPL_END) + { + iTrace->Trace(_L("Received message is SUPL_END...with wrong Version.Terminating session"), KTraceFileName, __LINE__); + iSessionObserver.TerminateSession(this, KErrCompletion); + } + else + { + iTrace->Trace(_L("Received message with wrong version."), KTraceFileName, __LINE__); + + delete iSuplState; + iSuplMsgType = ESUPL_END; + iErrorStatusCode = COMASuplEnd::EVersionNotSupported; + SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); + + if(iRequestType == ESUPL_NETWORK ) + { + if (messageType == COMASuplAsnMessageBase::ESUPL_INIT) + { + iSuplSessionState = ESUPL_INITIALIZED; + TInt len = iHSLPAddress.Length(); + HBufC8 *hslpAdress = NULL; + if(len > 0) + { + hslpAdress = HBufC8::NewL(iHSLPAddress.Length()); + hslpAdress->Des().Copy(iHSLPAddress); + } + else if(len ==0) + { + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + } + else + { + iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); + + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + } + CleanupStack::PopAndDestroy(serverParams); + } + + delete iSuplState; + iSuplState = NULL; + CleanupStack::PushL(hslpAdress); + ServerAddressCheckForSuplInitL(); + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); + CleanupStack::PopAndDestroy(hslpAdress); + + // Set the SessionId. + iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SLP Session ID"), KTraceFileName, __LINE__); + UpdateSLPSessionIDL(SessionID); + + iTrace->Trace(_L("COMASuplSession::CheckProtocolVersionL Update SET Session ID"), KTraceFileName, __LINE__); + UpdateSETSessionIDL(SessionID); + iSuplState->SetMsgStateObserver(this); + iSuplState->GenerateMessageL(); + iSuplSessionState = ESUPL_GENERATE; + } + else + { + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl); + UpdateSLPSessionIDL(SessionID); + UpdateSETSessionIDL(SessionID); + iSuplState->SetMsgStateObserver(this); + iRequestType = ESUPL_INVALID_SESSION; + iSuplSessionState = ESUPL_GENERATE; + iSuplState->GenerateMessageL(); + } + } + else + { + iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl); + iSuplSessionState = ESUPL_ENCODE; + iSuplState->SetMsgStateObserver(this); + iSuplState->GenerateMessageL(); + } + } + return EFalse; + } } // ----------------------------------------------------------------------------- diff -r 19bff11d6c18 -r 6fcbaa43369c supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -90,6 +90,7 @@ #include "epos_omasuplconfigurationkeys.h" #include "epos_csuplsettingparams.h" #include "epos_comasuplasnbase.h" +#include "epos_csuplsettingsconstants.h" _LIT(KTraceFileName,"SUPL_OMA_SESSION::EPos_COMASuplSession2.cpp"); @@ -1718,7 +1719,8 @@ TOMASuplUtcTime UtcTime; TOMASuplPositionEstimate PosEstimate; TDateTime TimeStamp; - TInt ZoneCode,Zone,altitude,AltitudeUncertainty, HorizontalAccuracy; + TInt ZoneCode,Zone,altitude, HorizontalAccuracy; + TInt AltitudeUncertainty = 0; TOMASuplAltitudeInfo AltitudeInfo; TInt latitude,longitude; TOMASuplPositionEstimate::TOMASuplLatitudeSign LatSign; @@ -1902,7 +1904,8 @@ TOMASuplUtcTime UtcTime; TOMASuplPositionEstimate PosEstimate; TDateTime TimeStamp; - TInt ZoneCode,Zone,altitude,AltitudeUncertainty, HorizontalAccuracy; + TInt ZoneCode,Zone,altitude, HorizontalAccuracy; + TInt AltitudeUncertainty = 0; TOMASuplAltitudeInfo AltitudeInfo; TInt latitude,longitude; TOMASuplPositionEstimate::TOMASuplLatitudeSign LatSign; @@ -2222,12 +2225,35 @@ else if(len ==0) { - iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + } + else + { + iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); + + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + } + CleanupStack::PopAndDestroy(serverParams); } + delete iSuplState; + iSuplState=NULL; CleanupStack::PushL(hslpAdress); iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); CleanupStack::PopAndDestroy(hslpAdress); @@ -3857,11 +3883,34 @@ else if(len ==0) { - iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + CleanupStack::PushL(hslpAdress); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + CleanupStack::Pop(hslpAdress); + } + else + { + iTrace->Trace(_L("Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); + + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + } + CleanupStack::PopAndDestroy(serverParams); } CleanupStack::PushL(hslpAdress); @@ -4390,13 +4439,36 @@ } else if(len ==0) { - iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); - hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); - CleanupStack::PushL(hslpAdress); - hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); - CleanupStack::Pop(hslpAdress); + CServerParams* serverParams = CServerParams::NewL(); + CleanupStack::PushL(serverParams); + + if (iSuplStorageSettings->GetDefaultServer(serverParams) == KErrNotFound ) + { + iTrace->Trace(_L("Length of HSLP Address is = 0, passing the HSLP generated frm IMSI"), KTraceFileName, __LINE__); + hslpAdress = HBufC8::NewL(iSuplSettings->SLPAddressfromImsi().Length()); + hslpAdress->Des().Copy(iSuplSettings->SLPAddressfromImsi()); + } + else + { + iTrace->Trace(_L("Sending End with ver for Default HSLP"), KTraceFileName, __LINE__); + TInt64 slpId; + TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable; + HBufC* serverAddr = HBufC::NewL(KMaxHSLPAddrLen); + HBufC* iapName = HBufC::NewL(KMaxIAPLen); + CleanupStack::PushL(serverAddr); + CleanupStack::PushL(iapName); + serverParams->Get(slpId,serverAddr->Des(),iapName->Des(),aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable); + hslpAdress = HBufC8::NewL(serverAddr->Length()); + hslpAdress->Des().Copy(*serverAddr); + + CleanupStack::PopAndDestroy(iapName); + CleanupStack::PopAndDestroy(serverAddr); + } + CleanupStack::PopAndDestroy(serverParams); } + delete iSuplState; + iSuplState = NULL; CleanupStack::PushL(hslpAdress); ServerAddressCheckForSuplInitL(); iSuplState = COMASuplEndState::NewL(iErrorStatusCode,iOMASuplAsnHandlerBaseImpl,iEncodedSuplInit,hslpAdress); diff -r 19bff11d6c18 -r 6fcbaa43369c supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby --- a/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby Mon Mar 15 12:42:19 2010 +0200 +++ b/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby Wed Mar 31 22:18:21 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -45,9 +45,10 @@ //OMA Protocol Handler Plugin & resource file ECOM_PLUGIN(eposomasuplprotocolhandler1.dll,eposomasuplprotocolhandler1.rsc) +#ifndef FF_DISABLE_OMA_SUPL_V2 //OMA Protocol Handler Plugin & resource file ECOM_PLUGIN(eposomasuplprotocolhandler2.dll,eposomasuplprotocolhandler2.rsc) - +#endif // FF_DISABLE_OMA_SUPL_V2 //OMA Provisioning ECOM_PLUGIN(epos_omasuplprovhandler.dll,1027509B.rsc) diff -r 19bff11d6c18 -r 6fcbaa43369c supl/locationsuplfw/gateway/src/epos_csuplnetinitiatedsession.cpp --- a/supl/locationsuplfw/gateway/src/epos_csuplnetinitiatedsession.cpp Mon Mar 15 12:42:19 2010 +0200 +++ b/supl/locationsuplfw/gateway/src/epos_csuplnetinitiatedsession.cpp Wed Mar 31 22:18:21 2010 +0300 @@ -67,13 +67,22 @@ suplService = RSuplTerminalSubSession::ESUPL_1_0; iSuplSession = aSessnMgr.CreateNewSessionL(aReqType, 0, suplService ); - if (iSuplSession) - { + { iSuplSession->SetSUPLVersion(majorVersion); iSuplSessnReq = CSuplSessionRequest::NewL(aSessnMgr, iSuplSession, aServer); - } - + } + else + if (!iSuplSession && suplService == RSuplTerminalSubSession::ESUPL_2_0) + { + suplService = RSuplTerminalSubSession::ESUPL_1_0; + iSuplSession = aSessnMgr.CreateNewSessionL(aReqType, 0, suplService ); + if (iSuplSession) + { + iSuplSession->SetSUPLVersion(majorVersion); + iSuplSessnReq = CSuplSessionRequest::NewL(aSessnMgr, iSuplSession, aServer); + } + } }