systemswstubs/examplecommonisc/IscDriver/src/IscDriverExtensionDevice.cpp
changeset 0 0ce1b5ce9557
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/systemswstubs/examplecommonisc/IscDriver/src/IscDriverExtensionDevice.cpp	Thu Jan 14 07:14:53 2010 +0200
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2007 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:  Reference implementation for ISC Driver extension
+*
+*/
+
+
+
+// INCLUDE FILES
+
+#include "IscDriverExtensionDevice.h"
+#include "IscChannel.h"
+#include "IscTrace.h"
+#include "kern_priv.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES  
+
+// CONSTANTS
+_LIT( KIscDriverExtensionName,"IscDriverExtension" );
+_LIT( KIscDriverName,"IscDriver" );
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// DIscDriverExtensionDevice::DIscDriverExtensionDevice
+// C++ default constructor
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+DIscDriverExtensionDevice::DIscDriverExtensionDevice()
+    : iIscDriverDevice( NULL )
+    {
+    C_TRACE( ( _T( "DIscDriverExtensionDevice::DIscDriverExtensionDevice()" ) ) );
+    iParseMask |= KDeviceAllowUnit;
+    iParseMask |= KDeviceAllowInfo;
+    }
+
+// Destructor
+DIscDriverExtensionDevice::~DIscDriverExtensionDevice()
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// DIscDriverExtensionDevice::Install
+// Complete the installation of driver
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+TInt DIscDriverExtensionDevice::Install()
+    {
+    C_TRACE( ( _T( "DIscDriverExtensionDevice::Install()" ) ) );
+  
+    // Find pointer to ISC Driver.
+    TInt err( KErrNone );
+    DObjectCon* lDevices = Kern::Containers()[ELogicalDevice];
+    TKName driverName;
+
+    ASSERT_RESET_ALWAYS( lDevices, "IscDriverExtension", EIscLogicalDevicesNotFound );
+
+    //TInt driverHandle( KErrNone );  // API change in SOS9.2 WK08
+	TFindHandle driverHandle;
+    err = lDevices->FindByName( driverHandle, KIscDriverName, driverName );
+    if( KErrNone != err )
+        {
+        C_TRACE( ( _T( "DIscDriverExtensionDevice::Install() Pointer to IscDriver not found!" ) ) );
+        ASSERT_RESET_ALWAYS( 0, "IscDriverExtension", EIscDriverNotFound );
+        }
+    iIscDriverDevice = static_cast<DIscDevice*>( lDevices->At( driverHandle ) );
+    ASSERT_RESET_ALWAYS( iIscDriverDevice, "IscDriverExtension", EIscDriverNotFound )
+    return ( SetName( &KIscDriverExtensionName ) );
+    
+    }
+
+// -----------------------------------------------------------------------------
+// DIscDevice::Create
+// Create a logical channel
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+TInt DIscDriverExtensionDevice::Create( 
+    DLogicalChannelBase*& aChannel )
+    {
+    aChannel=new DIscChannel( iIscDriverDevice );
+    return aChannel?KErrNone:KErrNoMemory;
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// -----------------------------------------------------------------------------
+// E32Dll
+// Epoc Kernel Architecture 2 style entry point
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+DECLARE_STANDARD_LDD()
+    {
+    DLogicalDevice* device = new DIscDriverExtensionDevice;
+    ASSERT_RESET_ALWAYS( device,"IscDriverExtension",EIscPanicCreateLogicalDevice );
+    return device;
+    
+    }
+
+//  End of File