External module on X10 now tested OK
[opentx.git] / radio / src / timers.h
blob1090b0623b8a90cc16f2f36e232108fac98ce6b6
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 #define TMR_OFF 0
25 #define TMR_RUNNING 1
26 #define TMR_NEGATIVE 2
27 #define TMR_STOPPED 3
29 #if defined(CPUARM)
30 typedef int32_t tmrval_t;
31 typedef uint32_t tmrstart_t;
32 #define TIMER_MAX (0xffffff/2)
33 #else
34 typedef int16_t tmrval_t;
35 typedef uint16_t tmrstart_t;
36 #define TIMER_MAX (0xffff/2)
37 #endif
39 #define TIMER_MIN (tmrval_t(-TIMER_MAX-1))
41 struct TimerState {
42 uint16_t cnt;
43 uint16_t sum;
44 uint8_t state;
45 tmrval_t val;
46 uint8_t val_10ms;
49 extern TimerState timersStates[TIMERS];
51 void timerReset(uint8_t idx);
53 #if defined(CPUARM)
54 void timerSet(int idx, int val);
55 #endif // #if defined(CPUARM)
57 #if defined(CPUARM) || defined(CPUM2560)
58 void saveTimers();
59 void restoreTimers();
60 #else
61 #define saveTimers()
62 #define restoreTimers()
63 #endif
65 void evalTimers(int16_t throttle, uint8_t tick10ms);
67 #endif // _TIMERS_H_