00001
00053 #ifndef TIMER_TIMER_XMEGA_H_INCLUDED
00054 #define TIMER_TIMER_XMEGA_H_INCLUDED
00055
00056 #include <chip/timer.h>
00057 #include <types.h>
00058
00074 typedef uint8_t timer_res_t;
00075
00076 struct timer;
00077
00086 typedef void (*timer_callback_t) (struct timer *timer);
00087
00089
00104 struct timer {
00106 void *regs;
00108 uint8_t clksel;
00110 uint8_t intlvl;
00112 void (*callback)(struct timer *timer);
00113 };
00114
00127 #define TIMER_SELECT(func, timer_id, ...) \
00128 timer##timer_id##_##func##_priv(__VA_ARGS__)
00129
00130 #define timer_init(timer_id, timer, timer_callback) \
00131 TIMER_SELECT(init, timer_id, timer, timer_callback)
00132
00133 #define timer_start(timer_id, timer) \
00134 TIMER_SELECT(start, timer_id, timer)
00135
00136 #define timer_stop(timer_id, timer) \
00137 TIMER_SELECT(stop, timer_id, timer)
00138
00139 #define timer_set_alarm(timer_id, timer, delay) \
00140 TIMER_SELECT(set_alarm, timer_id, timer, delay)
00141
00142 #define timer_get_time(timer_id, timer) \
00143 TIMER_SELECT(get_time, timer_id, timer)
00144
00145 #define timer_default_resolution(timer_id) \
00146 TIMER_SELECT(default_resolution, timer_id)
00147
00148 #define timer_write_resolution(timer_id, timer, timer_resolution) \
00149 TIMER_SELECT(write_resolution, timer_id, timer, timer_resolution)
00150
00151 #define timer_read_resolution(timer_id, timer) \
00152 TIMER_SELECT(read_resolution, timer_id, timer)
00153
00154 #define timer_set_resolution(timer_id, timer, resolution) \
00155 TIMER_SELECT(set_resolution, timer_id, timer, resolution)
00156
00157 #define timer_get_resolution(timer_id, timer, timer_resolution) \
00158 TIMER_SELECT(get_resolution, timer_id, timer, timer_resolution)
00159
00160 #define timer_maximum_delta(timer_id, timer) \
00161 TIMER_SELECT(maximum_delta, timer_id, timer)
00162
00164
00165 #endif