From a6b55e24788017feb09668b1df868ff8e6bc4024 Mon Sep 17 00:00:00 2001 From: Rafael Caricio Date: Wed, 2 Jun 2021 01:32:25 +0200 Subject: [PATCH] Add basic API functions --- lvgl/src/functions.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lvgl/src/functions.rs b/lvgl/src/functions.rs index 2490130..824c8ac 100644 --- a/lvgl/src/functions.rs +++ b/lvgl/src/functions.rs @@ -1,6 +1,7 @@ use crate::display::{Display, DisplayDriver}; use crate::{Color, Obj, Widget}; use core::ptr::NonNull; +use core::time::Duration; use core::{ptr, result}; use embedded_graphics::prelude::*; @@ -16,7 +17,7 @@ type Result = result::Result; pub fn disp_drv_register, T: DrawTarget>( disp_drv: &mut DisplayDriver, ) -> Result { - let disp_ptr = unsafe { lvgl_sys::lv_disp_drv_register(disp_drv.disp_drv.as_mut() as *mut _) }; + let disp_ptr = unsafe { lvgl_sys::lv_disp_drv_register(&mut disp_drv.disp_drv as *mut _) }; Ok(Display::from_raw( NonNull::new(disp_ptr).ok_or(CoreError::OperationFailed)?, )) @@ -40,3 +41,16 @@ pub(crate) fn get_str_act(disp: Option<&Display>) -> Result { NonNull::new(scr_ptr).ok_or(CoreError::ResourceNotAvailable)?, )) } + +pub fn tick_inc(tick_period: Duration) { + unsafe { + lvgl_sys::lv_tick_inc(tick_period.as_millis() as u32); + } +} + +/// Call it periodically to handle tasks. +/// Returns the duration after which it must be called again. +pub fn task_handler() -> Option { + let next_call_at = unsafe { lvgl_sys::lv_task_handler() }; + Some(Duration::from_secs(next_call_at as u64)) +}