Skip to content

Commit 414975a

Browse files
authored
Update Controlling_Manually_Braccio.ino
In the code, it was missing the Braccio.lvgl_lock/unlock statements to avoid multi-threaded access to LVGL.
1 parent ffd88d7 commit 414975a

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

examples/Controlling_Manually_Braccio/Controlling_Manually_Braccio.ino

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,47 +101,70 @@ void moveJoints(uint32_t btnID) {
101101
void updateButtons(uint32_t key)
102102
{
103103
if (key == UP){
104+
Braccio.lvgl_lock();
104105
lv_btnmatrix_set_selected_btn(direction_btnm, BTN_UP);
105106
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_UP, LV_BTNMATRIX_CTRL_CHECKED);
107+
Braccio.lvgl_unlock();
106108
}
107109
else if (key == DOWN){
110+
Braccio.lvgl_lock();
108111
lv_btnmatrix_set_selected_btn(direction_btnm, BTN_DOWN);
109112
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_DOWN, LV_BTNMATRIX_CTRL_CHECKED);
113+
Braccio.lvgl_unlock();
110114
}
111115
else if (key == LEFT) {
116+
Braccio.lvgl_lock();
112117
lv_btnmatrix_set_selected_btn(direction_btnm, BTN_LEFT);
113118
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_LEFT, LV_BTNMATRIX_CTRL_CHECKED);
119+
Braccio.lvgl_unlock();
114120
}
115121
else if (key == RIGHT){
122+
Braccio.lvgl_lock();
116123
lv_btnmatrix_set_selected_btn(direction_btnm, BTN_RIGHT);
117124
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_RIGHT, LV_BTNMATRIX_CTRL_CHECKED);
125+
Braccio.lvgl_unlock();
118126
}
119127
else {
128+
Braccio.lvgl_lock();
120129
lv_btnmatrix_set_selected_btn(direction_btnm, NULL);
130+
Braccio.lvgl_unlock();
121131
}
122132

123133
if (state == ELBOW){
134+
Braccio.lvgl_lock();
124135
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_LEFT, LV_BTNMATRIX_CTRL_HIDDEN);
125136
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_RIGHT, LV_BTNMATRIX_CTRL_HIDDEN);
137+
Braccio.lvgl_unlock();
126138
}
127139
else if (state == PINCH){
140+
Braccio.lvgl_lock();
128141
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_UP, LV_BTNMATRIX_CTRL_HIDDEN);
129142
lv_btnmatrix_set_btn_ctrl(direction_btnm, BTN_DOWN, LV_BTNMATRIX_CTRL_HIDDEN);
143+
Braccio.lvgl_unlock();
130144
}
131145
else{
146+
Braccio.lvgl_lock();
132147
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_UP, LV_BTNMATRIX_CTRL_HIDDEN);
133148
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_DOWN, LV_BTNMATRIX_CTRL_HIDDEN);
134149
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_LEFT, LV_BTNMATRIX_CTRL_HIDDEN);
135150
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_RIGHT, LV_BTNMATRIX_CTRL_HIDDEN);
151+
Braccio.lvgl_unlock();
136152
}
153+
154+
Braccio.lvgl_lock();
137155
lv_label_set_text(label, jointsPair[state]);
156+
Braccio.lvgl_unlock();
138157
}
139158

140159
// Event Handlers
141160

142161
static void eventHandlerDirectional(lv_event_t * e) {
162+
Braccio.lvgl_lock();
163+
143164
lv_event_code_t code = lv_event_get_code(e);
144165
lv_obj_t * obj = lv_event_get_target(e);
166+
167+
Braccio.lvgl_unlock();
145168

146169
if (code == LV_EVENT_KEY){
147170
pressed_key = Braccio.getKey();
@@ -164,6 +187,8 @@ static void eventHandlerDirectional(lv_event_t * e) {
164187

165188
void directionScreen(void)
166189
{
190+
Braccio.lvgl_lock();
191+
167192
static lv_style_t style_bg;
168193
lv_style_init(&style_bg);
169194
lv_style_set_bg_color(&style_bg, lv_color_white());
@@ -201,6 +226,8 @@ void directionScreen(void)
201226
lv_obj_set_style_text_align(label, LV_TEXT_ALIGN_CENTER, 0);
202227
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
203228
lv_label_set_text(label, jointsPair[state]);
229+
230+
Braccio.lvgl_unlock();
204231

205232
delay(50);
206233
Braccio.connectJoystickTo(direction_btnm);
@@ -221,11 +248,16 @@ void loop()
221248
{
222249
pressed_key= Braccio.getKey();
223250
if (pressed_key == 0) {
224-
if(pressed_key != last_pressed_key){
225-
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_UP, LV_BTNMATRIX_CTRL_CHECKED);
251+
if(pressed_key != last_pressed_key){
252+
Braccio.lvgl_lock();
253+
254+
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_UP, LV_BTNMATRIX_CTRL_CHECKED);
226255
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_DOWN, LV_BTNMATRIX_CTRL_CHECKED);
227256
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_RIGHT, LV_BTNMATRIX_CTRL_CHECKED);
228257
lv_btnmatrix_clear_btn_ctrl(direction_btnm, BTN_LEFT, LV_BTNMATRIX_CTRL_CHECKED);
258+
259+
Braccio.lvgl_unlock();
260+
229261
delay(50);
230262

231263
}

0 commit comments

Comments
 (0)