ASSP Variant/gptimer_chipset_api.h
author Arnaud Lenoir
Tue, 27 Jul 2010 18:19:12 +0100
changeset 18 dce42d4000ba
parent 0 bb4b476bbb96
permissions -rw-r--r--
FYI - READ ONLY - contact arnaudl@symbian.org for any changes you want. Updated the Audio HW Control document revision.

/*
  gptimer_chipset_api.h

  Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
  All rights reserved.

  This program and the accompanying materials are made available 
  under the terms of the Eclipse Public License v1.0 which accompanies 
  this distribution, and is available at 
  http://www.eclipse.org/legal/epl-v10.html

  Initial Contributors:
  Nokia Corporation - initial contribution.

  Contributors:
*/

/** @file
@brief General Purpose Timer Chipset API H

@publishedDeviceAbstraction
*/

#ifndef __GPTIMER_CHIPSET_API_H__
#define __GPTIMER_CHIPSET_API_H__


// Include files
#include <kern_priv.h>


/**
Pointer to a callback function for the GPT client to use

@note "Callback is executed in the DFC or ISR context"

@param TAny* pointer to a parameter the call back function may use
*/
typedef void (*GPTimerFn)(TAny*);



// Class declaration

/**
@brief GP timer class

 General Purpose Timer functionality for clients
*/
class GPTimer
    {
    public:
        /**
        constructor of a GPT object
        */
        IMPORT_C GPTimer();
          
          
        /**
        allocates a HW GPT

        @param aFunction A pointer to a callback function which is called 
               when the timer expires.
        @param aPtr A parameter of the callback function.

        @return returns KErrNone if there was no error or KErrInUse if no 
                HW GPT is available.

        @pre Pre-condition: HW GPT must be available
        */
        IMPORT_C TInt Open(GPTimerFn aFunction, TAny* aPtr);
          
          
        /**
        Releases a HW GPT

        @return Returns KErrNone if there was no error or KErrNotFound if 
                no HW GPT was allocated before.

        @pre Pre-condition: Open was called
        */
        IMPORT_C TInt Close();
          
          
        /**
        Starts a GPT in one-shot mode, the callback routine will be called in 
        interrupt context.

        @param aTime Timeout in microseconds.

        @return returns KErrNone if there was no error, KErrInUse if the timer is already active,
                        KErrNotFound if no HW GPT was allocated before.
        */
        IMPORT_C TInt OneShot(TUint aTime);



        /**
        Starts a GPT in one-shot mode, the callback routine will be called in client's DFC context.

        @param aTime Timeout in microseconds.
        @param aDfc client's DFC object.

        @return returns KErrNone if there was no error, KErrInUse if the timer is already active,
                        KErrArgument if aDfc is NULL, KErrNotFound if no HW GPT was allocated before.
        */
        IMPORT_C TInt OneShot(TUint aTime, TDfc& aDfc);



        /**
        Starts a GPT in periodic mode (the timer is restarted after it expired).
        The callback routine will be called in interrupt context.

        @param aTime Timeout in microseconds.

        @return returns KErrNone if there was no error, KErrInUse if the timer is already active,
                        KErrNotFound if no HW GPT was allocated before.
        */
        IMPORT_C TInt Periodic(TUint aTime);


        /**
        Starts a GPT in periodic mode (the timer is restarted after it expired).
        The callback routine will be called in client's DFC context.

        @param aTime Timeout in microseconds.
        @param aDfc client's DFC object.

        @return returns KErrNone if there was no error or KErrInUse if the timer is already active,
                        KErrArgument if aDfc is NULL, KErrNotFound if no HW GPT was allocated before.
        */
        IMPORT_C TInt Periodic(TUint aTime, TDfc& aDfc);


        /**
        Requests to cancel a GPT.

        @return Returns ETrue if the timer was actually cancelled or EFalse if the timer was not
                        cancelled because it was not running or the callback was already running.
        */
        IMPORT_C TBool Cancel();

        /**
        destructor of a GPT object
        */
        IMPORT_C ~GPTimer();
          
    private:
        /**
        stores aFunction parameter
        */
        GPTimerFn iFunction;


        /**
        stores aPtr parameter
        */
        TAny* iPtr;
        
        
        /**
        stores aTime parameter
        */
        TUint iTime;


        /**
        stores aDfc parameter
        */
        TDfc iDfc;
    };


#endif // __GPTIMER_CHIPSET_API_H__