Stefan Schuermans
initial commit after making CF identify work
Stefan Schuermans commited e8658d5 at 2012-04-15 19:57:57
/* flaneth - flash and ethernet - dartboard mod
* version 0.1 date 2008-11-09
* Copyright (C) 2007-2008 Stefan Schuermans <stefan@schuermans.info>
* Copyleft: GNU public license V2 - http://www.gnu.org/copyleft/gpl.html
* a BlinkenArea project - http://www.blinkenarea.org/
*/
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include "config.h"
#include "debug.h"
#include "eeprom.h"
#include "macros.h"
#include "rtl8019.h"
// flags for what needs to be written to the EEPROM
unsigned char EepromNeedWrite = 0x00; // (extern)
// writing what where
unsigned char EepromWriteFlags = 0; // some flags
#define EepromWriteFlagActive 0x01 // if writing something to EEPROM
#define EepromWriteFlagCheck 0x02 // if writing check byte to EEPROM
unsigned char * pEepromWriteSrc; // pointer to source data
unsigned short EepromWriteDestAddr; // destination address in EEPROM
unsigned char EepromWriteCnt; // number of bytes still to write
// memory layout of EEPROM
// - every byte B is stored as B, ~B for data safety
// - so everythings needs double space
#define EEPROM_ADDR_MAC 0
#define EEPROM_ADDR_IP (EEPROM_ADDR_MAC + 2 * sizeof( ConfigMac ))
#define EEPROM_ADDR_MASK (EEPROM_ADDR_IP + 2 * sizeof( ConfigIp ))
#define EEPROM_ADDR_GW (EEPROM_ADDR_MASK + 2 * sizeof( ConfigMask ))
#define EEPROM_ADDR_S8P_PORT (EEPROM_ADDR_GW + 2 * sizeof( ConfigGw ))
#define EEPROM_ADDR_S8P_KEY (EEPROM_ADDR_S8P_PORT + 2 * sizeof( ConfigS8pPort ))
#define EEPROM_ADDR_HTTP_PORT (EEPROM_ADDR_S8P_KEY + 2 * sizeof( ConfigS8pKey ))
#define EEPROM_ADDR_DEF_OUT (EEPROM_ADDR_HTTP_PORT + 2 * sizeof( ConfigHttpPort ))
#define EEPROM_ADDR_FreeFromHere (EEPROM_ADDR_DEF_OUT + 2 * sizeof( ConfigDefOut ))
// get configuration from EEPROM - helper function
// checks data in EEPROM
// gets data from EEPROM
// returns 0x00 if successful
static inline unsigned char EepromGetConfigHelp( unsigned short SrcAddr, unsigned char * pDest, unsigned char Len )
{
unsigned char i, b;
// check data in EEPROM
EEAR = SrcAddr;
for( i = 0; i < Len; i++ )
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX