src/timer.c
author etisserant
Tue, 24 Apr 2007 16:49:40 +0200
changeset 175 e255529b6f7d
parent 167 b2f8b91d89b5
child 208 05d95c45b388
permissions -rwxr-xr-x
Added writeLocalDict and readLocalDict, that have to be called from application instead of getODEntry and setODEntry. Fix potential endianization problem.
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     1
/*
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     3
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     5
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     6
See COPYING file for copyrights details.
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     7
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     8
This library is free software; you can redistribute it and/or
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    10
License as published by the Free Software Foundation; either
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    12
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    13
This library is distributed in the hope that it will be useful,
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    16
Lesser General Public License for more details.
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    17
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    19
License along with this library; if not, write to the Free Software
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    21
*/
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    22
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    23
/* #define DEBUG_WAR_CONSOLE_ON */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    24
/* #define DEBUG_ERR_CONSOLE_ON */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    25
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    26
#include <applicfg.h>
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    27
#include "timer.h"
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    28
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    29
/*  ---------  The timer table --------- */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    30
s_timer_entry timers[MAX_NB_TIMER] = {{TIMER_FREE, NULL, NULL, 0, 0, 0},};
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    31
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    32
TIMEVAL total_sleep_time = TIMEVAL_MAX;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    33
TIMER_HANDLE last_timer_raw = -1;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    34
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 149
diff changeset
    35
#define min_val(a,b) ((a<b)?a:b)
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    36
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    37
/* ---------  Use this to declare a new alarm --------- */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    38
TIMER_HANDLE SetAlarm(CO_Data* d, UNS32 id, TimerCallback_t callback, TIMEVAL value, TIMEVAL period)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    39
{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    40
	/*printf("SetAlarm(UNS32 id=%d, TimerCallback_t callback=%x, TIMEVAL value=%d, TIMEVAL period=%d)\n", id, callback, value, period); */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    41
	TIMER_HANDLE i;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    42
	TIMER_HANDLE row_number = TIMER_NONE;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    43
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    44
	/* in order to decide new timer setting we have to run over all timer rows */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    45
	for(i=0; i <= last_timer_raw + 1 && i < MAX_NB_TIMER; i++)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    46
	{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    47
		s_timer_entry *row = (timers+i);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    48
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    49
		if (callback && 	/* if something to store */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    50
		   row->state == TIMER_FREE) /* and empty row */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    51
		{	/* just store */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    52
			row->callback = callback;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    53
			row->d = d;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    54
			row->id = id;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    55
			row->val = value;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    56
			row->interval = period;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    57
			row->state = TIMER_ARMED;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    58
			row_number = i;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    59
			break;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    60
		}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    61
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    62
	
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    63
	if (row_number != TIMER_NONE) /* if successfull **/
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    64
	{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    65
		TIMEVAL real_timer_value;
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    66
		TIMEVAL elapsed_time;
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    67
		
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    68
		if (row_number == last_timer_raw + 1) last_timer_raw++;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    69
		
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    70
		/* set next wakeup alarm if new entry is sooner than others, or if it is alone */
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 149
diff changeset
    71
		real_timer_value = min_val(value, TIMEVAL_MAX);
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    72
		elapsed_time = getElapsedTime();
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    73
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    74
		/*printf("elapsed_time=%d real_timer_value=%d total_sleep_time=%d\n", elapsed_time, real_timer_value, total_sleep_time); */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    75
		if (total_sleep_time > elapsed_time && total_sleep_time - elapsed_time > real_timer_value)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    76
		{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    77
			total_sleep_time = elapsed_time + real_timer_value;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    78
			setTimer(real_timer_value);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    79
		}
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    80
		/*printf("SetAlarm() return %d\n", row_number); */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    81
		return row_number;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    82
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    83
	return TIMER_NONE;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    84
}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    85
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    86
/* ---------  Use this to remove an alarm --------- */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    87
TIMER_HANDLE DelAlarm(TIMER_HANDLE handle)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    88
{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
    89
	/* Quick and dirty. system timer will continue to be trigged, but no action will be preformed. */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    90
	MSG_WAR(0x3320, "DelAlarm. handle = ", handle);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    91
	if(handle != TIMER_NONE)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    92
	{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    93
		if(handle == last_timer_raw) 
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    94
			last_timer_raw--;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    95
		timers[handle].state = TIMER_FREE; 		
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    96
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    97
	else {
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    98
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
    99
	return TIMER_NONE;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   100
}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   101
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   102
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   103
/* ---------  TimeDispatch is called on each timer expiration --------- */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   104
void TimeDispatch()
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   105
{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   106
	TIMER_HANDLE i;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   107
	TIMEVAL next_wakeup = TIMEVAL_MAX; /* used to compute when should normaly occur next wakeup */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   108
	/* First run : change timer state depending on time */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   109
	/* Get time since timer signal */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   110
	TIMEVAL overrun = getElapsedTime();
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   111
	
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   112
	TIMEVAL real_total_sleep_time = total_sleep_time + overrun;
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   113
	/*printf("total_sleep_time %d + overrun %d\n", total_sleep_time , overrun); */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   114
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   115
	for(i=0; i <= last_timer_raw; i++)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   116
	{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   117
		s_timer_entry *row = (timers+i);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   118
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   119
		if (row->state & TIMER_ARMED) /* if row is active */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   120
		{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   121
			if (row->val <= real_total_sleep_time) /* to be trigged */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   122
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   123
				/*printf("row->val(%d) <= (%d)real_total_sleep_time\n", row->val, real_total_sleep_time); */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   124
				if (!row->interval) /* if simply outdated */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   125
				{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   126
					row->state = TIMER_TRIG; /* ask for trig */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   127
				}
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   128
				else /* or period have expired */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   129
				{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   130
					/* set val as interval, with overrun correction */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   131
					row->val = row->interval - (overrun % row->interval);
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   132
					row->state = TIMER_TRIG_PERIOD; /* ask for trig, periodic */
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   133
					/* Check if this new timer value is the soonest */
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 149
diff changeset
   134
					next_wakeup = min_val(row->val,next_wakeup);
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   135
				}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   136
			}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   137
			else
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   138
			{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   139
				/* Each armed timer value in decremented. */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   140
				row->val -= real_total_sleep_time;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   141
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   142
				/* Check if this new timer value is the soonest */
167
b2f8b91d89b5 Removed compilation warnings with some GCC.
etisserant
parents: 149
diff changeset
   143
				next_wakeup = min_val(row->val,next_wakeup);
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   144
			}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   145
		}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   146
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   147
	
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   148
	/* Remember how much time we should sleep. */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   149
	total_sleep_time = next_wakeup;
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   150
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   151
	/* Set timer to soonest occurence */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   152
	setTimer(next_wakeup);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   153
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   154
	/* Then trig them or not. */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   155
	for(i=0; i<=last_timer_raw; i++)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   156
	{
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   157
		s_timer_entry *row = (timers+i);
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   158
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   159
		if (row->state & TIMER_TRIG)
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   160
		{
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 48
diff changeset
   161
			row->state &= ~TIMER_TRIG; /* reset trig state (will be free if not periodic) */
149
fe50ada8020b Changes in the API:
etisserant
parents: 71
diff changeset
   162
			if(row->callback)
fe50ada8020b Changes in the API:
etisserant
parents: 71
diff changeset
   163
				(*row->callback)(row->d, row->id); /* trig ! */
38
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   164
		}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   165
	}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   166
}
9b5bb1dcb4f5 Cygwin port. Still untested. Compiles and link.
etisserant
parents: 0
diff changeset
   167