Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2015, 23:52   #1
sakatgg
Senior Member
 
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 989
sakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nice
По умолчанию Регистрация расширителя gpio pca9537 в исходном коде

Здесь удалось задействовать набортный расширитель gpio pca9537 для 4 buttons.
Здесь register pca953x gpio extender есть как прикрутить usb расширитель портов.
В этих делах не силен, могу куснуть, вставить, но тут надо знать азы программирования подскажите, что добавить в mach-wndr3700.c для инициализации при старте pca9537 и шины I2C?
Исходник 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,
	}
};
Вложения
Тип файла: rar mach-wndr3700.rar (1.6 Кб, 115 просмотров)

Последний раз редактировалось sakatgg; 14.11.2015 в 12:42.
sakatgg вне форума   Ответить с цитированием
Старый 14.11.2015, 16:50   #2
sakatgg
Senior Member
 
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 989
sakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nice
По умолчанию Re: Регистрация расширителя gpio pca9537 в исходном коде

Удалось подключить 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
Там же в секции для key делаем так:
Код:
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);
При компиляции, чтобы не делать постоянно make clean, можно редактировать этот
/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:~#
По методу отсюда hardware.button определяем хардварность кнопок:
Код:
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
Теперь проще привязать к коммандам

Немного только напрягает сообщение:
Цитата:
[ 21.130000] Custom GPIO-based I2C driver version 0.1.1
[ 21.140000] i2c-gpio i2c-gpio.0: using pins 11 (SDA) and 4 (SCL)
[ 21.140000] gpio-keys-polled gpio-keys-polled: unable to claim gpio 60, err=-517
[ 21.150000] platform gpio-keys-polled: Driver gpio-keys-polled requests probe deferral
[ 21.160000] pca953x 0-0049: interrupt support not compiled in
[ 21.170000] i2c i2c-0: new_device: Instantiated device pca9537 at 0x49

Последний раз редактировалось sakatgg; 14.11.2015 в 16:59.
sakatgg вне форума   Ответить с цитированием
Старый 14.11.2015, 22:33   #3
sakatgg
Senior Member
 
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 989
sakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nice
По умолчанию Re: Регистрация расширителя gpio pca9537 в исходном коде

Проверка работы клавиш 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
/sbin/wifitoggle права 755
Код:
#!/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
Полёт нормальный, включение и отключение WiFi с кнопки BTN_1 - gpio 60 - keypad
Код:
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:~#
Миниатюры
Нажмите на изображение для увеличения
Название: 2015-11-15_004800.jpg
Просмотров: 264
Размер:	13.2 Кб
ID:	3337  

Последний раз редактировалось sakatgg; 14.11.2015 в 23:49.
sakatgg вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика