| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "luat_base.h"
- #include "luat_touchkey.h"
- #include "luat_msgbus.h"
- #include "wm_include.h"
- #include "wm_touchsensor.h"
- #include "wm_gpio_afsel.h"
- #include "wm_io.h"
- #include "wm_regs.h"
- static enum tls_io_name touchkeymap[] = {
- WM_IO_PA_00, // NOP
- WM_IO_PA_07, /*touch sensor 1*/
- WM_IO_PA_09, /*touch sensor 2*/
- WM_IO_PA_10, /*touch sensor 3*/
- WM_IO_PB_00, /*touch sensor 4*/
- WM_IO_PB_01, /*touch sensor 5*/
- WM_IO_PB_02, /*touch sensor 6*/
- WM_IO_PB_03, /*touch sensor 7*/
- WM_IO_PB_04, /*touch sensor 8*/
- WM_IO_PB_05, /*touch sensor 9*/
- WM_IO_PB_06, /*touch sensor 10*/
- WM_IO_PB_07, /*touch sensor 11*/
- WM_IO_PB_08, /*touch sensor 12*/
- WM_IO_PB_09, /*touch sensor 13*/
- WM_IO_PA_12, /*touch sensor 14*/
- WM_IO_PA_14, /*touch sensor 15*/
- };
- static void luat_touchkey_cb(uint32_t value) {
- rtos_msg_t msg;
- msg.handler = l_touchkey_handler;
- msg.ptr = NULL;
- for (uint8_t i = 0; i < 15; i++)
- {
- if (value&BIT(i))
- {
- msg.arg1 = i + 1;
- msg.arg2 = tls_touchsensor_countnum_get(i+1);
- luat_msgbus_put(&msg, 0);
- }
- }
- }
- int luat_touchkey_setup(luat_touchkey_conf_t *conf) {
- if (conf->id < 1 || conf->id > 15 )
- return -1;
- wm_touch_sensor_config(touchkeymap[(enum tls_io_name)conf->id]);
- tls_touchsensor_init_config(conf->id, conf->scan_period, conf->window, 1);
- tls_touchsensor_irq_enable(conf->id);
- tls_touchsensor_irq_register(luat_touchkey_cb);
- if (conf->threshold)
- tls_touchsensor_threshold_config(conf->id, conf->threshold);
- return 0;
- }
- int luat_touchkey_close(uint8_t id) {
- if (id < 1 || id > 15 )
- return -1;
- tls_touchsensor_irq_disable(id);
- tls_touchsensor_deinit(id);
- return 0;
- }
|