Subversion Repositories NaviCtrl

Rev

Rev 489 | Rev 530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 489 Rev 526
Line 59... Line 59...
59
#include "i2c.h"
59
#include "i2c.h"
60
#include "uart1.h"
60
#include "uart1.h"
61
#include "timer1.h"
61
#include "timer1.h"
62
#include "eeprom.h"
62
#include "eeprom.h"
63
#include "led.h"
63
#include "led.h"
-
 
64
#include "crc16.h"
Line 64... Line 65...
64
 
65
 
65
 
66
 
Line 94... Line 95...
94
 
95
 
95
// ----------------------------------------------------------------------------------------
96
// ----------------------------------------------------------------------------------------
96
EEPROM_Result_t EEPROM_Transfer(u8 Direction, u16 Address, u8 *pData, u16 DataLen)
97
EEPROM_Result_t EEPROM_Transfer(u8 Direction, u16 Address, u8 *pData, u16 DataLen)
97
{
98
{
98
        u16 i;
99
        u16 i;
99
        u8 retry = 0;
100
        u8 retry = 0;  
Line 100... Line 101...
100
        EEPROM_Result_t retval = EEPROM_ERROR_UNKNOWN;
101
        EEPROM_Result_t retval = EEPROM_ERROR_UNKNOWN;
101
 
102
 
102
        if(((u32)Address + (u32)DataLen) >= (EEPROM_SIZE - 1))
103
        if(((u32)Address + (u32)DataLen) >= (EEPROM_SIZE - 1))
Line 192... Line 193...
192
        u16 AdrOffset = 0;
193
        u16 AdrOffset = 0;
193
        u16 RxLen;
194
        u16 RxLen;
Line 194... Line 195...
194
 
195
 
195
        while(DataLen > 0)
196
        while(DataLen > 0)
196
        {
197
        {
197
                if(DataLen > I2C_BUFFER_LEN) RxLen = I2C_BUFFER_LEN;
198
                if(DataLen > I2C_BUFFER_LEN - 2) RxLen = I2C_BUFFER_LEN - 2;
Line 198... Line 199...
198
                else RxLen = DataLen;
199
                else RxLen = DataLen;
199
           
200
           
200
                retval = EEPROM_Transfer(EEPROM_READ, Address+AdrOffset, &(pData[AdrOffset]), RxLen);
201
                retval = EEPROM_Transfer(EEPROM_READ, Address+AdrOffset, &(pData[AdrOffset]), RxLen);
Line 219... Line 220...
219
        }
220
        }
220
        if(retval)  UART1_PutString("ok");
221
        if(retval)  UART1_PutString("ok");
221
        else            UART1_PutString("failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
222
        else            UART1_PutString("failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
222
        return(retval);
223
        return(retval);
223
}
224
}
-
 
225
 
-
 
226
 
-
 
227
void WriteLicenseToEEPROM(u8 kompatibel)
-
 
228
{
-
 
229
//      u8 msg[150];    
-
 
230
        u16 crc,crc2;
-
 
231
    EEPROM_Result_t retval = EEPROM_ERROR_UNKNOWN;
-
 
232
        crc = kompatibel;
-
 
233
        crc += CRC16(LicensePtr,LICENSE_SIZE_TEXT);
-
 
234
        EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc2,2);
-
 
235
   if(crc != crc2)
-
 
236
   {
-
 
237
//      UART1_PutString("\r\n Copy License to EEPROM...");
-
 
238
        retval = EEPROM_WriteBlock(EEPROM_ADR_LICENSE_DATA,LicensePtr,LICENSE_SIZE_TEXT);
-
 
239
        if(retval == EEPROM_SUCCESS) retval = EEPROM_WriteBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc,2);
-
 
240
/*
-
 
241
        if(retval == EEPROM_SUCCESS)  UART1_PutString("ok");
-
 
242
        else            UART1_PutString("failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
-
 
243
        sprintf(msg, " (0x%04x)",crc);
-
 
244
        UART1_PutString(msg);
-
 
245
*/
-
 
246
   }
-
 
247
//   else UART1_PutString("\r\n Copy of License in EEPROM ");
-
 
248
}
-
 
249
 
-
 
250
void ClearLicenseText(void)
-
 
251
{
-
 
252
 u32 i;
-
 
253
 for(i=0; i < LICENSE_SIZE_TEXT;i++) LicensePtr[i] = 0; //Achtung: das leert die ganze Struktur, nicht nur den Namen
-
 
254
}
-
 
255
 
-
 
256
void DeleteLicenseInEEPROM(void)
-
 
257
{
-
 
258
 ClearLicenseText();
-
 
259
 WriteLicenseToEEPROM(0);
-
 
260
}
-
 
261
 
-
 
262
u8 ReadLicenseFromEEPROM(void)
-
 
263
{
-
 
264
        u8 retval = 0, tmp;
-
 
265
//      u8 msg[150];    
-
 
266
        u16 crc, crc2;
-
 
267
 
-
 
268
//      UART1_PutString("\r\n Read License from EEPROM...");
-
 
269
        tmp = EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA,LicensePtr,LICENSE_SIZE_TEXT);
-
 
270
        if(EEPROM_SUCCESS == tmp) retval = 1;
-
 
271
 
-
 
272
        crc = EEPROM_LICENSE_DATA_KOMPATIBEL;
-
 
273
        crc += CRC16(LicensePtr,LICENSE_SIZE_TEXT);
-
 
274
        EEPROM_ReadBlock(EEPROM_ADR_LICENSE_DATA_CRC,(u8 *)&crc2,2);
-
 
275
 
-
 
276
        if(crc != crc2) retval++;
-
 
277
        if(retval && LicensePtr[0] != 0 && LicensePtr[0] != 0xff)  
-
 
278
         {
-
 
279
//      sprintf(msg, "ok (0x%04x)",crc);
-
 
280
//        UART1_PutString(msg);
-
 
281
          return(1);
-
 
282
         }
-
 
283
        else           
-
 
284
         {
-
 
285
          UART1_PutString("not found !");
-
 
286
          ClearLicenseText();
-
 
287
          return(0);
-
 
288
         }
-
 
289
}
-
 
290
 
-
 
291
 
-
 
292
 
-
 
293