summaryrefslogtreecommitdiff
path: root/lib/lvgl/src/misc/lv_timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lvgl/src/misc/lv_timer.h')
m---------lib/lvgl0
-rw-r--r--lib/lvgl/src/misc/lv_timer.h183
2 files changed, 183 insertions, 0 deletions
diff --git a/lib/lvgl b/lib/lvgl
deleted file mode 160000
-Subproject 0732400e7b564dd0e7dc4a924619d8e19c5b23a
diff --git a/lib/lvgl/src/misc/lv_timer.h b/lib/lvgl/src/misc/lv_timer.h
new file mode 100644
index 00000000..a9a8e50d
--- /dev/null
+++ b/lib/lvgl/src/misc/lv_timer.h
@@ -0,0 +1,183 @@
+/**
+ * @file lv_timer.h
+ */
+
+#ifndef LV_TIMER_H
+#define LV_TIMER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*********************
+ * INCLUDES
+ *********************/
+#include "../lv_conf_internal.h"
+#include "../hal/lv_hal_tick.h"
+
+#include <stdint.h>
+#include <stdbool.h>
+
+/*********************
+ * DEFINES
+ *********************/
+#ifndef LV_ATTRIBUTE_TIMER_HANDLER
+#define LV_ATTRIBUTE_TIMER_HANDLER
+#endif
+
+#define LV_NO_TIMER_READY 0xFFFFFFFF
+
+/**********************
+ * TYPEDEFS
+ **********************/
+
+struct _lv_timer_t;
+
+/**
+ * Timers execute this type of functions.
+ */
+typedef void (*lv_timer_cb_t)(struct _lv_timer_t *);
+
+/**
+ * Descriptor of a lv_timer
+ */
+typedef struct _lv_timer_t {
+ uint32_t period; /**< How often the timer should run*/
+ uint32_t last_run; /**< Last time the timer ran*/
+ lv_timer_cb_t timer_cb; /**< Timer function*/
+ void * user_data; /**< Custom user data*/
+ int32_t repeat_count; /**< 1: One time; -1 : infinity; n>0: residual times*/
+ uint32_t paused : 1;
+} lv_timer_t;
+
+/**********************
+ * GLOBAL PROTOTYPES
+ **********************/
+
+/**
+ * Init the lv_timer module
+ */
+void _lv_timer_core_init(void);
+
+//! @cond Doxygen_Suppress
+
+/**
+ * Call it periodically to handle lv_timers.
+ * @return time till it needs to be run next (in ms)
+ */
+LV_ATTRIBUTE_TIMER_HANDLER uint32_t lv_timer_handler(void);
+
+//! @endcond
+
+/**
+ * Call it in the super-loop of main() or threads. It will run lv_timer_handler()
+ * with a given period in ms. You can use it with sleep or delay in OS environment.
+ * This function is used to simplify the porting.
+ * @param __ms the period for running lv_timer_handler()
+ */
+static inline LV_ATTRIBUTE_TIMER_HANDLER uint32_t lv_timer_handler_run_in_period(uint32_t ms)
+{
+ static uint32_t last_tick = 0;
+ uint32_t curr_tick = lv_tick_get();
+
+ if((curr_tick - last_tick) >= (ms)) {
+ last_tick = curr_tick;
+ return lv_timer_handler();
+ }
+ return 1;
+}
+
+/**
+ * Create an "empty" timer. It needs to initialized with at least
+ * `lv_timer_set_cb` and `lv_timer_set_period`
+ * @return pointer to the created timer
+ */
+lv_timer_t * lv_timer_create_basic(void);
+
+/**
+ * Create a new lv_timer
+ * @param timer_xcb a callback to call periodically.
+ * (the 'x' in the argument name indicates that it's not a fully generic function because it not follows
+ * the `func_name(object, callback, ...)` convention)
+ * @param period call period in ms unit
+ * @param user_data custom parameter
+ * @return pointer to the new timer
+ */
+lv_timer_t * lv_timer_create(lv_timer_cb_t timer_xcb, uint32_t period, void * user_data);
+
+/**
+ * Delete a lv_timer
+ * @param timer pointer to an lv_timer
+ */
+void lv_timer_del(lv_timer_t * timer);
+
+/**
+ * Pause/resume a timer.
+ * @param timer pointer to an lv_timer
+ */
+void lv_timer_pause(lv_timer_t * timer);
+
+void lv_timer_resume(lv_timer_t * timer);
+
+/**
+ * Set the callback the timer (the function to call periodically)
+ * @param timer pointer to a timer
+ * @param timer_cb the function to call periodically
+ */
+void lv_timer_set_cb(lv_timer_t * timer, lv_timer_cb_t timer_cb);
+
+/**
+ * Set new period for a lv_timer
+ * @param timer pointer to a lv_timer
+ * @param period the new period
+ */
+void lv_timer_set_period(lv_timer_t * timer, uint32_t period);
+
+/**
+ * Make a lv_timer ready. It will not wait its period.
+ * @param timer pointer to a lv_timer.
+ */
+void lv_timer_ready(lv_timer_t * timer);
+
+/**
+ * Set the number of times a timer will repeat.
+ * @param timer pointer to a lv_timer.
+ * @param repeat_count -1 : infinity; 0 : stop ; n>0: residual times
+ */
+void lv_timer_set_repeat_count(lv_timer_t * timer, int32_t repeat_count);
+
+/**
+ * Reset a lv_timer.
+ * It will be called the previously set period milliseconds later.
+ * @param timer pointer to a lv_timer.
+ */
+void lv_timer_reset(lv_timer_t * timer);
+
+/**
+ * Enable or disable the whole lv_timer handling
+ * @param en true: lv_timer handling is running, false: lv_timer handling is suspended
+ */
+void lv_timer_enable(bool en);
+
+/**
+ * Get idle percentage
+ * @return the lv_timer idle in percentage
+ */
+uint8_t lv_timer_get_idle(void);
+
+/**
+ * Iterate through the timers
+ * @param timer NULL to start iteration or the previous return value to get the next timer
+ * @return the next timer or NULL if there is no more timer
+ */
+lv_timer_t * lv_timer_get_next(lv_timer_t * timer);
+
+/**********************
+ * MACROS
+ **********************/
+
+#ifdef __cplusplus
+} /*extern "C"*/
+#endif
+
+#endif