Monkey
The Monkey module provides LVGL applications with a simple monkey test. Monkey Testing is a technique where the user tests the application or system by providing random inputs and checking the behavior or seeing whether the aplication or system will crash. This module provides this service as simulated random input to stress test an LVGL application.
Usage
First, enable LV_USE_MONKEY
in lv_conf.h
.
Next, declare a variable (it can be local) of type lv_monkey_config_t
to
define the configuration structure, initialize it using
lv_monkey_config_init(cfg) then set its type
member to the desired
type of input device, and set the min
and max
values for its
period_range
and input_range
members to set the time ranges (in milliseconds)
and input ranges the Monkey module will use to generate random input at random times.
Next, call lv_monkey_create(cfg) to create the Monkey. It returns a
pointer to the lv_monkey_t
created.
Finally call lv_monkey_set_enable(monkey, true) to enable Monkey.
If you want to pause the monkey, call lv_monkey_set_enable(monkey, false). To delete it, call lv_monkey_delete(monkey).
Note that input_range
has different meanings depending on the type
input device:
LV_INDEV_TYPE_POINTER
: No effect, click randomly within the pixels of the screen resolution.LV_INDEV_TYPE_ENCODER
: The minimum and maximum values ofenc_diff
.LV_INDEV_TYPE_BUTTON
: The minimum and maximum values ofbtn_id
. Uselv_monkey_get_indev()
to get the input device, and uselv_indev_set_button_points()
to map the key ID to the coordinates.LV_INDEV_TYPE_KEYPAD
: No effect, Send random Keys.
Example
Touchpad monkey example
C code
View on GitHub#include "../../lv_examples.h"
#if LV_USE_MONKEY && LV_BUILD_EXAMPLES
void lv_example_monkey_1(void)
{
/*Create pointer monkey test*/
lv_monkey_config_t config;
lv_monkey_config_init(&config);
config.type = LV_INDEV_TYPE_POINTER;
config.period_range.min = 10;
config.period_range.max = 100;
lv_monkey_t * monkey = lv_monkey_create(&config);
/*Start monkey test*/
lv_monkey_set_enable(monkey, true);
}
#endif
Encoder monkey example
C code
View on GitHub#include "../../lv_examples.h"
#if LV_USE_MONKEY && LV_BUILD_EXAMPLES
void lv_example_monkey_2(void)
{
/*Create encoder monkey test*/
lv_monkey_config_t config;
lv_monkey_config_init(&config);
config.type = LV_INDEV_TYPE_ENCODER;
config.period_range.min = 50;
config.period_range.max = 500;
config.input_range.min = -5;
config.input_range.max = 5;
lv_monkey_t * monkey = lv_monkey_create(&config);
/*Set the default group*/
lv_group_t * group = lv_group_create();
lv_indev_set_group(lv_monkey_get_indev(monkey), group);
lv_group_set_default(group);
/*Start monkey test*/
lv_monkey_set_enable(monkey, true);
}
#endif