--- a/fotaapplication/fotaserver/src/fotaSrvSession.cpp Tue Aug 31 16:04:06 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,396 +0,0 @@
-/*
- * Copyright (c) 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: fotaengines server side session
- *
- */
-
-// INCLUDE FILES
-#include "FotasrvSession.h"
-#include "FotaSrvDebug.h"
-#include <eikenv.h>
-#include <eikappui.h>
-#include <s32mem.h>
-#include <e32base.h>
-#include <centralrepository.h>
-#include "FotaServer.h"
-
-// ============================= MEMBER FUNCTIONS ============================
-
-class CFotaServer;
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::CheckClientSecureIdL
-// Returns True if caller is syncml framework. False for fotasrv.
-// Leaves if client is unknown
-// ---------------------------------------------------------------------------
-//
-TFotaClient CFotaSrvSession::CheckClientSecureIdL(const RMessage2& aMessage)
- {
- TFotaClient client(EUnknown);
- TUid dmhostserver1 = TUid::Uid(KDMHostServer1Uid);
- TUid fota = TUid::Uid(KFotaServerUid);
- TUid omadmappui = TUid::Uid(KOmaDMAppUid);
- TUid starter = TUid::Uid(KStarterUid);
- TUid fscheduler = TUid::Uid(KFotaScheduler);
- TUid fms = TUid::Uid(KFMSServerUid);
- TUid softwarechecker = TUid::Uid(0x2000BB96);
- TUid softwarecheckerbackground = TUid::Uid(0x2000BB97);
- TUid testapp = TUid::Uid(0x102073E4);
- TUid testapp2 = TUid::Uid(0x10009CF4);
-
- TUid iadclient = TUid::Uid(0x2000F85A);
-
- // Syncml
- if (aMessage.SecureId() == dmhostserver1.iUid)
- {
- FLOG(
- _L("[CFotaSrvSession] CheckClientSecureIdL client is DmHostserver!"));
- client = EDMHostServer;
- }
- else if (aMessage.SecureId() == omadmappui.iUid)
- {
- FLOG(
- _L("[CFotaSrvSession] CheckClientSecureIdL client is omadmappui!"));
- client = EOMADMAppUi;
- }
- else if (aMessage.SecureId() == starter.iUid)
- {
- FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is starter!"));
- client = EStarter;
- }
- else if (aMessage.SecureId() == softwarechecker.iUid
- || aMessage.SecureId() == iadclient.iUid)
- {
- FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is IAD!"));
- client = ESoftwareChecker;
- }
- else if (aMessage.SecureId() == softwarecheckerbackground.iUid)
- {
- FLOG(
- _L("[CFotaSrvSession] CheckClientSecureIdL client is IAD - background!"));
- client = ESoftwareCheckerBackground;
- }
- else if (aMessage.SecureId() == fms.iUid)
- {
- FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is FMS!"));
- client = EFMSServer;
- }
- else if (aMessage.SecureId() == fscheduler.iUid)
- {
- FLOG(
- _L("[CFotaSrvSession] CheckClientSecureIdL client is fota scheduler!"));
- client = EFotaScheduler;
- }
- else if (aMessage.SecureId() == 0x0323231 || aMessage.SecureId()
- == testapp.iUid || aMessage.SecureId() == testapp2.iUid)
- {
- client = EFotaTestApp;
- }
-
- return client;
- }
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::CFotaSrvSession
-// ---------------------------------------------------------------------------
-//
-CFotaSrvSession::CFotaSrvSession()
- {
- FLOG(_L( "CFotaSrvSession::CFotaSrvSession( )" ));
- iError = KErrNone;
- //iDoc = CEikonEnv::Static()->EikAppUi()->Document();
- }
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::~CFotaSrvSession
-// ---------------------------------------------------------------------------
-//
-CFotaSrvSession::~CFotaSrvSession()
- {
- FotaServer()->DropSession();
- }
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::ServiceL
-// Handle client request
-// ---------------------------------------------------------------------------
-//
-void CFotaSrvSession::ServiceL(const RMessage2& aMessage)
- {
- TInt err(KErrNone);
- TInt pkgid = 0;
- TPackageState state;
- RThread clt;
- aMessage.ClientL(clt);
- TFullName cltnm = clt.FullName();
- FLOG(_L( "CFotaSrvSession::ServiceL %d serving for %S?" ),
- aMessage.Function(), &cltnm);
-
- TFotaClient client = CheckClientSecureIdL(aMessage);
-
- if (client == EUnknown)
- {
- FLOG(_L("Permission denied to use fota services!"));
- User::Leave(KErrPermissionDenied);
- }
-
- TInt cmd = aMessage.Function();
- if ((cmd != EGetState) && (cmd != EGetResult) && (cmd != EGetCurrFwDetails) && (cmd != EGetUpdateTimestamp))
- {
-
- TInt fotaValue(1);
- CRepository* centrep(NULL);
- TUid uidValue =
- {
- 0x101F9A08
- }; // KCRFotaAdapterEnabled
-
- centrep = CRepository::NewL(uidValue);
- if (centrep)
- {
- FLOG(_L("centralrepository found "));
- centrep->Get(1, fotaValue); // KCRFotaAdapterEnabled
- delete centrep;
- }
-
- if (!fotaValue)
- {
- FLOG(_L("Fota is disabled or not supported!"));
- User::Leave(KErrNotSupported);
- }
-
- }
-
- switch (aMessage.Function())
- {
-
- case EFotaDownload:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL DOWNLOAD"));
- TDownloadIPCParams ipc;
- TPckg<TDownloadIPCParams> pkg(ipc);
- aMessage.Read(0, pkg);
- TInt deslen = aMessage.GetDesLengthL(1);
- HBufC8* urlbuf = HBufC8::NewLC(deslen);
- TPtr8 urlptr = urlbuf->Des();
- aMessage.Read(1, urlptr);
- TInt silent = aMessage.Int2();
- FotaServer()->DownloadL(ipc, urlptr, client, silent, EFalse);
- CleanupStack::PopAndDestroy(urlbuf); // urlbuf
- aMessage.Complete(KErrNone);
-
- break;
- }
- case EFotaUpdate:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL UPDATE" ));
- TDownloadIPCParams ipc;
- TPckg<TDownloadIPCParams> pkg(ipc);
- aMessage.Read(0, pkg);
-
- // If update started from omadmappui, no alert should be sent if
- // update is cancelled
- if (client == EOMADMAppUi)
- {
- ipc.iSendAlert = EFalse;
- }
- FotaServer()->TryUpdateL(client);
- aMessage.Complete(KErrNone);
- break;
- }
- case EFotaDownloadAndUpdate:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL DOWNLOADANDUPDATE" ));
- TDownloadIPCParams ipc;
- TPckg<TDownloadIPCParams> pkg(ipc);
- aMessage.Read(0, pkg);
- TInt deslen = aMessage.GetDesLengthL(1);
- HBufC8* urlbuf = HBufC8::NewLC(deslen);
- TPtr8 urlptr = urlbuf->Des();
- aMessage.Read(1, urlptr);
- TFotaClient requester = CheckClientSecureIdL(aMessage);
-
- TInt silent = aMessage.Int2();
- FotaServer()->DownloadL(ipc, urlptr, requester, silent, ETrue);
- CleanupStack::PopAndDestroy(urlbuf);
- aMessage.Complete(KErrNone);
- }
- break;
-
- case EFotaTryResumeDownload:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL TRYRESUMEDOWNLOAD" ));
- if (client == EOMADMAppUi || client == EFMSServer || client
- == EFotaTestApp)
- {
- TInt silent = aMessage.Int0();
-
- FotaServer()->TryResumeDownloadL(client, silent); // silent
- aMessage.Complete(KErrNone);
- }
- else
- {
- aMessage.Complete(KErrAccessDenied);
- }
-
- }
- break;
-
- case EDeletePackage:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL DELETEPACKAGE"));
- pkgid = aMessage.Int0();
- FotaServer()->DeletePackageL(pkgid);
- aMessage.Complete(KErrNone);
- }
- break;
- case EGetState:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL GETSTATE" ));
- pkgid = aMessage.Int0();
-
- state = FotaServer()->GetStateL(pkgid);
-
- FLOG(_L( "CFotaSrvSession::ServiceL GETSTATE << %d" ), state.iState);
- TPckg<RFotaEngineSession::TState> pkg2(state.iState);
- aMessage.Write(1, pkg2);
- aMessage.Complete(KErrNone);
- }
- break;
- case EGetResult:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL GETRESULT >>" ));
- pkgid = aMessage.Int0();
- state = FotaServer()->GetStateL(pkgid);
- TPckg<TInt> pkg2(state.iResult);
- FLOG(_L( "CFotaSrvSession::ServiceL GETRESULT << %d" ),
- state.iResult);
- aMessage.Write(1, pkg2);
- aMessage.Complete(err);
- break;
- }
- case EGetUpdatePackageIds:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL EGETUPDATEPACKAGEIDS" ));
- TPkgIdList pkgids;
- FotaServer()->GetUpdatePackageIdsL(pkgids);
- TPckg<TPkgIdList> pkgids_pkg(pkgids);
- aMessage.Write(0, pkgids_pkg);
- aMessage.Complete(KErrNone);
- }
- break;
-
- case EGetUpdateTimestamp:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL EGETUPDATETIMESTAMP" ));
- TBuf16<15> timestamp;
- FotaServer()->GetUpdateTimeStampL(timestamp);
- aMessage.Write(0, timestamp);
- aMessage.Complete(KErrNone);
- }
- break;
-
- case EGenericAlertSentForPackage:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL EGENERICALERTSENT FOR PKGID" ));
- TInt pkgid = aMessage.Int0();
- FotaServer()->ResetFotaStateL(pkgid);
- aMessage.Complete(err);
- }
- break;
-
- case EScheduledUpdate:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL ESCHEDULEDUPDATE" ));
- TFotaScheduledUpdate sched(-1, -1);
- TPckg<TFotaScheduledUpdate> p(sched);
- aMessage.Read(0, p);
-
- FLOG(_L(" pkgid: %d scheduleid:%d"), sched.iPkgId,
- sched.iScheduleId);
- FotaServer()->ScheduledUpdateL(sched, client);
- aMessage.Complete(KErrNone);
-
- }
- break;
-
- case EPauseDownload:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL EPAUSEDOWNLOAD" ));
- FotaServer()->PauseDownloadL();
- aMessage.Complete(KErrNone);
- }
- break;
- case EGetCurrFwDetails:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL EGETCURRFWDETAILS" ));
-
- TBuf8<KFotaMaxPkgNameLength> name;
- TBuf8<KFotaMaxPkgVersionLength> version;
- TInt size(0);
-
- FotaServer()->GetCurrentFwDetailsL(name, version, size);
-
- /*
- aMessage.Write(1, name);
- aMessage.Write(2, version);
- TPckg<TInt> psize(size);
- aMessage.Write(3, psize);
-
- aMessage.Complete(KErrNone);*/
-
- aMessage.Write(0, name);
- aMessage.Write(1, version);
- TPckg<TInt> psize(size);
- aMessage.Write(2, psize);
-
- aMessage.Complete(KErrNone);
-
-
- }
- break;
- default:
- {
- FLOG(_L( "CFotaSrvSession::ServiceL In default case" ));
- }
- break;
- }
- }
-
-// ----------------------------------------------------------------------------------------
-// CFotaSrvSession::ServiceError
-// ----------------------------------------------------------------------------------------
-void CFotaSrvSession::ServiceError(const RMessage2& aMessage, TInt aError)
- {
- FLOG(_L("CFotaSrvSession::ServiceError, err = %d >>"), aError);
- CSession2::ServiceError(aMessage, aError);
- FLOG(_L("CFotaSrvSession::ServiceError <<"));
- }
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::FotaServer
-// Helper function
-// ---------------------------------------------------------------------------
-//
-
-CFotaServer* CFotaSrvSession::FotaServer() const
- {
- return (CFotaServer*) Server();
- }
-
-void DispatchMessageL(const RMessage2& aMessage)
- {
- return;
- }
-