os/mm/mmapitest/devvideohaitest/src/T_DevvideoServer.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description: 
    15 *
    16 */
    17 
    18 
    19 #include "t_devvideoserver.h"
    20 #include "t_cmmfdevvideoplaydata.h"
    21 #include "t_cmmfdevvideorecorddata.h"
    22 
    23 /*@{*/
    24 _LIT(KT_VideoDriver,	"CMMFDevVideoPlay");
    25 _LIT(KT_VideoRecording,	"CMMFDevVideoRecord");
    26 /*@}*/
    27 
    28 
    29 /**
    30  * Same code for Secure and non-secure variants
    31  * Called inside the MainL() function to create and start the
    32  * CTestServer derived server.
    33  * @return - Instance of the test server
    34  */
    35 CT_DevVideoServer* CT_DevVideoServer::NewL()
    36 	{
    37     CT_DevVideoServer* server = new (ELeave) CT_DevVideoServer();
    38     CleanupStack::PushL(server);
    39     server->ConstructL();
    40     CleanupStack::Pop(server);
    41     return server;
    42     }
    43 
    44 /**
    45  * Secure variant
    46  * Much simpler, uses the new Rendezvous() call to sync with the client
    47  */
    48 LOCAL_C void MainL()
    49 	{
    50 #if (defined __DATA_CAGING__)
    51     RProcess().DataCaging(RProcess::EDataCagingOn);
    52     RProcess().SecureApi(RProcess::ESecureApiOn);
    53 #endif
    54     CActiveScheduler*	sched=NULL;
    55     sched=new(ELeave) CActiveScheduler;
    56     CActiveScheduler::Install(sched);
    57     CT_DevVideoServer* server = NULL;
    58     // Create the CTestServer derived server
    59     TRAPD(err,server = CT_DevVideoServer::NewL());
    60     if(!err)
    61 	    {
    62         // Sync with the client and enter the active scheduler
    63         RProcess::Rendezvous(KErrNone);
    64         sched->Start();
    65         }
    66     delete server;
    67     delete sched;
    68     }
    69 
    70 /**
    71  * @return - Standard Epoc error code on process exit
    72  * Secure variant only
    73  * Process entry point. Called by client using RProcess API
    74  */
    75 GLDEF_C TInt E32Main()
    76 	{
    77     __UHEAP_MARK;
    78     CTrapCleanup* cleanup = CTrapCleanup::New();
    79     if(cleanup == NULL)
    80 	    {
    81         return KErrNoMemory;
    82         }
    83 
    84 #if (defined TRAP_IGNORE)
    85 	TRAP_IGNORE(MainL());
    86 #else
    87     TRAPD(err,MainL());
    88 #endif
    89 
    90     delete cleanup;
    91     __UHEAP_MARKEND;
    92     return KErrNone;
    93     }
    94 
    95 CDataWrapper* CT_DevVideoServer::CT_DevVideoBlock::CreateDataL(const TDesC& aData)
    96 	{
    97 	CDataWrapper*	wrapper=NULL;
    98 
    99 	if( KT_VideoDriver() == aData )
   100 		{
   101 		wrapper=CT_CMMFDevVideoPlay::NewL();
   102 		}
   103 	else if( KT_VideoRecording() == aData )
   104 		{
   105 		wrapper=CT_MMFDevVideoRecordData::NewL();
   106 		}
   107 
   108 	return wrapper;
   109 	}