graphics_plat/guestvideodriver_api/inc/guestvideodriver.h
branchbug235_bringup_0
changeset 146 4d1fe4a7ce83
child 153 d8f29c307082
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics_plat/guestvideodriver_api/inc/guestvideodriver.h	Fri Aug 13 15:11:40 2010 +0100
@@ -0,0 +1,96 @@
+// Copyright (c) 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"
+// 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:
+// Header file for guest video driver
+
+#ifndef __GUESTVIDEODRIVER_H__
+#define __GUESTVIDEODRIVER_H__
+
+#include <e32cmn.h>
+#include <e32std.h>
+#include <babitflags.h>
+
+#include "guestvideodrivercommon.h"
+
+class RemoteFunctionCallData;
+
+//Local request buffering size
+const TInt KRequestBufferSize = 20000;
+
+/**
+ * Guest video driver user API. One instance exists per process.
+ */
+NONSHARABLE_CLASS(RGuestVideoDriver) : public RBusLogicalChannel
+    {
+public:
+	// Default constructor
+	IMPORT_C RGuestVideoDriver();
+
+	// Destructor
+	IMPORT_C ~RGuestVideoDriver();
+
+	/**
+	 * Opens this driver handle. Calls RBusLogicalChannel::DoCreate.
+	 * 
+	 * @return System wide error code
+	 */
+	IMPORT_C TInt Open();
+
+	/**
+	 * Executes a command 
+	 * @param aRequestData Remote function call
+	 */
+	IMPORT_C void ExecuteCommand(RemoteFunctionCallData& aRequestData);
+
+	/**
+	 * Flushes any buffered commands.
+	 */
+	IMPORT_C void Flush();
+
+	IMPORT_C TInt MapToHWAddress( const TInt aChunkHandle, TUint32& aHWAddress );
+
+	IMPORT_C TInt EglGetSgHandles( const TUint64 aId, TUint64 *aSgHandles );
+
+	/**
+     * Gets Base Address of Frame Buffer
+     * @param aHWAddress	returned Base Address
+     *
+	 * @note	A base address of 0 is invalid, and indicates a failure to
+     *          obtain the base address.
+	 */
+	IMPORT_C TInt GetFrameBufferBaseAddress( TUint32& aHWAddress );
+
+
+private:
+	/*
+	 Buffer, or send if it needs a reply, a command to the virtual video hardware
+	 @param aRFC Remote function call to buffer
+	 @return ETrue if buffering succeeds, otherwise the aRFC needs to be executed directly
+	 */
+	TBool BufferCommand( RemoteFunctionCallData& aRFC );
+
+	// Sends buffered commands 
+	void SendBuffer();
+
+private:
+	TBool     iIsOpen;
+	RMutex    iThreadLock;
+	/**
+	 * Request buffer
+	 */
+	TUint32                   iProcessId;
+	TBuf8<KRequestBufferSize> iBuffer;
+    };
+
+
+#endif // __GUESTVIDEODRIVER_H__