![]() |
![]() |
#1 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 ![]() ![]() ![]() ![]() ![]() |
![]()
Здесь удалось задействовать набортный расширитель gpio pca9537 для 4 buttons.
Здесь register pca953x gpio extender есть как прикрутить usb расширитель портов. В этих делах не силен, могу куснуть, вставить, но тут надо знать азы программирования ![]() Исходник mach-wndr3700.c тут. Я там уже отключил не задействованные кнопки wps/reset, led (он рабочий). Спасибо. P.S. Здесь есть как сделать из Gpio 29 аппаратную button, мне надо тоже, только задействован расширитель gpio 60-63 Код:
#define TL_WR703N_GPIO_LED_SYSTEM 27 #define SENSOR_BTN_29 29 static struct gpio_keys_button tl_wr703n_gpio_keys[] __initdata = { { .desc = "reset", .type = EV_KEY, .code = KEY_RESTART, .debounce_interval = TL_WR703N_KEYS_DEBOUNCE_INTERVAL, .gpio = TL_WR703N_GPIO_BTN_RESET, .active_low = 0, },{ .desc = "sensor", .type = EV_KEY, .code = BTN_1, .debounce_interval = TL_WR703N_KEYS_DEBOUNCE_INTERVAL, .gpio = SENSOR_BTN_29, .active_low = 1, } }; Последний раз редактировалось sakatgg; 14.11.2015 в 12:42. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 ![]() ![]() ![]() ![]() ![]() |
![]()
Удалось подключить gpio 60-63 как hard button (на уровне ядра)
В mach-wndr3700.c добавляем: Код:
#define SENSOR_BTN_60 60 #define SENSOR_BTN_61 61 #define SENSOR_BTN_62 62 #define SENSOR_BTN_63 63 Код:
static struct gpio_keys_button wndr3700_gpio_keys[] __initdata = { { .desc = "sensor", .type = EV_KEY, .code = BTN_1, .debounce_interval = WNDR3700_KEYS_DEBOUNCE_INTERVAL, .gpio = SENSOR_BTN_60, .active_low = 1, }, { .desc = "sensor", .type = EV_KEY, .code = BTN_2, .debounce_interval = WNDR3700_KEYS_DEBOUNCE_INTERVAL, .gpio = SENSOR_BTN_61, .active_low = 1, }, { .desc = "sensor", .type = EV_KEY, .code = BTN_3, .debounce_interval = WNDR3700_KEYS_DEBOUNCE_INTERVAL, .gpio = SENSOR_BTN_62, .active_low = 1, }, { .desc = "sensor", .type = EV_KEY, .code = BTN_4, .debounce_interval = WNDR3700_KEYS_DEBOUNCE_INTERVAL, .gpio = SENSOR_BTN_63, .active_low = 1, } }; Код:
ath79_register_gpio_keys_polled(-1, WNDR3700_KEYS_POLL_INTERVAL, ARRAY_SIZE(wndr3700_gpio_keys), wndr3700_gpio_keys); /build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.23/arch/mips/ath79/mach-wndr3700.c и удалять рядом расположенный обязательно mach-wndr3700.o и достаточно будет make После прошивки: Код:
root@OpenWrt:~# cat /sys/kernel/debug/gpio GPIOs 0-15, ath79: gpio-1 (sysfs ) out lo gpio-2 (netgear:green:power ) out lo gpio-3 (sysfs ) out lo gpio-4 (scl ) in hi gpio-5 (rtl8366s ) in hi gpio-6 (netgear:green:wan ) out hi gpio-7 (rtl8366s ) in hi gpio-9 (sysfs ) out lo gpio-11 (sda ) in hi GPIOs 60-63, i2c/0-0049, pca9537, can sleep: gpio-60 (sensor ) in hi gpio-61 (sensor ) in hi gpio-62 (sensor ) in hi gpio-63 (sensor ) in hi root@OpenWrt:~# Код:
Sat Nov 14 16:16:10 2015 user.notice root: the button was BTN_1 and the action was pressed Sat Nov 14 16:16:10 2015 user.notice root: the button was BTN_1 and the action was released Sat Nov 14 16:16:11 2015 user.notice root: the button was BTN_2 and the action was pressed Sat Nov 14 16:16:11 2015 user.notice root: the button was BTN_2 and the action was released Sat Nov 14 16:16:11 2015 user.notice root: the button was BTN_3 and the action was pressed Sat Nov 14 16:16:12 2015 user.notice root: the button was BTN_3 and the action was released Sat Nov 14 16:16:12 2015 user.notice root: the button was BTN_4 and the action was pressed Sat Nov 14 16:16:13 2015 user.notice root: the button was BTN_4 and the action was released ![]() Немного только напрягает сообщение: Цитата:
Последний раз редактировалось sakatgg; 14.11.2015 в 16:59. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 ![]() ![]() ![]() ![]() ![]() |
![]()
Проверка работы клавиш keypad на WiFi
/etc/hotplug.d/button/buttons Код:
#!/bin/sh if [ $BUTTON = "BTN_1" ] && [ $ACTION = "pressed" ] then logger "BTN_1 is pressed" else /sbin/wifitoggle fi Код:
#!/bin/sh case "$(uci get wireless.@wifi-device[0].disabled)" in 1) uci set wireless.@wifi-device[0].disabled=0 uci commit wireless /sbin/wifi up logger "wifi ON" ;; *) uci set wireless.@wifi-device[0].disabled=1 uci commit wireless /sbin/wifi down logger "wifi OFF" ;; esac ![]() Код:
Sat Nov 14 23:17:28 2015 user.notice root: BTN_1 is pressed Sat Nov 14 23:17:29 2015 user.notice root: wifi OFF Sat Nov 14 23:17:29 2015 daemon.notice netifd: Interface 'wwan' is disabled Sat Nov 14 23:17:39 2015 user.notice root: BTN_1 is pressed Sat Nov 14 23:17:40 2015 user.notice root: wifi ON Sat Nov 14 23:17:41 2015 kern.info kernel: [ 204.830000] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready Sat Nov 14 23:17:41 2015 daemon.notice netifd: radio0 (1593): Successfully initialized wpa_supplicant Sat Nov 14 23:17:41 2015 daemon.notice netifd: Interface 'wwan' is enabled root@OpenWrt:~# Последний раз редактировалось sakatgg; 14.11.2015 в 23:49. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|