/******************************************************************************
 *
 * Name:	sktimer.h
 * Project:	SysKonnect SK-9Dxx Gigabit Ethernet
 * Version:	$Revision: 1.1 $
 * Date:	$Date: 2001/06/05 08:28:25 $
 * Purpose:	Defines for the timer functions.
 *
 ******************************************************************************/

/******************************************************************************
 *
 *	(C)Copyright 2001 SysKonnect GmbH.
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	The information in this file is provided "AS IS" without warranty.
 *
 ******************************************************************************/

/******************************************************************************
 *
 * History:
 *
 *	$Log: sktimer.h,v $
 *	Revision 1.1  2001/06/05 08:28:25  rassmann
 *	First public version.
 *	
 *
 ******************************************************************************/

/******************************************************************************
 *
 * Description:
 *
 * This module contains all defines and types for the timer functions.
 *
 * Include File Hierarchy:
 *
 *	"skdrv1st.h"
 *	"skdrv2nd.h"
 *
 ******************************************************************************/

#ifndef	_SKTIMER_H_
#define _SKTIMER_H_

#include "h/skqueue.h"

/*
 * SK timer
 * - needed wherever a timer is used. Put this in your data structure
 *   wherever you want.
 */
typedef	struct s_Timer SK_TIMER;

struct s_Timer {
	SK_TIMER	*TmNext;	/* linked list */
	SK_U32		TmClass;	/* Timer Event class */
	SK_U32		TmEvent;	/* Timer Event value */
	SK_EVPARA	TmPara;		/* Timer Event parameter */
	SK_U32		TmDelta;	/* delta time */
	int			TmActive;	/* flag: active/inactive */
};

/*
 * Timer control struct.
 * - use in Adapters context name pAC->Tim
 */
typedef	struct s_TimCtrl {
	SK_TIMER	*StQueue;	/* Head of Timer queue */
} SK_TIMCTRL;


extern void SkTimerInit(
	SK_AC		*pAC,
	SK_IOC		IoC,
	int			Level);
extern void SkTimerStop(
	SK_AC		*pAC,
	SK_IOC		IoC,
	SK_TIMER	*pTimer);
extern void SkTimerStart(
	SK_AC		*pAC,
	SK_IOC		IoC,
	SK_TIMER	*pTimer,
	SK_U32		Time,
	SK_U32		Class,
	SK_U32		Event,
	SK_EVPARA	Para);
extern void SkTimerDone(
	SK_AC		*pAC,
	SK_IOC		IoC);
#endif	/* _SKTIMER_H_ */

