lv_task: add idle measurement
This commit is contained in:
@@ -27,13 +27,13 @@ extern "C" {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t free_cnt;
|
||||
uint32_t used_cnt;
|
||||
uint32_t free_size;
|
||||
uint32_t total_size;
|
||||
uint32_t free_cnt;
|
||||
uint32_t free_size;
|
||||
uint32_t free_biggest_size;
|
||||
uint8_t frag_pct;
|
||||
uint32_t used_cnt;
|
||||
uint8_t used_pct;
|
||||
uint8_t frag_pct;
|
||||
}lv_mem_monitor_t;
|
||||
|
||||
/**********************
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define IDLE_MEAS_PERIOD 500 /*[ms]*/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
@@ -55,8 +56,14 @@ void lv_task_init(void)
|
||||
*/
|
||||
void lv_task_handler(void)
|
||||
{
|
||||
static uint32_t idle_period_start = 0;
|
||||
static uint32_t handler_start = 0;
|
||||
static uint32_t busy_time = 0;
|
||||
|
||||
if(lv_task_run == false) return;
|
||||
|
||||
handler_start = lv_tick_get();
|
||||
|
||||
lv_task_t* lv_task_prio_a[LV_TASK_PRIO_NUM]; /*Lists for all prio.*/
|
||||
lv_task_prio_t prio_act;
|
||||
bool prio_reset = false; /*Used to go back to the highest priority*/
|
||||
@@ -100,6 +107,19 @@ void lv_task_handler(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
busy_time += lv_tick_elaps(handler_start);
|
||||
uint32_t idle_period_time = lv_tick_elaps(idle_period_start);
|
||||
if(idle_period_time >= IDLE_MEAS_PERIOD) {
|
||||
|
||||
idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/
|
||||
idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/
|
||||
busy_time = 0;
|
||||
idle_period_start = lv_tick_get();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -123,6 +123,12 @@ void lv_task_reset(lv_task_t* lv_task_p);
|
||||
*/
|
||||
void lv_task_enable(bool en);
|
||||
|
||||
/**
|
||||
* Get idle percentage
|
||||
* @return the lv_task idle in percentage
|
||||
*/
|
||||
uint8_t lv_task_get_idle(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
Reference in New Issue
Block a user