You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.7 KiB
38 lines
1.7 KiB
#ifndef WTIMER_H
|
|
#define WTIMER_H
|
|
|
|
#include "libmfwtimer.h"
|
|
|
|
struct wtimer_state {
|
|
struct wtimer_state_time {
|
|
uint32_t cur;
|
|
uint16_t ref;
|
|
} time;
|
|
struct wtimer_desc __xdata *queue;
|
|
};
|
|
|
|
extern struct wtimer_state __xdata wtimer_state[2];
|
|
extern struct wtimer_callback __xdata * __xdata wtimer_pending;
|
|
|
|
#define WTIMER_NULL (0xFFFF)
|
|
#define WTIMER_NULLDESC ((struct wtimer_desc __xdata *)WTIMER_NULL)
|
|
#define WTIMER_NULLCB ((struct wtimer_callback __xdata *)WTIMER_NULL)
|
|
#define WTIMER_PTR(x) ((struct wtimer_desc __xdata *)((char __xdata *)&(x) - (char __xdata *)&((struct wtimer_desc __xdata *)0)->next))
|
|
#define WTIMER_CBPTR(x) ((struct wtimer_callback __xdata *)((char __xdata *)&(x) - (char __xdata *)&((struct wtimer_callback __xdata *)0)->next))
|
|
|
|
// the following routines must be called with (wtimer) interrupts disabled
|
|
extern __reentrantb void wtimer_addcb_core(struct wtimer_callback __xdata *desc) __reentrant;
|
|
extern __reentrantb uint8_t wtimer_removecb_core(struct wtimer_callback __xdata *desc) __reentrant;
|
|
extern __reentrantb void wtimer0_schedq(void) __reentrant;
|
|
extern __reentrantb void wtimer0_update(void) __reentrant;
|
|
extern __reentrantb void wtimer0_addcore(struct wtimer_desc __xdata *desc) __reentrant;
|
|
extern __reentrantb uint8_t wtimer0_removecb_core(struct wtimer_desc __xdata *desc) __reentrant;
|
|
extern __reentrantb void wtimer1_schedq(void) __reentrant;
|
|
extern __reentrantb void wtimer1_update(void) __reentrant;
|
|
extern __reentrantb void wtimer1_addcore(struct wtimer_desc __xdata *desc) __reentrant;
|
|
extern __reentrantb uint8_t wtimer1_removecb_core(struct wtimer_desc __xdata *desc) __reentrant;
|
|
|
|
#define WTIMER_USEASM
|
|
|
|
#endif /* WTIMER_H */
|