1、修改匹配的文件mach-ap143.c
定义按键对应的GPIO(根据原理图来)
#define AP143_GPIO_BTN_RESET 12
添加按钮的初始化消息
注册定时轮询按钮动作的函数
2、 修改按钮功能实现时间
文件位于 /etc/rc.button/reset 文件中
#!/bin/sh
[ "${ACTION}" = "released" ] || exit 0
. /lib/functions.sh
logger "$BUTTON pressed for $SEEN seconds"
if [ "$SEEN" -lt 1 ]
echo "REBOOT" > /dev/console
sync
reboot
elif [ "$SEEN" -gt 5 ]
then
echo "FACTORY RESET" > /dev/console
jffs2reset -y && reboot &
fi
按按键小于1秒,则重启; 大于5秒,则执行恢复出厂设置。
附录:
package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c 中
定义了bh_map组
static struct bh_map button_map[] = {
BH_MAP(BTN_0, "BTN_0"),
BH_MAP(BTN_1, "BTN_1"),
BH_MAP(BTN_2, "BTN_2"),
BH_MAP(BTN_3, "BTN_3"),
BH_MAP(BTN_4, "BTN_4"),
BH_MAP(BTN_5, "BTN_5"),
BH_MAP(BTN_6, "BTN_6"),
BH_MAP(BTN_7, "BTN_7"),
BH_MAP(BTN_8, "BTN_8"),
BH_MAP(BTN_9, "BTN_9"),
BH_MAP(KEY_POWER, "power"),
BH_MAP(KEY_RESTART, "reset"), // 此个为我们所需要的重启或恢复出厂,对应mach-ap143.c中初始化使用
BH_MAP(KEY_RFKILL, "rfkill"),
BH_MAP(KEY_WPS_BUTTON, "wps"),
BH_MAP(KEY_WIMAX, "wwan"),
};