Ejemplo n.º 1
0
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;
}
Ejemplo n.º 3
0
 void erasePersistentStorage()
 {
     erase_storage();
 }
Ejemplo n.º 4
0
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;
    }
}
Ejemplo n.º 5
0
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();
		}
	}
}