Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 525 → Rev 526

/trunk/eeprom.c
61,6 → 61,7
#include "timer1.h"
#include "eeprom.h"
#include "led.h"
#include "crc16.h"
 
 
 
96,7 → 97,7
EEPROM_Result_t EEPROM_Transfer(u8 Direction, u16 Address, u8 *pData, u16 DataLen)
{
u16 i;
u8 retry = 0;
u8 retry = 0;
EEPROM_Result_t retval = EEPROM_ERROR_UNKNOWN;
 
if(((u32)Address + (u32)DataLen) >= (EEPROM_SIZE - 1))
194,7 → 195,7
 
while(DataLen > 0)
{
if(DataLen > I2C_BUFFER_LEN) RxLen = I2C_BUFFER_LEN;
if(DataLen > I2C_BUFFER_LEN - 2) RxLen = I2C_BUFFER_LEN - 2;
else RxLen = DataLen;
retval = EEPROM_Transfer(EEPROM_READ, Address+AdrOffset, &(pData[AdrOffset]), RxLen);
221,3 → 222,72
else UART1_PutString("failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return(retval);
}
 
 
void WriteLicenseToEEPROM(u8 kompatibel)
{
// u8 msg[150];
u16 crc,crc2;
EEPROM_Result_t retval = EEPROM_ERROR_UNKNOWN;
crc = kompatibel;
crc += CRC16(LicensePtr,LICENSE_SIZE_TEXT);
EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc2,2);
if(crc != crc2)
{
// UART1_PutString("\r\n Copy License to EEPROM...");
retval = EEPROM_WriteBlock(EEPROM_ADR_LICENSE_DATA,LicensePtr,LICENSE_SIZE_TEXT);
if(retval == EEPROM_SUCCESS) retval = EEPROM_WriteBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc,2);
/*
if(retval == EEPROM_SUCCESS) UART1_PutString("ok");
else UART1_PutString("failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
sprintf(msg, " (0x%04x)",crc);
UART1_PutString(msg);
*/
}
// else UART1_PutString("\r\n Copy of License in EEPROM ");
}
 
void ClearLicenseText(void)
{
u32 i;
for(i=0; i < LICENSE_SIZE_TEXT;i++) LicensePtr[i] = 0; //Achtung: das leert die ganze Struktur, nicht nur den Namen
}
 
void DeleteLicenseInEEPROM(void)
{
ClearLicenseText();
WriteLicenseToEEPROM(0);
}
 
u8 ReadLicenseFromEEPROM(void)
{
u8 retval = 0, tmp;
// u8 msg[150];
u16 crc, crc2;
 
// UART1_PutString("\r\n Read License from EEPROM...");
tmp = EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA,LicensePtr,LICENSE_SIZE_TEXT);
if(EEPROM_SUCCESS == tmp) retval = 1;
 
crc = EEPROM_LICENSE_DATA_KOMPATIBEL;
crc += CRC16(LicensePtr,LICENSE_SIZE_TEXT);
EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc2,2);
 
if(crc != crc2) retval++;
if(retval && LicensePtr[0] != 0 && LicensePtr[0] != 0xff)
{
// sprintf(msg, "ok (0x%04x)",crc);
// UART1_PutString(msg);
return(1);
}
else
{
UART1_PutString("not found !");
ClearLicenseText();
return(0);
}
}