systemswstubs/examplecommonisc/IscDriver/src/IscQueue.cpp
branchRCL_3
changeset 44 b5894bb67e73
parent 35 37b610eb7fe3
--- a/systemswstubs/examplecommonisc/IscDriver/src/IscQueue.cpp	Thu Aug 19 09:36:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,295 +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:  An example implementation for ISC Driver Reference
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include <kernel.h>
-#ifdef __WINS__
-#include <windows.h>
-#endif
-
-#include <IscDefinitions.h>
-#include "IscQueue.h"
-#include "IscTrace.h"
-
-
-// EXTERNAL DATA STRUCTURES
-#ifdef __WINS__
-extern CRITICAL_SECTION g_IscCriticalSection;
-#endif
-
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-const TInt KIscInterruptLevelTwo( 2 );
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// DIscQueue::DIscQueue
-// C++ default constructor 
-// -----------------------------------------------------------------------------
-//
-DIscQueue::DIscQueue()
-    :iHead( 0 ),iTail( 0 ),iCount( 0 ),iSize( 0 ),iQueue( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::DIscQueue
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C DIscQueue::DIscQueue( TUint32** aQueue, TUint16 Size )
-        :iHead( 0 ),iTail( 0 ),iCount( 0 ),iSize( Size ),iQueue( aQueue )
-    {
-    E_TRACE( ( _T( "IQ:IQ %d 0x%x" ), iSize, iQueue ) );
-    }
-    
-// Destructor
-EXPORT_C DIscQueue::~DIscQueue()
-    {
-    iHead   = 0;
-    iTail   = 0;
-    iCount  = 0;
-    iQueue  = NULL;
-    iSize   = 0;
-    }
-
-
-// -----------------------------------------------------------------------------
-// DIscQueue::Add
-// Function to add element to queue
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt DIscQueue::Add( TAny* anEntry )
-    {
-    E_TRACE( ( _T( "IQ:A %d 0x%x" ), iCount, iQueue ) );
-    
-    TInt irqLevel = DisableIrqs();
-
-    if ( iCount == iSize || iSize == 0 )
-        {
-        RestoreIrqs( irqLevel );
-        return KErrNoMemory;//EFalse;
-        }
-
-    /* place the buffer into the queue */
-    iQueue[ iTail ] = ( TUint32* )( anEntry );
-
-    if ( iSize > 0 )
-        {
-        /* adjust tail pointer */
-        iTail = ++iTail % iSize;
-
-        /* remember the amount of the requests in the queue */
-        iCount++;
-        }
-    else
-        {
-        ASSERT_RESET_ALWAYS( 0, "IscDriver", EIscBufferAllocationFailure )
-        }
-
-    RestoreIrqs( irqLevel );
-
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::Remove
-// Removes first element from the queue
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TAny* DIscQueue::RemoveFirst()
-    {
-    E_TRACE( ( _T( "IQ:R %d %d" ), iCount, iSize ) );
-    
-    TAny* result = NULL;
-    TInt irqLevel = DisableIrqs();
-
-    if ( iCount == 0 || iSize == 0 )
-        {
-        RestoreIrqs( irqLevel );
-        return NULL;
-        }
-    // Get an element from the queue.
-    result = ( TAny* )iQueue[ iHead ];
-
-    iQueue[ iHead ] = NULL;
-
-    // Adjust the head of the queue.
-    iHead = ++iHead % iSize;
-    // Decrease counter.
-    iCount--;
-
-    RestoreIrqs( irqLevel );
-
-    return result;
-
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::GetFirst
-// Fetches first element from the queue
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TAny* DIscQueue::GetFirst()
-    {
-    E_TRACE( ( _T( "IQ:G %d %d" ), iCount, iSize ) );
-    
-    TAny* result;
-    TInt irqLevel = DisableIrqs();
-
-    if ( iCount == 0 || iSize == 0 )
-        {
-        RestoreIrqs( irqLevel );
-        return NULL;
-        }
-    // Get an element from the queue.
-    result = ( TAny* )iQueue[ iHead ];
-    
-    RestoreIrqs( irqLevel );
-    
-    return result;
-
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::DeleteFirst
-// Deletes first element from the queue
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void DIscQueue::DeleteFirst()
-    {
-    E_TRACE( ( _T( "IQ:D %d %d" ), iCount, iSize ) );
-    
-    TInt irqLevel = DisableIrqs();
-
-    iQueue[ iHead ] = NULL;
-
-    if ( iSize > 0 )
-        {
-        // Adjust the head of the queue.
-        iHead = ++iHead % iSize;
-        // decrease counter.
-        iCount--;
-        }
-    else
-        {
-        ASSERT_RESET_ALWAYS( 0, "IscDriver", EIscBufferAllocationFailure )
-        }
-
-    RestoreIrqs( irqLevel );
-
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::Empty
-// Checks if queue is empty
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool DIscQueue::Empty()
-    {
-    TInt result;
-    TInt irqLevel = DisableIrqs();
-    result = iCount == 0 ? ETrue : EFalse;
-    RestoreIrqs( irqLevel );
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::NextBufferLenth
-// Gets length of next frame in queue
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint16 DIscQueue::NextBufferLength()
-    {
-    TUint16 length;
-
-    TInt irqLevel = DisableIrqs();
-
-    if ( iCount == 0 )
-        {
-        RestoreIrqs( irqLevel );
-        return 0;
-        }    
-
-    length = ( TUint16 )( ( ( TDes8* )iQueue[ iHead ] )->Length() );    
-
-
-    RestoreIrqs( irqLevel );
-
-    return length;
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::DisableIrqs
-// Function to disable interrupts
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-TInt DIscQueue::DisableIrqs()
-    {
-#ifndef __WINS__
-    return NKern::DisableInterrupts( KIscInterruptLevelTwo );
-#else //__WINS__
-    EnterCriticalSection( &g_IscCriticalSection );
-    return KErrNone;
-#endif//__WINS__
-    }
-
-// -----------------------------------------------------------------------------
-// DIscQueue::RestoreIrqs
-// Function to restore interrupts
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-#ifndef __WINS__
-void DIscQueue::RestoreIrqs( 
-    TInt aLevel )
-    {
-    NKern::RestoreInterrupts( aLevel );
-#else //__WINS__
-void DIscQueue::RestoreIrqs( 
-    TInt )
-{
-    LeaveCriticalSection( &g_IscCriticalSection );
-#endif//__WINS__
-    }
-
-//  End of File