void ez_event_long(void) { int ez_action = nvram_get_int("ez_action_long"); switch (ez_action) { case 7: case 8: alarmtimer(0, 0); LED_CONTROL(LED_POWER, LED_OFF); break; default: alarmtimer(NORMAL_PERIOD, 0); LED_CONTROL(LED_POWER, LED_ON); break; } switch (ez_action) { case 1: // WiFi 2.4GHz force ON/OFF trigger ez_action_force_toggle_wifi24(); break; case 2: // WiFi 5GHz force ON/OFF trigger ez_action_force_toggle_wifi5(); break; case 3: // WiFi 2.4 and 5GHz force ON/OFF trigger ez_action_force_toggle_wifi24(); ez_action_force_toggle_wifi5(); break; case 4: // Safe removal all USB ez_action_usb_saferemoval(); break; case 5: // WAN down ez_action_wan_down(); break; case 6: // WAN reconnect ez_action_wan_reconnect(); break; case 7: // Router reboot sys_exit(); break; case 8: // Router shutdown prepare ez_action_shutdown(); break; case 9: // WAN up/down toggle ez_action_wan_toggle(); break; case 10: // Run user script (/opt/bin/on_wps.sh 2) ez_action_user_script(2); break; case 11: // Front LED toggle ez_action_led_toggle(); break; } }
static int btn_check_reset(void) { unsigned int i_button_value = !BTN_PRESSED; #if defined (BOARD_GPIO_LED_POWER) int i_led; #endif #if defined (BOARD_GPIO_BTN_WPS) /* check WPS pressed */ if (btn_count_wps > 0) return 0; #endif #if defined (BOARD_GPIO_BTN_WLTOG) /* check WLTOG pressed */ if (btn_count_wlt > 0) return 0; #endif if (cpu_gpio_get_pin(BOARD_GPIO_BTN_RESET, &i_button_value) < 0) return 0; if (i_button_value == BTN_PRESSED) { /* "RESET" pressed */ btn_count_reset++; #if defined (BOARD_GPIO_LED_POWER) /* flash power LED */ i_led = get_state_led_pwr(); if (btn_count_reset == 1) cpu_gpio_set_pin(BOARD_GPIO_LED_POWER, i_led); else if (btn_count_reset > BTN_RESET_WAIT_COUNT) { cpu_gpio_set_pin(BOARD_GPIO_LED_POWER, (btn_count_reset % 2) ? !i_led : i_led); dbg("You can release RESET button now!\n"); } #endif } else { /* "RESET" released */ int press_count = btn_count_reset; btn_count_reset = 0; if (press_count > BTN_RESET_WAIT_COUNT) { /* pressed >= 5sec, reset! */ wd_alarmtimer(0, 0); #if defined (BOARD_GPIO_LED_POWER) cpu_gpio_set_pin(BOARD_GPIO_LED_POWER, LED_OFF); #endif erase_nvram(); erase_storage(); sys_exit(); } else if (press_count > 0) { #if defined (BOARD_GPIO_LED_POWER) LED_CONTROL(BOARD_GPIO_LED_POWER, LED_ON); #endif } } return (i_button_value != BTN_PRESSED) ? 0 : 1; }
void shutdown_router(int use_reboot) { int is_ap_mode = get_ap_mode(); stop_misc(); stop_services(1); #if (BOARD_NUM_USB_PORTS > 0) stop_usb_printer_spoolers(); safe_remove_usb_device(0, NULL, !use_reboot); #endif #if defined (BOARD_GPIO_LED_USB) LED_CONTROL(BOARD_GPIO_LED_USB, LED_OFF); #endif stop_wan(); stop_services_lan_wan(); set_ipv4_forward(0); #if defined (BOARD_GPIO_LED_WAN) LED_CONTROL(BOARD_GPIO_LED_WAN, LED_OFF); #endif storage_save_time(10); write_storage_to_mtd(); stop_8021x_all(); stop_wifi_all_wl(); stop_wifi_all_rt(); stop_logger(); stop_lan(is_ap_mode); umount_rwfs_partition(); #if defined (BOARD_GPIO_LED_LAN) LED_CONTROL(BOARD_GPIO_LED_LAN, LED_OFF); #endif #if defined (BOARD_GPIO_LED_POWER) LED_CONTROL(BOARD_GPIO_LED_POWER, LED_OFF); #endif if (!use_reboot) module_smart_unload("rt_timer_wdg", 0); }
void ez_event_short(void) { int ez_action = nvram_get_int("ez_action_short"); alarmtimer(NORMAL_PERIOD, 0); LED_CONTROL(LED_POWER, LED_ON); switch (ez_action) { case 1: // WiFi radio ON/OFF trigger ez_action_toggle_wifi24(); ez_action_toggle_wifi5(); break; case 2: // WiFi 2.4GHz force ON/OFF trigger ez_action_force_toggle_wifi24(); break; case 3: // WiFi 5GHz force ON/OFF trigger ez_action_force_toggle_wifi5(); break; case 4: // WiFi 2.4 and 5GHz force ON/OFF trigger ez_action_force_toggle_wifi24(); ez_action_force_toggle_wifi5(); break; case 5: // Safe removal all USB ez_action_usb_saferemoval(); break; case 6: // WAN down ez_action_wan_down(); break; case 7: // WAN reconnect ez_action_wan_reconnect(); break; case 8: // WAN up/down toggle ez_action_wan_toggle(); break; case 9: // Run user script (/opt/bin/on_wps.sh 1) ez_action_user_script(1); break; case 10: // Front LED toggle ez_action_led_toggle(); break; } }
static void init_gpio_leds_buttons(void) { #if defined (BOARD_GPIO_LED_WAN) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_WAN, 1); LED_CONTROL(BOARD_GPIO_LED_WAN, LED_OFF); #endif #if defined (BOARD_GPIO_LED_LAN) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_LAN, 1); LED_CONTROL(BOARD_GPIO_LED_LAN, LED_OFF); #endif #if defined (BOARD_GPIO_LED_USB) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_USB, 1); LED_CONTROL(BOARD_GPIO_LED_USB, LED_OFF); #endif #if defined (BOARD_GPIO_LED_ALL) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_ALL, 1); LED_CONTROL(BOARD_GPIO_LED_ALL, LED_ON); #endif #if defined (BOARD_GPIO_LED_WIFI) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_WIFI, 1); LED_CONTROL(BOARD_GPIO_LED_WIFI, LED_ON); #endif #if defined (BOARD_GPIO_LED_POWER) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_POWER, 1); LED_CONTROL(BOARD_GPIO_LED_POWER, LED_ON); #endif #if defined (BOARD_GPIO_BTN_RESET) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_RESET, 0); #endif #if defined (BOARD_GPIO_BTN_WPS) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_WPS, 0); #endif #if defined (BOARD_GPIO_BTN_WLTOG) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_WLTOG, 0); #endif }
void ez_event_long(int btn_id) { int ez_action, ez_param = 2; #if defined (BOARD_GPIO_BTN_WLTOG) if (btn_id == 1) { ez_action = nvram_get_int("wlt_action_long"); ez_param = 4; } else #endif ez_action = nvram_get_int("ez_action_long"); #if defined (BOARD_GPIO_LED_POWER) int led_state = LED_ON; switch (ez_action) { case 7: // Router reboot case 8: // Router shutdown led_state = LED_OFF; break; case 11: // Front LED toggle led_state = -1; break; } if (led_state >= 0) LED_CONTROL(BOARD_GPIO_LED_POWER, led_state); #endif switch (ez_action) { case 1: // WiFi 2.4GHz force Enable/Disable trigger ez_action_change_wifi2(); break; case 2: // WiFi 5GHz force Enable/Disable trigger ez_action_change_wifi5(); break; case 3: // WiFi 2.4 & 5GHz force Enable/Disable trigger ez_action_change_wifi2(); ez_action_change_wifi5(); break; case 4: // Safe removal all USB ez_action_usb_saferemoval(); break; case 5: // WAN down ez_action_wan_down(); break; case 6: // WAN reconnect ez_action_wan_reconnect(); break; case 7: // Router reboot sys_exit(); break; case 8: // Router shutdown ez_action_shutdown(); break; case 9: // WAN up/down toggle ez_action_wan_toggle(); break; case 10: // Run user script ez_action_user_script(ez_param); break; case 11: // Front LED toggle ez_action_led_toggle(); break; case 12: // WiFi AP Guest 2.4GHz Enable/Disable trigger ez_action_change_guest_wifi2(); break; case 13: // WiFi AP Guest 5GHz Enable/Disable trigger ez_action_change_guest_wifi5(); break; case 14: // WiFi AP Guest 2.4 & 5GHz Enable/Disable trigger ez_action_change_guest_wifi2(); ez_action_change_guest_wifi5(); break; case 15: // Reset settings erase_nvram(); erase_storage(); sys_exit(); break; } }
void ez_event_short(int btn_id) { int ez_action, ez_param = 1; #if defined (BOARD_GPIO_BTN_WLTOG) if (btn_id == 1) { ez_action = nvram_get_int("wlt_action_short"); ez_param = 3; } else #endif ez_action = nvram_get_int("ez_action_short"); #if defined (BOARD_GPIO_LED_POWER) cpu_gpio_set_pin(BOARD_GPIO_LED_POWER, get_state_led_pwr()); if (ez_action != 10) { usleep(80000); LED_CONTROL(BOARD_GPIO_LED_POWER, LED_ON); } #endif switch (ez_action) { case 1: // WiFi radio ON/OFF trigger ez_action_toggle_wifi2(); ez_action_toggle_wifi5(); break; case 2: // WiFi 2.4GHz force Enable/Disable trigger ez_action_change_wifi2(); break; case 3: // WiFi 5GHz force Enable/Disable trigger ez_action_change_wifi5(); break; case 4: // WiFi 2.4 & 5GHz force Enable/Disable trigger ez_action_change_wifi2(); ez_action_change_wifi5(); break; case 5: // Safe removal all USB ez_action_usb_saferemoval(); break; case 6: // WAN down ez_action_wan_down(); break; case 7: // WAN reconnect ez_action_wan_reconnect(); break; case 8: // WAN up/down toggle ez_action_wan_toggle(); break; case 9: // Run user script ez_action_user_script(ez_param); break; case 10: // Front LED toggle ez_action_led_toggle(); break; case 11: // WiFi AP Guest 2.4GHz Enable/Disable trigger ez_action_change_guest_wifi2(); break; case 12: // WiFi AP Guest 5GHz Enable/Disable trigger ez_action_change_guest_wifi5(); break; case 13: // WiFi AP Guest 2.4 & 5GHz Enable/Disable trigger ez_action_change_guest_wifi2(); ez_action_change_guest_wifi5(); break; } }
static void nvram_convert_misc_values(void) { char buff[64]; int sw_mode; #if defined (BOARD_GPIO_BTN_ROUTER) int i_router_switch = BTN_PRESSED; if (cpu_gpio_get_pin(BOARD_GPIO_BTN_ROUTER, &i_router_switch) >= 0) { if (i_router_switch != BTN_PRESSED) nvram_set_int("sw_mode", 3); } #endif /* check router mode */ sw_mode = nvram_get_int("sw_mode"); if (sw_mode == 1) { /* Internet gateway mode */ nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 4) { /* Pure router mode */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 3) { /* AP mode (Ethernet convertor) */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Bridged"); } else { sw_mode = 1; nvram_set_int("sw_mode", 1); nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } #if defined (BOARD_GPIO_LED_ROUTER) if (sw_mode != 3) LED_CONTROL(BOARD_GPIO_LED_ROUTER, LED_ON); #endif #if BOARD_HAS_5G_RADIO if (strlen(nvram_wlan_get(1, "ssid")) < 1) nvram_wlan_set(1, "ssid", DEF_WLAN_5G_SSID); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get(1, "ssid")); nvram_wlan_set(1, "ssid2", buff); if (strlen(nvram_wlan_get(1, "wpa_mode")) < 1) nvram_wlan_set_int(1, "wpa_mode", 0); #if BOARD_HAS_5G_11AC if (strlen(nvram_wlan_get(1, "gmode")) < 1) nvram_wlan_set_int(1, "gmode", 4); // a/n/ac Mixed if (nvram_wlan_get_int(1, "HT_BW") > 2) nvram_wlan_set_int(1, "HT_BW", 2); #else if (strlen(nvram_wlan_get(1, "gmode")) < 1) nvram_wlan_set_int(1, "gmode", 2); // a/n Mixed if (nvram_wlan_get_int(1, "HT_BW") > 1) nvram_wlan_set_int(1, "HT_BW", 1); #endif if (nvram_wlan_get_int(1, "stream_tx") > BOARD_NUM_ANT_5G_TX) nvram_wlan_set_int(1, "stream_tx", BOARD_NUM_ANT_5G_TX); if (nvram_wlan_get_int(1, "stream_rx") > BOARD_NUM_ANT_5G_RX) nvram_wlan_set_int(1, "stream_rx", BOARD_NUM_ANT_5G_RX); #endif if (strlen(nvram_wlan_get(0, "ssid")) < 1) nvram_wlan_set(0, "ssid", DEF_WLAN_2G_SSID); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get(0, "ssid")); nvram_wlan_set(0, "ssid2", buff); if (strlen(nvram_wlan_get(0, "gmode")) < 1) nvram_wlan_set_int(0, "gmode", 2); // b/g/n Mixed if (nvram_wlan_get_int(0, "HT_BW") > 1) nvram_wlan_set_int(0, "HT_BW", 1); if (nvram_wlan_get_int(0, "stream_tx") > BOARD_NUM_ANT_2G_TX) nvram_wlan_set_int(0, "stream_tx", BOARD_NUM_ANT_2G_TX); if (nvram_wlan_get_int(0, "stream_rx") > BOARD_NUM_ANT_2G_RX) nvram_wlan_set_int(0, "stream_rx", BOARD_NUM_ANT_2G_RX); nvram_set_temp("ntpc_counter", "0000000000"); nvram_set_temp("login_timestamp", "0000000000"); nvram_set_int_temp("networkmap_fullscan", 0); nvram_set_int_temp("link_internet", 2); nvram_set_int_temp("link_wan", 0); nvram_set_int_temp("reload_svc_wl", 0); nvram_set_int_temp("reload_svc_rt", 0); nvram_set_int_temp("usb_hotplug_ms", 0); nvram_set_int_temp("usb_hotplug_lp", 0); nvram_set_int_temp("usb_hotplug_md", 0); nvram_set_int_temp("usb_unplug_lp", 0); nvram_set_int_temp("usb_unplug_md", 0); nvram_set_int_temp("usb_opt_start", 0); nvram_set_int_temp("l2tp_wan_t", 0); nvram_set_int_temp("l2tp_cli_t", 0); nvram_set_int_temp("l2tp_srv_t", 0); nvram_set_int_temp("vpnc_state_t", 0); nvram_set_temp("deferred_wanup_t", "0000000000"); nvram_set_temp("vpnc_dns_t", ""); nvram_set_temp("vpnc_dom_t", ""); nvram_set_temp("viptv_ifname", ""); nvram_set_temp(RSTATS_NVKEY_24, (sw_mode != 3) ? IFDESC_WAN : IFDESC_LAN); nvram_set_temp(RSTATS_NVKEY_DM, IFDESC_WAN); /* setup wan0 variables */ set_wan0_vars(); set_wan_unit_value(0, "uptime", "0000000000"); set_wan_unit_value(0, "dltime", "0000000000"); set_wan_unit_value(0, "bytes_rx", "00000000000000000000"); set_wan_unit_value(0, "bytes_tx", "00000000000000000000"); set_wan_unit_value(0, "ifname_t", ""); set_usb_modem_dev_wan(0, 0); reset_wan_vars(); /* setup lan variables */ reset_lan_vars(); reset_lan_temp(); time_zone_x_mapping(); }
static void init_gpio_leds_buttons(void) { /* hide WiFi 2G soft-led */ #if defined (BOARD_GPIO_LED_SW2G) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_SW2G, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_SW2G, LED_OFF); cpu_gpio_led_set(BOARD_GPIO_LED_SW2G, LED_BLINK_STAY_SHOW); #endif /* hide WiFi 5G soft-led */ #if defined (BOARD_GPIO_LED_SW5G) && (!defined (BOARD_GPIO_LED_SW2G) || (BOARD_GPIO_LED_SW5G != BOARD_GPIO_LED_SW2G)) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_SW5G, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_SW5G, LED_OFF); cpu_gpio_led_set(BOARD_GPIO_LED_SW5G, LED_BLINK_STAY_SHOW); #endif /* hide WAN soft-led */ #if defined (BOARD_GPIO_LED_WAN) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_WAN, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_WAN, LED_OFF); #endif /* hide LAN soft-led */ #if defined (BOARD_GPIO_LED_LAN) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_LAN, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_LAN, LED_OFF); #endif /* hide USB soft-led */ #if defined (BOARD_GPIO_LED_USB) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_USB, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_USB, LED_OFF); cpu_gpio_led_set(BOARD_GPIO_LED_USB, LED_BLINK_STAY_HIDE); #endif /* hide ROUTER soft-led */ #if defined (BOARD_GPIO_LED_ROUTER) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_ROUTER, 1); cpu_gpio_set_pin(BOARD_GPIO_LED_ROUTER, LED_OFF); #endif /* enable common led trigger */ #if defined (BOARD_GPIO_LED_ALL) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_ALL, 1); LED_CONTROL(BOARD_GPIO_LED_ALL, LED_ON); #endif /* allow WiFi hw-led */ #if defined (BOARD_GPIO_LED_WIFI) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_WIFI, 1); LED_CONTROL(BOARD_GPIO_LED_WIFI, LED_ON); #endif /* show PWR soft-led */ #if defined (BOARD_GPIO_LED_POWER) cpu_gpio_set_pin_direction(BOARD_GPIO_LED_POWER, 1); LED_CONTROL(BOARD_GPIO_LED_POWER, LED_ON); #endif /* enable USB port 5V power */ #if defined (BOARD_GPIO_PWR_USB) cpu_gpio_set_pin_direction(BOARD_GPIO_PWR_USB, 1); cpu_gpio_set_pin(BOARD_GPIO_PWR_USB, BOARD_GPIO_PWR_USB_ON); #endif #if defined (BOARD_GPIO_PWR_USB2) cpu_gpio_set_pin_direction(BOARD_GPIO_PWR_USB2, 1); cpu_gpio_set_pin(BOARD_GPIO_PWR_USB2, BOARD_GPIO_PWR_USB_ON); #endif /* init BTN Reset */ #if defined (BOARD_GPIO_BTN_RESET) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_RESET, 0); #endif /* init BTN WPS */ #if defined (BOARD_GPIO_BTN_WPS) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_WPS, 0); #endif /* init BTN FN1 */ #if defined (BOARD_GPIO_BTN_FN1) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_FN1, 0); #endif /* init BTN FN2 */ #if defined (BOARD_GPIO_BTN_FN2) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_FN2, 0); #endif /* init BTN ROUTER */ #if defined (BOARD_GPIO_BTN_ROUTER) cpu_gpio_set_pin_direction(BOARD_GPIO_BTN_ROUTER, 0); #endif }
void btn_check(void) { #ifdef BTN_SETUP if (btn_pressed_setup == BTNSETUP_NONE) { #endif #ifdef SR3 if (!ralink_gpio_read_bit(BTN_RESET)) // reset button is on low phase #else if (0) #endif { /*--------------- Add BTN_RST MFG test ------------------------*/ if (!nvram_match("asus_mfg", "0")) { nvram_set("btn_rst", "1"); } else { if (!btn_pressed) { btn_pressed = 1; btn_count = 0; alarmtimer(0, URGENT_PERIOD); } else { /* Whenever it is pushed steady */ if (++btn_count > RESET_WAIT_COUNT) { dbg("You can release RESET button now!\n"); btn_pressed = 2; } if (btn_pressed == 2) { /* 0123456789 */ /* 0011100111 */ if ((btn_count % 10) < 1 || ((btn_count % 10) > 4 && (btn_count % 10) < 7)) LED_CONTROL(LED_POWER, LED_OFF); else LED_CONTROL(LED_POWER, LED_ON); } } } // end BTN_RST MFG test } else { if (btn_pressed == 1) { btn_count = 0; btn_pressed = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); } else if (btn_pressed == 2) { LED_CONTROL(LED_POWER, LED_OFF); alarmtimer(0, 0); system("erase /dev/mtd1"); // kill(1, SIGTERM); sys_exit(); } } #ifdef BTN_SETUP } if (btn_pressed != 0) return; if (btn_pressed_setup < BTNSETUP_START) { if (!ralink_gpio_read_bit(BTN_WPS) && !no_need_to_start_wps(0)) { /* Add BTN_EZ MFG test */ if (!nvram_match("asus_mfg", "0")) { nvram_set("btn_ez", "1"); } else { if (btn_pressed_setup == BTNSETUP_NONE) { btn_pressed_setup = BTNSETUP_DETECT; btn_count_setup = 0; alarmtimer(0, RUSHURGENT_PERIOD); } else { /* Whenever it is pushed steady */ if (++btn_count_setup > SETUP_WAIT_COUNT) { if (!nvram_match("sw_mode_ex", "3")) { stop_wsc(); stop_wsc_2g(); nvram_set("wps_enable", "0"); #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix #endif btn_pressed_setup = BTNSETUP_START; btn_count_setup = 0; btn_count_setup_second = 0; #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) start_wsc_pbc(); else start_wsc_pbc_2g(); #else #if 0 start_wsc_pbc_both(); #else nvram_set("wps_band", "1"); start_wsc_pbc_2g(); #endif #endif WscStatus_old = -1; WscStatus_old_2g = -1; wsc_timeout = 120*20; } } } } // end BTN_EZ MFG test } else if (btn_pressed_setup == BTNSETUP_DETECT) { btn_pressed_setup = BTNSETUP_NONE; btn_count_setup = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); } } else { if (!ralink_gpio_read_bit(BTN_WPS) && !no_need_to_start_wps(0)) { /* Whenever it is pushed steady, again... */ if (++btn_count_setup_second > SETUP_WAIT_COUNT) { if (!nvram_match("sw_mode_ex", "3")) { stop_wsc(); stop_wsc_2g(); nvram_set("wps_enable", "0"); #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix #endif dbg("pushed again...\n"); btn_pressed_setup = BTNSETUP_START; btn_count_setup_second = 0; #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) start_wsc_pbc(); else start_wsc_pbc_2g(); #else #if 0 start_wsc_pbc_both(); #else nvram_set("wps_band", "1"); start_wsc_pbc_2g(); #endif #endif WscStatus_old = -1; WscStatus_old_2g = -1; wsc_timeout = 120*20; } #if 0 else { dbg("pushed again... do nothing...\n"); /* btn_pressed_setup = BTNSETUP_START; btn_count_setup_second = 0; sta_wps_pbc(); wsc_timeout = 120*20; */ } #endif } } struct _WSC_CONFIGURED_VALUE wsc_value; int int_stop_wps_led = 0; int WscStatus = -1; int WscStatus_2g = -1; if (nvram_match("wps_mode", "1")) // PIN { if (nvram_match("wps_band", "0")) WscStatus = getWscStatus(); else WscStatus = getWscStatus_2g(); } else // PBC { WscStatus = getWscStatus(); WscStatus_2g = getWscStatus_2g(); } if (WscStatus_old != WscStatus) { WscStatus_old = WscStatus; dbg("WscStatus: %d\n", WscStatus); } if (nvram_match("wps_mode", "2") && WscStatus_old_2g != WscStatus_2g) { WscStatus_old_2g = WscStatus_2g; dbg("WscStatus_2g: %d\n", WscStatus_2g); } if (WscStatus == 2 || WscStatus_2g == 2)// Wsc Process failed { if (g_isEnrollee) ; // go on monitoring else { int_stop_wps_led = 1; dbg("%s", "Error occured. Is the PIN correct?\n"); } } // Driver 1.9 supports AP PBC Session Overlapping Detection. if (WscStatus == 0x109 /* PBC_SESSION_OVERLAP */ || WscStatus_2g == 0x109) { dbg("PBC_SESSION_OVERLAP\n"); int_stop_wps_led = 1; } if (nvram_match("wps_mode", "1")) // PIN { if (WscStatus == 34 /* Configured*/) { /* dbg("getWscProfile()\n"); getWscProfile(WIF, &wsc_value, sizeof(WSC_CONFIGURED_VALUE)); */ if (!g_wsc_configured) g_wsc_configured = 1; int_stop_wps_led = 1; g_isEnrollee = 0; } } else // PBC { if (WscStatus == 34 /* Configured*/ || WscStatus_2g == 34) { if (!g_wsc_configured) g_wsc_configured = 1; int_stop_wps_led = 1; g_isEnrollee = 0; } } if (int_stop_wps_led || --wsc_timeout == 0) { if(!nvram_match("sw_mode_ex", "3")) // not AP mode { #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1");// psp fix #endif wsc_timeout = 0; btn_pressed_setup = BTNSETUP_NONE; btn_count_setup = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) // if (nvram_match("wps_band", "0")) stop_wsc(); // psp fix // else stop_wsc_2g(); // psp fix nvram_set("wps_enable", "0"); // psp fix #endif } return; } ++btn_count_setup; btn_count_setup = (btn_count_setup % 20); /* 0123456789 */ /* 1010101010 */ if ((btn_count_setup % 2) == 0 && (btn_count_setup > 10)) LED_CONTROL(LED_POWER, LED_ON); else LED_CONTROL(LED_POWER, LED_OFF); } #endif }
static void catch_sig(int sig) { if (sig == SIGUSR1) { dbg("[watchdog] Catch SIGUSR1 for rc_service\n"); if (nvram_get("rc_service")) service_handle(); } else if (sig == SIGUSR2) { // dbg("[watchdog] Catch Reset to Default Signal 2\n"); } else if (sig == SIGTSTP && !nvram_match("sw_mode_ex", "3")) { if (nvram_match("wps_oob_flag", "1")) { #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) if (nvram_match("wl_radio_x", "0")) return; else if (nvram_match("rt_radio_x", "0")) return; #else #if 0 if (nvram_match("wl_radio_x", "0") || nvram_match("rt_radio_x", "0")) #else if (nvram_match("wl_radio_x", "0") && nvram_match("rt_radio_x", "0")) #endif return; #endif #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix count_to_stop_wps = 0; #endif nvram_set("wps_oob_flag", "0"); wsc_timeout = 0; btn_pressed_setup = BTNSETUP_NONE; btn_count_setup = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) wps_oob(); else wps_oob_2g(); #else wps_oob_both(); #endif WscStatus_old = -1; WscStatus_old_2g = -1; } else if (nvram_match("wps_start_flag", "3") || nvram_match("wps_start_flag", "4")) // let the SW push button be the same as the HW push button { #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) if (nvram_match("wl_radio_x", "0")) return; else if (nvram_match("rt_radio_x", "0")) return; #else #if 0 if (nvram_match("wl_radio_x", "0") || nvram_match("rt_radio_x", "0")) #else if (nvram_match("wl_radio_x", "0") && nvram_match("rt_radio_x", "0")) #endif return; #endif // if (nvram_match("wl_radio_x", "1")) stop_wsc(); // if (nvram_match("rt_radio_x", "1")) stop_wsc_2g(); nvram_set("wps_enable", "0"); #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix count_to_stop_wps = 0; if (nvram_match("wps_start_flag", "3")) nvram_set("wps_band", "1"); else nvram_set("wps_band", "0"); #endif nvram_set("wps_start_flag", "0"); alarmtimer(NORMAL_PERIOD, 0); btn_pressed_setup = BTNSETUP_START; btn_count_setup = 0; btn_count_setup_second = 0; #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) start_wsc_pbc(); else start_wsc_pbc_2g(); #else #if 0 start_wsc_pbc_both(); #else if (nvram_match("wps_band", "1")) start_wsc_pbc_2g(); else start_wsc_pbc(); #endif #endif WscStatus_old = -1; WscStatus_old_2g = -1; wsc_timeout = 120*20; alarmtimer(0, RUSHURGENT_PERIOD); } else if (nvram_match("wps_enable", "0")) { #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix count_to_stop_wps = 0; #endif wsc_timeout = 1; btn_pressed_setup = BTNSETUP_NONE; btn_count_setup = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); // if (nvram_match("wps_band", "0")) // if (nvram_match("wl_radio_x", "1")) stop_wsc(); // else // if (nvram_match("rt_radio_x", "1")) stop_wsc_2g(); } else if (nvram_match("wps_start_flag", "1")) { if (nvram_match("wps_band", "0")) if (nvram_match("wl_radio_x", "0")) return; else if (nvram_match("rt_radio_x", "0")) return; #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix count_to_stop_wps = 15; #endif nvram_set("wps_start_flag", "0"); wsc_timeout = 1; btn_pressed_setup = BTNSETUP_NONE; btn_count_setup = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); WscStatus_old = -1; WscStatus_old_2g = -1; if (nvram_match("wps_band", "0")) start_wsc(); else start_wsc_2g(); } else if (nvram_match("wps_start_flag", "2")) { if (nvram_match("wps_mode", "1")) { if (nvram_match("wps_band", "0")) if (nvram_match("wl_radio_x", "0")) return; else if (nvram_match("rt_radio_x", "0")) return; } else { #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) if (nvram_match("wl_radio_x", "0")) return; else if (nvram_match("rt_radio_x", "0")) return; #else #if 0 if (nvram_match("wl_radio_x", "0") || nvram_match("rt_radio_x", "0")) #else if (nvram_match("wl_radio_x", "0") && nvram_match("rt_radio_x", "0")) #endif return; #endif } #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) nvram_set("wps_triggered", "1"); // psp fix count_to_stop_wps = 0; #endif nvram_set("wps_start_flag", "0"); alarmtimer(NORMAL_PERIOD, 0); btn_pressed_setup = BTNSETUP_START; btn_count_setup = 0; if (nvram_match("wps_mode", "1")) { if (nvram_match("wps_pin_web", "")) { if (nvram_match("wps_band", "0")) wps_pin("0"); else wps_pin_2g("0"); } else { if (nvram_match("wps_band", "0")) wps_pin(nvram_safe_get("wps_pin_web")); else wps_pin_2g(nvram_safe_get("wps_pin_web")); } } else { #if defined (W7_LOGO) || defined (WIFI_LOGO) if (nvram_match("wps_band", "0")) wps_pbc(); else wps_pbc_2g(); #else #if 0 wps_pbc_both(); #else nvram_set("wps_band", "1"); wps_pbc_2g(); #endif #endif } WscStatus_old = -1; WscStatus_old_2g = -1; wsc_timeout = 120*20; alarmtimer(0, RUSHURGENT_PERIOD); } } else if (sig == SIGTTIN) { wsc_user_commit(); } }
static void btn_check_reset(void) { unsigned int i_button_value = 1; #if defined(BTN_WPS) // check WPS pressed if (btn_pressed_wps != 0) return; #endif if (cpu_gpio_get_pin(BTN_RESET, &i_button_value) < 0) return; // reset button is on low phase if (!i_button_value) { // "RESET" pressed if (!btn_pressed_reset) { btn_pressed_reset = 1; btn_count_reset = 0; alarmtimer(0, URGENT_PERIOD); } else { /* Whenever it is pushed steady */ if (++btn_count_reset > RESET_WAIT_COUNT) { dbg("You can release RESET button now!\n"); btn_pressed_reset = 2; } if (btn_pressed_reset == 2) { if (btn_count_reset % 2) cpu_gpio_set_pin(LED_POWER, LED_OFF); else cpu_gpio_set_pin(LED_POWER, LED_ON); } } } else { // "RESET" released if (btn_pressed_reset == 1) { // pressed < 5sec, cancel btn_count_reset = 0; btn_pressed_reset = 0; LED_CONTROL(LED_POWER, LED_ON); alarmtimer(NORMAL_PERIOD, 0); } else if (btn_pressed_reset == 2) { // pressed >= 5sec, reset! LED_CONTROL(LED_POWER, LED_OFF); alarmtimer(0, 0); erase_nvram(); erase_storage(); sys_exit(); } } }