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; }
uint32_t write_storage(teDATASTORAGE stype, uint32_t addr, void *data, uint16_t size) { uint32_t ret_len; switch(stype) { case STORAGE_MAC: #ifndef __USE_EXT_EEPROM__ erase_storage(STORAGE_MAC); ret_len = write_flash(DEVICE_MAC_ADDR, data, 6); // internal data flash for configuration data (DAT0/1) #else //erase_storage(STORAGE_MAC); ret_len = write_eeprom(convert_eeprom_addr(DEVICE_MAC_ADDR), data, 6); // external eeprom for configuration data #ifdef _EEPROM_DEBUG_ dump_eeprom_block(convert_eeprom_addr(DEVICE_MAC_ADDR)); #endif #endif break; case STORAGE_CONFIG: #ifndef __USE_EXT_EEPROM__ // flash erase_storage(STORAGE_CONFIG); ret_len = write_flash(DEVICE_CONFIG_ADDR, data, size); // internal data flash for configuration data (DAT0/1) #else //erase_storage(STORAGE_CONFIG); ret_len = write_eeprom(convert_eeprom_addr(DEVICE_CONFIG_ADDR), data, size); // external eeprom for configuration data #ifdef _EEPROM_DEBUG_ dump_eeprom_block(convert_eeprom_addr(DEVICE_CONFIG_ADDR)); #endif #endif break; case STORAGE_APP_MAIN: ret_len = write_flash(addr, data, size); break; case STORAGE_APP_BACKUP: ret_len = write_flash(addr, data, size); break; default: break; } return ret_len; }
void erasePersistentStorage() { erase_storage(); }
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; } }
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(); } } }