|
1 | | -/* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD |
| 1 | +/* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD |
2 | 2 | * |
3 | 3 | * SPDX-License-Identifier: Apache-2.0 |
4 | 4 | */ |
@@ -232,54 +232,54 @@ static void button_handler(button_dev_t *btn) |
232 | 232 | btn->event = (uint8_t)BUTTON_LONG_PRESS_HOLD; |
233 | 233 | btn->long_press_hold_cnt++; |
234 | 234 | CALL_EVENT_CB(BUTTON_LONG_PRESS_HOLD); |
| 235 | + } |
235 | 236 |
|
236 | | - /** Calling callbacks for BUTTON_LONG_PRESS_START based on press_time */ |
237 | | - uint32_t ticks_time = iot_button_get_ticks_time(btn); |
238 | | - if (btn->cb_info[BUTTON_LONG_PRESS_START]) { |
239 | | - button_cb_info_t *cb_info = btn->cb_info[BUTTON_LONG_PRESS_START]; |
240 | | - uint16_t time = cb_info[btn->count[0]].event_args.long_press.press_time; |
241 | | - if (btn->long_press_ticks * TICKS_INTERVAL > time) { |
242 | | - for (int i = btn->count[0] + 1; i < btn->size[BUTTON_LONG_PRESS_START]; i++) { |
243 | | - time = cb_info[i].event_args.long_press.press_time; |
244 | | - if (btn->long_press_ticks * TICKS_INTERVAL <= time) { |
245 | | - btn->count[0] = i; |
246 | | - break; |
247 | | - } |
| 237 | + /** Calling callbacks for BUTTON_LONG_PRESS_START based on press_time */ |
| 238 | + uint32_t ticks_time = iot_button_get_ticks_time(btn); |
| 239 | + if (btn->cb_info[BUTTON_LONG_PRESS_START]) { |
| 240 | + button_cb_info_t *cb_info = btn->cb_info[BUTTON_LONG_PRESS_START]; |
| 241 | + uint16_t time = cb_info[btn->count[0]].event_args.long_press.press_time; |
| 242 | + if (btn->long_press_ticks * TICKS_INTERVAL > time) { |
| 243 | + for (int i = btn->count[0] + 1; i < btn->size[BUTTON_LONG_PRESS_START]; i++) { |
| 244 | + time = cb_info[i].event_args.long_press.press_time; |
| 245 | + if (btn->long_press_ticks * TICKS_INTERVAL <= time) { |
| 246 | + btn->count[0] = i; |
| 247 | + break; |
248 | 248 | } |
249 | 249 | } |
250 | | - if (btn->count[0] < btn->size[BUTTON_LONG_PRESS_START] && abs((int)ticks_time - (int)time) <= TOLERANCE) { |
251 | | - btn->event = (uint8_t)BUTTON_LONG_PRESS_START; |
252 | | - do { |
253 | | - cb_info[btn->count[0]].cb(btn, cb_info[btn->count[0]].usr_data); |
254 | | - btn->count[0]++; |
255 | | - if (btn->count[0] >= btn->size[BUTTON_LONG_PRESS_START]) { |
256 | | - break; |
257 | | - } |
258 | | - } while (time == cb_info[btn->count[0]].event_args.long_press.press_time); |
259 | | - } |
260 | 250 | } |
| 251 | + if (btn->count[0] < btn->size[BUTTON_LONG_PRESS_START] && abs((int)ticks_time - (int)time) <= TOLERANCE) { |
| 252 | + btn->event = (uint8_t)BUTTON_LONG_PRESS_START; |
| 253 | + do { |
| 254 | + cb_info[btn->count[0]].cb(btn, cb_info[btn->count[0]].usr_data); |
| 255 | + btn->count[0]++; |
| 256 | + if (btn->count[0] >= btn->size[BUTTON_LONG_PRESS_START]) { |
| 257 | + break; |
| 258 | + } |
| 259 | + } while (time == cb_info[btn->count[0]].event_args.long_press.press_time); |
| 260 | + } |
| 261 | + } |
261 | 262 |
|
262 | | - /** Updating counter for BUTTON_LONG_PRESS_UP press_time */ |
263 | | - if (btn->cb_info[BUTTON_LONG_PRESS_UP]) { |
264 | | - button_cb_info_t *cb_info = btn->cb_info[BUTTON_LONG_PRESS_UP]; |
265 | | - uint16_t time = cb_info[btn->count[1] + 1].event_args.long_press.press_time; |
266 | | - if (btn->long_press_ticks * TICKS_INTERVAL > time) { |
267 | | - for (int i = btn->count[1] + 1; i < btn->size[BUTTON_LONG_PRESS_UP]; i++) { |
268 | | - time = cb_info[i].event_args.long_press.press_time; |
269 | | - if (btn->long_press_ticks * TICKS_INTERVAL <= time) { |
270 | | - btn->count[1] = i; |
271 | | - break; |
272 | | - } |
| 263 | + /** Updating counter for BUTTON_LONG_PRESS_UP press_time */ |
| 264 | + if (btn->cb_info[BUTTON_LONG_PRESS_UP]) { |
| 265 | + button_cb_info_t *cb_info = btn->cb_info[BUTTON_LONG_PRESS_UP]; |
| 266 | + uint16_t time = cb_info[btn->count[1] + 1].event_args.long_press.press_time; |
| 267 | + if (btn->long_press_ticks * TICKS_INTERVAL > time) { |
| 268 | + for (int i = btn->count[1] + 1; i < btn->size[BUTTON_LONG_PRESS_UP]; i++) { |
| 269 | + time = cb_info[i].event_args.long_press.press_time; |
| 270 | + if (btn->long_press_ticks * TICKS_INTERVAL <= time) { |
| 271 | + btn->count[1] = i; |
| 272 | + break; |
273 | 273 | } |
274 | 274 | } |
275 | | - if (btn->count[1] + 1 < btn->size[BUTTON_LONG_PRESS_UP] && abs((int)ticks_time - (int)time) <= TOLERANCE) { |
276 | | - do { |
277 | | - btn->count[1]++; |
278 | | - if (btn->count[1] + 1 >= btn->size[BUTTON_LONG_PRESS_UP]) { |
279 | | - break; |
280 | | - } |
281 | | - } while (time == cb_info[btn->count[1] + 1].event_args.long_press.press_time); |
282 | | - } |
| 275 | + } |
| 276 | + if (btn->count[1] + 1 < btn->size[BUTTON_LONG_PRESS_UP] && abs((int)ticks_time - (int)time) <= TOLERANCE) { |
| 277 | + do { |
| 278 | + btn->count[1]++; |
| 279 | + if (btn->count[1] + 1 >= btn->size[BUTTON_LONG_PRESS_UP]) { |
| 280 | + break; |
| 281 | + } |
| 282 | + } while (time == cb_info[btn->count[1] + 1].event_args.long_press.press_time); |
283 | 283 | } |
284 | 284 | } |
285 | 285 | } else { //releasd |
|
0 commit comments