[PATCH 1/2] Included LT_TIMERs base defines for simple time measurement and interval checking.

jiri.kubias@gmail.com (sysless@pandora.cz) jiri.kubias at gmail.com
Tue Jul 6 10:09:32 CEST 2010


From: Petr Smolik <petr at smoliku.cz>

Signed-off-by: Petr Smolik <petr at smoliku.cz>
Signed-off-by: Pavel Pisa <pisa at cmp.felk.cvut.cz>
---
 arch/generic/defines/Makefile.omk     |    3 +-
 arch/generic/defines/lt_timer.h       |   65 +++++++++++++++++++++++++++++++++
 arch/generic/defines/lt_timer_types.h |   19 ++++++++++
 3 files changed, 86 insertions(+), 1 deletions(-)
 create mode 100644 arch/generic/defines/lt_timer.h
 create mode 100644 arch/generic/defines/lt_timer_types.h

diff --git a/arch/generic/defines/Makefile.omk b/arch/generic/defines/Makefile.omk
index 115fc7a..afe582e 100644
--- a/arch/generic/defines/Makefile.omk
+++ b/arch/generic/defines/Makefile.omk
@@ -1,7 +1,8 @@
 # -*- makefile -*-
 
 #include_HEADERS += byteswap.h endian.h
-#include_HEADERS += lt_timer.h lt_timer_types.h keyval_id_his.h ads1x46.h
+include_HEADERS += lt_timer.h lt_timer_types.h
+#include_HEADERS += keyval_id_his.h ads1x46.h
 include_HEADERS += irq_generic.h
 
 #include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h)) 
diff --git a/arch/generic/defines/lt_timer.h b/arch/generic/defines/lt_timer.h
new file mode 100644
index 0000000..b5d39df
--- /dev/null
+++ b/arch/generic/defines/lt_timer.h
@@ -0,0 +1,65 @@
+#ifndef _LT_TIMER_H
+#define _LT_TIMER_H
+
+#include <types.h>
+#include <lt_timer_types.h>
+
+#include <cpu_def.h>
+#include <system_def.h>
+
+//timers
+
+#ifndef LT_TIMER_VAR_LOC
+#define LT_TIMER_VAR_LOC
+#endif
+
+static lt_ticks_t LT_TIMER_VAR_LOC last_ticks;
+static lt_mstime_t LT_TIMER_VAR_LOC actual_msec; 
+
+/* Declaration of ulan light timers */
+
+#define lt_get_msbase()     (1000/SYS_TIMER_HZ)		/* in ms */
+#define lt_get_ticks()      (get_sys_timer_ticks())
+
+static inline void
+lt_mstime_update()
+{
+  lt_ticks_t LT_TIMER_VAR_LOC act_ticks;
+  lt_mstime_t LT_TIMER_VAR_LOC msec_diff;
+
+  act_ticks=lt_get_ticks();
+  msec_diff=((lt_tidiff_t)(act_ticks-last_ticks))*lt_get_msbase();
+  last_ticks=act_ticks;
+
+  actual_msec+=msec_diff;
+}
+
+
+#define LT_TIMER_DEC(cust_prefix) \
+\
+extern lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \
+static inline void \
+cust_prefix##_init() \
+{\
+  lt_mstime_update();\
+  cust_prefix##_last_expired=actual_msec;\
+}\
+static inline int \
+cust_prefix##_expired(lt_mstime_t expiration) \
+{\
+  lt_mstime_update();\
+  \
+  if ((lt_msdiff_t)(actual_msec-cust_prefix##_last_expired)>=expiration) {\
+    cust_prefix##_last_expired=actual_msec;\
+    return 1;\
+  }\
+  \
+  return 0;\
+}
+
+#define LT_TIMER_IMP(cust_prefix) \
+\
+lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \
+
+
+#endif /* _LT_TIMER_H */
diff --git a/arch/generic/defines/lt_timer_types.h b/arch/generic/defines/lt_timer_types.h
new file mode 100644
index 0000000..e7dc27c
--- /dev/null
+++ b/arch/generic/defines/lt_timer_types.h
@@ -0,0 +1,19 @@
+#ifndef _LT_TIMER_TYPES_H
+#define _LT_TIMER_TYPES_H
+
+//timers
+
+#ifdef SDCC
+typedef unsigned char lt_ticks_t;
+typedef char lt_tidiff_t;
+typedef unsigned int lt_mstime_t;
+typedef int lt_msdiff_t;
+#define LT_TIMER_VAR_LOC DATA
+#else
+typedef unsigned int lt_ticks_t;
+typedef int lt_tidiff_t;
+typedef unsigned long lt_mstime_t;
+typedef signed long lt_msdiff_t;
+#endif
+
+#endif /* _LT_TIMER_TYPES_H */
-- 
1.6.4.4


---


More information about the Sysless mailing list