#ifndef HIDD_TIMER_H #define HIDD_TIMER_H /* Copyright © 1995-2001, The AROS Development Team. All rights reserved. $Id: timer.h 22961 2005-02-23 15:16:23Z jmj $ Desc: Definitions for the Timer HIDD system. Lang: english */ #ifndef EXEC_TYPES_H # include #endif #ifndef DEVICES_TIMER_H # include #endif #ifndef HIDD_HIDD_H # include #endif #define TIMERHIDD "timer.hidd" /* This union describes a certain time, either in seconds or nanoseconds (cv_Normalised), or as an absolute value (cv_Absolute). */ typedef struct HIDDT_ClockVal { ULONG cv_Format; /* HIDDT_TimeFormat enum */ union { struct EClockVal eclock; /* 64 bits, hi and low */ struct timeval tval; /* 32b seconds, nanosecs */ UQUAD abs; /* 64 bit, absolute */ } cv_Value; } HIDDT_ClockVal; #define cv_Secs cv_Value.tval.tv_secs #define cv_Nanos cv_Value.tval.tv_micro #define cv_EClock cv_Value.eclock #define cv_Absolute cv_Value.abs /* Attributes for the Timer HIDD */ enum { HIDDAIDX_Timer_MinPeriod, /* [..G] (HIDDT_ClockVal *) Min period */ HIDDAIDX_Timer_MaxPeriod, /* [..G] (HIDDT_ClockVal *) Max period */ HIDDAIDX_Timer_IsFixed, /* [..G] (BOOL) Is this clock fixed */ HIDDAIDX_Timer_IsClock, /* [..G] (BOOL) Is this a clock-like timer */ HIDDAIDX_Timer_IsAlarm, /* [..G] (BOOL) Is this an alarm-like timer */ HIDDAIDX_Timer_IsExternal, /* [..G] (BOOL) This timer is external */ HIDDAIDX_Timer_Mode, /* [ISG] (ULONG) Current timer mode */ /* Attributes for Clock like devices */ HIDDAIDX_Timer_IsNonVolatile, /* [..G] (BOOL) This clock is non-volatile */ /* Attributes for Alarm like devices */ HIDDAIDX_Timer_CountMode, /* [.SG] (ULONG) Current counting mode */ HIDDAIDX_Timer_Hook, /* [ISG] (struct Hook *) Callback hook */ HIDDAIDX_Timer_SigTask, /* [ISG] (struct Task *) Task to signal */ HIDDAIDX_Timer_SigBit, /* [ISG] (UBYTE) Signal bit to use */ HIDDAIDX_Timer_SoftInt, /* [ISG] (struct Interrupt *) Software Int */ }; /* Values for HIDDA_Timer_Mode */ enum HIDDV_Timer_Mode { HIDDV_Timer_ClockMode, /* Timer in clock mode */ HIDDV_Timer_AlarmMode /* Timer in alarm mode */ }; /* Values for HIDDA_Timer_CountMode */ enum { HIDDV_Timer_OneShot, /* Timer in one-shot mode */ HIDDV_Timer_Continuous /* Timer in continuous mode */ }; /* Values describing a HIDDT_ClockVal structure */ enum HIDDT_TimeFormat { HIDDV_Timer_Normalised, /* Value is normalised (cv_Secs/cv_Nano) */ HIDDV_Timer_Absolute, /* Value is absolute format (cv_Absolute) */ HIDDV_Timer_EClock, /* Value is like EClock (cv_EClock) */ HIDDV_Timer_Internal, /* Value is timer specific format (cv_Abs) */ }; /* Methods implemented by timers */ enum { HIDDMIDX_Timer_Reset, /* Reset a timer */ HIDDMIDX_Timer_Freeze, /* Freeze a timer */ HIDDMIDX_Timer_UnFreeze, /* Unfreeze a timer */ HIDDMIDX_Timer_ConvertTime, /* Convert between time formats */ /* Clock related methods */ HIDDMIDX_Timer_SetPeriod, /* Set the period of a clock */ HIDDMIDX_Timer_GetPeriod, /* Get the period of a clock */ HIDDMIDX_Timer_Set, /* Set the value of a clock */ HIDDMIDX_Timer_Get, /* Get the value of a clock */ /* Alarm related methods */ HIDDMIDX_Timer_Start, /* Start a timer running */ HIDDMIDX_Timer_Stop, /* Stop a timer running */ HIDDMIDX_Timer_SetInterval, /* Set the interval of the alarm */ HIDDMIDX_Timer_GetInterval /* Get the interval of the timer */ }; /* Message for HIDDM_Timer_Convert */ struct hTm_Convert { STACKULONG MethodID; HIDDT_ClockVal *htm_From; HIDDT_ClockVal *htm_To; }; #endif /* HIDD_TIMER_H */