diff options
| author | [email protected] <[email protected]> | 2012-10-28 15:31:50 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2012-10-28 15:31:50 +0000 |
| commit | a690ad168fa6f2bd7fdf5529a47582d1c6ea876b (patch) | |
| tree | 222fed50dc93de62dabcff4060fe657bddef2c77 /components | |
| parent | c28737498220ed66a6ff7553fdd736e2c72837d1 (diff) | |
add alarm
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2375 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components')
| -rw-r--r-- | components/drivers/include/drivers/alarm.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/alarm.h b/components/drivers/include/drivers/alarm.h new file mode 100644 index 0000000000..bd2c02fbc6 --- /dev/null +++ b/components/drivers/include/drivers/alarm.h @@ -0,0 +1,74 @@ +/* + * File : alarm.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2012-10-27 heyuanjie87 first version. + */ + +#ifndef __ALARM_H__ +#define __ALARM_H__ +
+#include <time.h>
+
+#define RT_ALARM_TM_NOW -1 /* set the alarm tm_day,tm_mon,tm_sec,ect to now.we also call it "don't care" value */
+
+/* alarm flags */
+#define RT_ALARM_ONESHOT 0x000 /* only alarm onece */
+#define RT_ALARM_DAILY 0x100 /* alarm everyday */
+#define RT_ALARM_WEEKLY 0x200 /* alarm weekly at Monday or Friday etc. */
+#define RT_ALARM_MONTHLY 0x400 /* alarm monthly at someday */
+#define RT_ALARM_YAERLY 0x800 /* alarm yearly at a certain date */
+
+#define RT_ALARM_MODIFY 1 /* modify alarm time or alarm flag */
+
+typedef struct rt_alarm *rt_alarm_t;
+typedef void (*rt_alarm_callback_t)(rt_alarm_t alarm, time_t timestamp);
+
+/* used for low level RTC driver */
+struct rt_rtc_wkalarm
+{
+ rt_bool_t enable; /* 0 = alarm disabled, 1 = alarm enabled */
+ rt_int32_t tm_sec; /* alarm at tm_sec */
+ rt_int32_t tm_min; /* alarm at tm_min */
+ rt_int32_t tm_hour; /* alarm at tm_hour */
+};
+
+struct rt_alarm
+{
+ rt_list_t list;
+ rt_uint32_t flag;
+ rt_alarm_callback_t callback;
+ struct tm wktime;
+};
+
+struct rt_alarm_setup
+{
+ rt_uint32_t flag; /* alarm flag */
+ struct tm wktime; /* when will the alarm wake up user */
+};
+
+struct rt_alarm_container
+{
+ rt_list_t head;
+ struct rt_mutex mutex;
+ struct rt_event event;
+ struct rt_alarm *current;
+};
+rt_alarm_t rt_alarm_create(rt_alarm_callback_t callback, struct rt_alarm_setup *setup);
+rt_err_t rt_alarm_control(rt_alarm_t alarm, rt_uint8_t cmd, void *arg);
+void rt_alarm_update(rt_device_t dev, rt_uint32_t event);
+rt_err_t rt_alarm_delete(rt_alarm_t alarm);
+rt_err_t rt_alarm_start(rt_alarm_t alarm);
+rt_err_t rt_alarm_stop(rt_alarm_t alarm); +void rt_alarm_system_init(void); + +
+ +#endif /* __ALARM_H__ */ |
