summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author[email protected] <[email protected]>2012-10-28 15:31:50 +0000
committer[email protected] <[email protected]>2012-10-28 15:31:50 +0000
commita690ad168fa6f2bd7fdf5529a47582d1c6ea876b (patch)
tree222fed50dc93de62dabcff4060fe657bddef2c77
parentc28737498220ed66a6ff7553fdd736e2c72837d1 (diff)
add alarm
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2375 bbd45198-f89e-11dd-88c7-29a3b14d5316
-rw-r--r--components/drivers/include/drivers/alarm.h74
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__ */