| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #include <agile_button.h>
- #include <stdlib.h>
- #ifdef RT_USING_FINSH
- #include <finsh.h>
- #endif
- static void btn_click_event_cb(agile_btn_t *btn)
- {
- rt_kprintf("[button click event] pin:%d repeat:%d, hold_time:%d\r\n", btn->pin, btn->repeat_cnt, btn->hold_time);
- }
- static void btn_hold_event_cb(agile_btn_t *btn)
- {
- rt_kprintf("[button hold event] pin:%d hold_time:%d\r\n", btn->pin, btn->hold_time);
- }
- #ifdef RT_USING_HEAP
- static agile_btn_t *_dbtn = RT_NULL;
- static void dbtn_create(int argc, char **argv)
- {
- int pin = 0;
- int active = 0;
- if (argc < 3) {
- rt_kprintf("dbtn_create --use dbtn_create [pin] [active]\r\n");
- return;
- }
- pin = atoi(argv[1]);
- active = atoi(argv[2]);
- if (_dbtn) {
- agile_btn_delete(_dbtn);
- _dbtn = RT_NULL;
- }
- if (active == PIN_HIGH)
- _dbtn = agile_btn_create(pin, active, PIN_MODE_INPUT_PULLDOWN);
- else
- _dbtn = agile_btn_create(pin, active, PIN_MODE_INPUT_PULLUP);
- agile_btn_set_event_cb(_dbtn, BTN_CLICK_EVENT, btn_click_event_cb);
- agile_btn_set_event_cb(_dbtn, BTN_HOLD_EVENT, btn_hold_event_cb);
- agile_btn_start(_dbtn);
- }
- static void dbtn_delete(void)
- {
- if (_dbtn) {
- agile_btn_delete(_dbtn);
- _dbtn = RT_NULL;
- }
- }
- #ifdef RT_USING_FINSH
- MSH_CMD_EXPORT(dbtn_create, create btn);
- MSH_CMD_EXPORT(dbtn_delete, delete btn);
- #endif
- #endif /* RT_USING_HEAP */
- static agile_btn_t _sbtn;
- static void sbtn_init(int argc, char **argv)
- {
- int pin = 0;
- int active = 0;
- if (argc < 3) {
- rt_kprintf("sbtn_init --use sbtn_init [pin] [active]\r\n");
- return;
- }
- pin = atoi(argv[1]);
- active = atoi(argv[2]);
- agile_btn_stop(&_sbtn);
- if (active == PIN_HIGH)
- agile_btn_init(&_sbtn, pin, active, PIN_MODE_INPUT_PULLDOWN);
- else
- agile_btn_init(&_sbtn, pin, active, PIN_MODE_INPUT_PULLUP);
- agile_btn_set_event_cb(&_sbtn, BTN_CLICK_EVENT, btn_click_event_cb);
- agile_btn_set_event_cb(&_sbtn, BTN_HOLD_EVENT, btn_hold_event_cb);
- agile_btn_start(&_sbtn);
- }
- #ifdef RT_USING_FINSH
- MSH_CMD_EXPORT(sbtn_init, init btn);
- #endif
|