ASTERISK option added
[opentx.git] / radio / src / timers.h
blobfb5f7a4bebb3d67977d1a8b1b3ce728bcc9380a2
1 /*
2 * Copyright (C) OpenTX
4 * Based on code named
5 * th9x - http://code.google.com/p/th9x
6 * er9x - http://code.google.com/p/er9x
7 * gruvin9x - http://code.google.com/p/gruvin9x
9 * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
21 #ifndef _TIMERS_H_
22 #define _TIMERS_H_
24 #include "opentx_types.h"
26 #define TMR_OFF 0
27 #define TMR_RUNNING 1
28 #define TMR_NEGATIVE 2
29 #define TMR_STOPPED 3
31 typedef int32_t tmrval_t;
32 typedef uint32_t tmrstart_t;
33 typedef int16_t tmrmode_t;
34 #define TIMER_MAX (0xffffff/2)
36 #define TIMER_MIN (tmrval_t(-TIMER_MAX-1))
38 struct TimerState {
39 uint16_t cnt;
40 uint16_t sum;
41 uint8_t state;
42 tmrval_t val;
43 uint8_t val_10ms;
46 #if defined(TIMERS)
47 extern TimerState timersStates[TIMERS];
48 #endif
50 void timerReset(uint8_t idx);
52 void timerSet(int idx, int val);
54 void saveTimers();
55 void restoreTimers();
57 void evalTimers(int16_t throttle, uint8_t tick10ms);
59 extern volatile tmr10ms_t g_tmr10ms;
60 static inline tmr10ms_t get_tmr10ms()
62 return g_tmr10ms;
65 #endif // _TIMERS_H_