OSDN Git Service

[v2.0][Schematic] Change coil T80-#2 to T80-#4, backport of v1.0.
[openi2cradio/OpenI2CRadio.git] / eepromutil.c
index b48180f..bea80a3 100644 (file)
@@ -113,9 +113,9 @@ char load_frequencies(unsigned int page, unsigned char check_only)
     unsigned int i;
 
 //    if(addr > 0x0fff) return -1; // Address error
-
+    if(page > USER_MEMORY_BANKS) return -1; // Address Error
     p = &freqset_temp;
-    c = i2c_eeprom_burstread(0xa0, addr, (unsigned char *)p, sizeof(__freqset_t));
+    c = i2c_eeprom_burstread(I2CEEPROM_ADDR, addr, (unsigned char *)p, sizeof(__freqset_t));
     // Pass 1 Read OK?
     if(c == 0x00) return -2;
     // Pass 1 check magic
@@ -145,37 +145,16 @@ void save_frequencies(void)
     unsigned int addr = (setup.pagenum <<7) + 512;
     __freqset_t *p = &freqset;
     unsigned char i;
-    unsigned char flg;
-    unsigned char *q, *r;
     unsigned int sum;
 
-   // if(addr > 0x0fff) return;
+    if(setup.pagenum > USER_MEMORY_BANKS) return; // Address Error
     // Pass 0 Calc checksum
     freqset.magic = 0xfabc;
     freqset.version = 0x0001;
     sum = calcsum_frequencies(&freqset, 0xa5a5);
     freqset.checksum = sum;
-    // Pass 1 check storaged page
-    if(load_frequencies(setup.pagenum, 0xff) < 0) {
-        // Sum ERROR = Force rewrite
-        c = i2c_eeprom_burstwrite(0xa0, addr, (unsigned char *)p, sizeof(__freqset_t));
-        return;
-    }
-    // Pass 2 compare
-    flg = 0x00;
-//    flg = 0xff;
-    q = (unsigned char *)(&freqset_temp);
-    r = (unsigned char *)(&freqset);
-    for(i = 0; i < sizeof(__freqset_t); i++) {
-        if(*q != *r) flg |= 0xff;
-        q++;
-        r++;
-    }
-    if(flg != 0x00){ // Changed
-        c = i2c_eeprom_burstwrite(0xa0, addr, (unsigned char *)p, sizeof(__freqset_t));
-        return;
-    }
-    // Not Need to read.
+    // Pass 1 write to rom.
+    c = i2c_eeprom_burstwrite(I2CEEPROM_ADDR, addr, (unsigned char *)p, sizeof(__freqset_t));
     return;
 }
 
@@ -195,14 +174,14 @@ void format_frequencies(unsigned int page)
     sum = calcsum_frequencies(&freqset_temp, 0xa5a5);
     freqset_temp.checksum = sum;
 
-    i = i2c_eeprom_burstwrite(0xa0, (page << 7)+ 512, (unsigned char *)(&freqset_temp), sizeof(__freqset_t));
+    i = i2c_eeprom_burstwrite(I2CEEPROM_ADDR, (page << 7)+ 512, (unsigned char *)(&freqset_temp), sizeof(__freqset_t));
 }
 
 void check_frequencies(void)
 {
     unsigned int i;
     _CLS();
-    for(i = 0; i < 24; i++){
+    for(i = 0; i < USER_MEMORY_BANKS; i++){
         printstr("Check ExtROM:");
         print_numeric_nosupress(i, 2);
        _HOME();
@@ -244,39 +223,33 @@ unsigned char load_eeprom(void)
 /*
  * Check eeprom, and format/restore.
  */
+static void check_eeprom_sub(void)
+{
+ _CLS();
+ _LOCATE(0,0);
+ printstr("Formatting...  ");
+ format_eeprom(2,250);
+ _LOCATE(0,0);
+ printstr("Save defaults  ");
+ setdefault();
+ save_eeprom();
+}
+
+
 void check_eeprom(void)
 {
     unsigned char c;
-    unsigned int bank;
 
     switch(load_eeprom()) {
         case 0x01: // No magic-word
             idle_time_ms(2000);
             c = printhelp_2lines("EEPROM FORMAT", "Press any key");
-            _CLS();
-            _LOCATE(0,0);
-            printstr("Formatting...  ");
-            format_eeprom(2,250);
-            _LOCATE(0,0);
-            printstr("Save defaults  ");
-            setdefault();
-            save_eeprom();
-//            format_frequencies();
+            check_eeprom_sub();
             break;
         case 0x00: // Checksum error
            idle_time_ms(2000);
             c = printhelp_2lines("X-) Sum error", "Press any key");
-            c = pollkey_single();
-            _CLS();
-            _LOCATE(0,0);
-            printstr("Formatting...");
-            format_eeprom(2,250);
-//            writeword_eeprom(0, &sum, 0x1298);
-            _LOCATE(0,0);
-            printstr("Save defaults");
-            setdefault();
-            save_eeprom();
-//            format_frequencies();
+            check_eeprom_sub();
             break;
         case 0xff: // Success
             check_frequencies();