uint8_t saveSettings(STORAGE& storage, const EncoderChannel& channel, int& addr) {
  eepromWriteInt(storage, addr, channel.average);
  addr += 2;
  eepromWriteInt(storage, addr, channel.minValue);
  addr += 2;
  eepromWriteInt(storage, addr, channel.maxValue);
  addr += 2;
  return true;
}
//Description: Writes an unsigned long value to the specified addres in EEPROM
// The value will be stored in Big Endian format.
void eepromWriteLong(unsigned int uiAddress, unsigned long ulData)
{
	unsigned int partialValue=0;
	partialValue = ulData >> 16;	//Get the 2 high bytes from the data to be stored.
	eepromWriteInt(uiAddress, partialValue);
	
	partialValue = (unsigned int)ulData;	//Get the 2 lower bytes from the data to be stored.
	eepromWriteInt(uiAddress + 2, partialValue);
}
void Settings::save()
{
	ssidLen = ssid.length ();
	passwordLen = password.length ();
	EEPROM.write ( ssidLenAdr, ssidLen );
	EEPROM.write ( passwordLenAdr, passwordLen );
	
	for ( int i = 0; i < ssidLen; i++ )
		{
			EEPROM.write ( ssidAdr + i, ssid[i] );
		}
		
	for ( int i = 0; i < passwordLen; i++ )
		{ EEPROM.write ( passwordAdr + i, password[i] ); }
		
	EEPROM.write ( ssidHiddenAdr, ssidHidden );
	EEPROM.write ( apChannelAdr, apChannel );
	EEPROM.write ( isMacAPRandAdr, isMacAPRand );
	
	for ( int i = 0; i < 6; i++ )
		{ EEPROM.write ( macAPAdr + i, macAP._get ( i ) ); }
		
	EEPROM.write ( wifiClientAdr, wifiClient );
	ssidClientLen = ssidClient.length ();
	EEPROM.write ( ssidClientLenAdr, ssidClientLen );
	
	for ( int i = 0; i < ssidClientLen; i++ )
		{ EEPROM.write ( ssidClientAdr + i, ssidClient[i] ); }
		
	passwordClientLen = passwordClient.length ();
	EEPROM.write ( passwordClientLenAdr, passwordClientLen );
	
	for ( int i = 0; i < passwordClientLen; i++ )
		{ EEPROM.write ( passwordClientAdr + i, passwordClient[i] ); }
		
	hostnameLen = hostname.length ();
	EEPROM.write ( hostnameLenAdr, hostnameLen );
	
	for ( int i = 0; i < hostnameLen; i++ )
		{ EEPROM.write ( hostnameAdr + i, hostname[i] ); }
		
	EEPROM.write ( apScanHiddenAdr, apScanHidden );
	EEPROM.write ( deauthReasonAdr, deauthReason );
	eepromWriteInt ( attackTimeoutAdr, attackTimeout );
	EEPROM.write ( attackPacketRateAdr, attackPacketRate );
	EEPROM.write ( clientScanTimeAdr, clientScanTime );
	EEPROM.write ( useLedAdr, useLed );
	EEPROM.write ( channelHopAdr, channelHop );
	EEPROM.write ( multiAPsAdr, multiAPs );
	EEPROM.write ( multiAttacksAdr, multiAttacks );
	EEPROM.write ( checkNumAdr, checkNum );
	eepromWriteInt ( macIntervalAdr, macInterval );
	EEPROM.write ( beaconIntervalAdr, beaconInterval );
	EEPROM.write ( ledPinAdr, ledPin );
	EEPROM.write ( darkModeAdr, darkMode );
	EEPROM.write ( cacheAdr, cache );
	EEPROM.write ( serverCacheAdr, serverCache );
	EEPROM.write ( newUserAdr, newUser );
	EEPROM.write ( detectorChannelAdr, detectorChannel );
	EEPROM.write ( detectorAllChannelsAdr, detectorAllChannels );
	EEPROM.write ( alertPinAdr, alertPin );
	EEPROM.write ( invertAlertPinAdr, invertAlertPin );
	EEPROM.write ( detectorScanTimeAdr, detectorScanTime );
	pinNamesLen = pinNames.length ();
	EEPROM.write ( pinNamesLenAdr, pinNamesLen );
	
	for ( int i = 0; i < pinNamesLen; i++ )
		{ EEPROM.write ( pinNamesAdr + i, pinNames[i] ); }
		
	EEPROM.commit ();
	
	/*int i=0;
	  int pinNumber = 3;
	  Serial.println("START");
	  while (i < 6)
	  {
	  int pinState = pins[i++];
	  if (pinState == 49) {
	  Serial.println("Making high: " + (String)pinNumber);
	  }
	  Serial.println((String)pinNumber + (String)": " + pinState);
	  pinNumber++;
	  }
	  Serial.println("END");*/
	if ( debug )
		{
			info ();
			Serial.println ( "[I] Settings saved!" );
		}
}
Exemple #4
0
void deviceEepromHandleRawData(char commandHeader, InputStream* inputStream, OutputStream* outputStream) {
    _deviceEepromCheckInitialized();
    if (commandHeader == COMMAND_RELOAD_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_RELOAD_EEPROM);
        eeprom_->eepromLoad(eeprom_);
    }
    else if (commandHeader == COMMAND_DUMP_TO_FILE_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_DUMP_TO_FILE_EEPROM);
        eeprom_->eepromDump(eeprom_);
    }
    else if (commandHeader == COMMAND_DUMP_TO_LOG_OUTPUT_STREAM_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_DUMP_TO_LOG_OUTPUT_STREAM_EEPROM);
        OutputStream* debugOutputStream = getInfoOutputStreamLogger();
        dumpEepromToOutputStream(eeprom_, debugOutputStream, 0, eeprom_->maxIndex);
    }
	else if (commandHeader == COMMAND_DUMP_PARTIAL_CONTENT_TO_LOG_OUTPUT_STREAM_EEPROM) {
		ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_DUMP_PARTIAL_CONTENT_TO_LOG_OUTPUT_STREAM_EEPROM);
		unsigned long startAddress = readHex4(inputStream);
		checkIsSeparator(inputStream);
		unsigned long length = readHex4(inputStream);
		OutputStream* debugOutputStream = getInfoOutputStreamLogger();
		dumpEepromToOutputStream(eeprom_, debugOutputStream, startAddress, startAddress + length);
	}
    else if (commandHeader == COMMAND_CLEAR_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_CLEAR_EEPROM);
        unsigned long startAddress = readHex4(inputStream);
        checkIsSeparator(inputStream);
        unsigned long endAddress = readHex4(inputStream);
        clearEeprom(eeprom_, startAddress, endAddress);
    }
    else if (commandHeader == COMMAND_READ_BYTE_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_READ_BYTE_EEPROM);
        unsigned long address = readHex4(inputStream);
        char value = eeprom_->eepromReadChar(eeprom_, address);
        appendHex2(outputStream, value);
    }
    else if (commandHeader == COMMAND_READ_INT_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_READ_INT_EEPROM);
        unsigned long address = readHex4(inputStream);
        int value = eepromReadInt(eeprom_, address);
        appendHex4(outputStream, value);
    }
    else if (commandHeader == COMMAND_WRITE_BYTE_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_WRITE_BYTE_EEPROM);
        unsigned long address = readHex4(inputStream);
        checkIsSeparator(inputStream);
        char data = readHex2(inputStream);
        eeprom_->eepromWriteChar(eeprom_, address, data);
    }
    else if (commandHeader == COMMAND_WRITE_INT_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_WRITE_INT_EEPROM);
        unsigned long address = readHex4(inputStream);
        checkIsSeparator(inputStream);
        int data = readHex4(inputStream);
        eepromWriteInt(eeprom_, address, data);
    }
    else if (commandHeader == COMMAND_READ_BLOCK_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_READ_BLOCK_EEPROM);
        unsigned long address = readHex4(inputStream);
        int index;
        for (index = 0; index < EEPROM_DEVICE_READ_BLOCK_LENGTH; index++) {
            char value = eeprom_->eepromReadChar(eeprom_, address + index);
            if (index > 0) {
                appendSeparator(outputStream);
            }
            appendHex2(outputStream, value);
        }
    }
    else if (commandHeader == COMMAND_WRITE_BLOCK_EEPROM) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_WRITE_BLOCK_EEPROM);
        unsigned long address = readHex4(inputStream);
        char data;
        int index;
        for (index = 0; index < EEPROM_DEVICE_WRITE_BLOCK_LENGTH; index++) {
            checkIsSeparator(inputStream);
            data = readHex2(inputStream);
            eeprom_->eepromWriteChar(eeprom_, address + index, data);
        }
    }
    else if (commandHeader == COMMAND_INTENSIVE_TEST) {
        ackCommand(outputStream, EEPROM_DEVICE_HEADER, COMMAND_INTENSIVE_TEST);
        unsigned long address = readHex4(inputStream);
        checkIsSeparator(inputStream);
        unsigned long length = readHex4(inputStream);
        unsigned int errorCount = 0;
        unsigned int index;
        // Writes
        for (index = 0; index < length; index++) {
            unsigned char value = (unsigned char) index;
            eeprom_->eepromWriteChar(eeprom_, address + index, value);
        }
        // Reads
        for (index = 0; index < length; index++) {
            unsigned char value = (unsigned char) eeprom_->eepromReadChar(eeprom_, address + index);
            if (value != (unsigned char)index) {
                if (errorCount < 255) {
                    errorCount++;
                }
            }
        }
        appendHex4(outputStream, errorCount);
    }
}