AnalogKeypad::AnalogKeypad(int up, int down, int onOff, int next, int faster, int slower, int pin)
{
    bDimDown = false;
    bDimUp = false;
    bFaster = false;
    bNext = false;
    bOnOff = false;
    bSlower = false;
    iLongPress = 0;

    setLedPin(5);  //default LED pin
    setKeyValues(up, down, onOff, next, faster, slower, pin);
}
void Settings::load()
{
	if ( EEPROM.read ( checkNumAdr ) != 0 &&
		EEPROM.read ( checkNumAdr ) != checkNum )
		{
			Serial.println ( "" );
			Serial.println ( "[E] ERROR: Checknum mismatch! Current checknum=" +
				( String ) checkNum + "; stored checknum=" +
				( String ) EEPROM.read ( checkNumAdr ) );
			Serial.println ( "" );
			reset ();
			return ;
		}
		
	else
		{
			Serial.println ( "" );
			Serial.println ( "[+] Current checknum=" + ( String ) checkNum +
				"; stored checknum=" +
				( String ) EEPROM.read ( checkNumAdr ) );
			Serial.println ( "" );
		}
		
	ssidLen = EEPROM.read ( ssidLenAdr );
	passwordLen = EEPROM.read ( passwordLenAdr );
	
	if ( ssidLen < 1 || ssidLen > 32 || passwordLen < 8 && passwordLen != 0 ||
		passwordLen > 32 )
		{
			reset ();
			return ;
		}
		
	ssid = "";
	password = "";
	
	for ( int i = 0; i < ssidLen; i++ )
		{ ssid += ( char ) EEPROM.read ( ssidAdr + i ); }
		
	for ( int i = 0; i < passwordLen; i++ )
		{ password += ( char ) EEPROM.read ( passwordAdr + i ); }
		
	ssidHidden = ( bool ) EEPROM.read ( ssidHiddenAdr );
	wifiClient = ( bool ) EEPROM.read ( wifiClientAdr );
	ssidClientLen = EEPROM.read ( ssidClientLenAdr );
	
	for ( int i = 0; i < ssidClientLen; i++ )
		{ ssidClient += ( char ) EEPROM.read ( ssidClientAdr + i ); }
		
	passwordClientLen = EEPROM.read ( passwordClientLenAdr );
	
	for ( int i = 0; i < passwordClientLen; i++ )
		{ passwordClient += ( char ) EEPROM.read ( passwordClientAdr + i ); }
		
	hostnameLen = EEPROM.read ( hostnameLenAdr );
	
	for ( int i = 0; i < hostnameLen; i++ )
		{ hostname += ( char ) EEPROM.read ( hostnameAdr + i ); }
		
	if ( ( int ) EEPROM.read ( apChannelAdr ) >= 1 &&
		( int ) EEPROM.read ( apChannelAdr ) <= 14 )
		{ apChannel = ( int ) EEPROM.read ( apChannelAdr ); }
		
	else
		{ apChannel = 1; }
		
	for ( int i = 0; i < 6; i++ )
		 macAP.setAt ( ( uint8_t ) EEPROM.read ( macAPAdr + i ), i ); 
		
	if ( !macAP.valid () )
		{
			macAP.set ( defaultMacAP );
		}
		
	isMacAPRand = ( bool ) EEPROM.read ( isMacAPRandAdr );
	apScanHidden = ( bool ) EEPROM.read ( apScanHiddenAdr );
	deauthReason = EEPROM.read ( deauthReasonAdr );
	attackTimeout = eepromReadInt ( attackTimeoutAdr );
	attackPacketRate = EEPROM.read ( attackPacketRateAdr );
	clientScanTime = EEPROM.read ( clientScanTimeAdr );
	useLed = ( bool ) EEPROM.read ( useLedAdr );
	channelHop = ( bool ) EEPROM.read ( channelHopAdr );
	multiAPs = ( bool ) EEPROM.read ( multiAPsAdr );
	multiAttacks = ( bool ) EEPROM.read ( multiAttacksAdr );
	macInterval = eepromReadInt ( macIntervalAdr );
	beaconInterval = ( bool ) EEPROM.read ( beaconIntervalAdr );
	setLedPin ( ( int ) EEPROM.read ( ledPinAdr ) );
	isSettingsLoaded = 1;
	darkMode = ( bool ) EEPROM.read ( darkModeAdr );
	cache = ( bool ) EEPROM.read ( cacheAdr );
	serverCache = ( int ) EEPROM.read ( serverCacheAdr );
	newUser = ( bool ) EEPROM.read ( newUserAdr );
	detectorChannel = ( int ) EEPROM.read ( detectorChannelAdr );
	detectorAllChannels = ( bool ) EEPROM.read ( detectorAllChannelsAdr );
	alertPin = ( int ) EEPROM.read ( alertPinAdr );
	invertAlertPin = ( bool ) EEPROM.read ( invertAlertPinAdr );
	detectorScanTime = ( int ) EEPROM.read ( detectorScanTimeAdr );
	pinNamesLen = EEPROM.read ( pinNamesLenAdr );
	pinNames = "";
	
	for ( int i = 0; i < pinNamesLen; i++ )
		{ pinNames += ( char ) EEPROM.read ( pinNamesAdr + i ); }
}