*p = 0;
*sum = 0;
// Magic word
- writeword_eeprom(p, sum, 0x1298);
+ writeword_eeprom(p, sum, EEPROM_INTSET_MAGIC);
// amfreq
for(i = 0; i < sizeof(__radioset_t); i++) {
writebyte_eeprom(p, sum, *q);
/*
* External I2C Map:
* 0x0000
- * 0x00FF : User settings(Reserved not use)
+ * 0x01FF : User settings(Reserved not use)
* 0x0100
- * 0x03ff : User bands
- * 0x0400
+ * 0x01ff : User bands
+ * 0x0200
* 0x0fff : User frequencies ( 12*2*28 = 672chs Max.)
* 0x1000- : Reserve.
*/
-char load_frequencies(unsigned int page, unsigned char check_only)
+int load_frequencies(unsigned int page, unsigned char check_only)
{
__freqset_t *p;
unsigned int sum;
- unsigned int addr = (page << 7) + 512;
+ unsigned int addr = (page << 7) + EEPROM_FREQSET_ADDR;
unsigned char *q;
unsigned char *r;
unsigned char c;
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
- if(freqset_temp.magic != 0xfabc) return -3;
+ if(freqset_temp.magic != EEPROM_FREQSET_MAGIC) return -3;
// Pass 2 check sum
sum = calcsum_frequencies(&freqset_temp, 0xa5a5);
if(sum != freqset_temp.checksum) return -4;
void save_frequencies(void)
{
unsigned char c;
- unsigned int addr = (setup.pagenum <<7) + 512;
+ unsigned int addr = (setup.pagenum <<7) + EEPROM_FREQSET_ADDR;
__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.magic = EEPROM_FREQSET_MAGIC;
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;
}
+char save_frequencies_page(unsigned char page)
+{
+ unsigned char c;
+ unsigned int addr = (page <<7) + EEPROM_FREQSET_ADDR;
+ __freqset_t *p = &freqset_temp;
+ unsigned char i;
+ unsigned int sum;
+
+ if(page > USER_MEMORY_BANKS) return -3; // Address Error
+ // Pass 0 Calc checksum
+ if(p->magic != EEPROM_FREQSET_MAGIC) return -1; // Data error
+ sum = calcsum_frequencies(p, 0xa5a5);
+ if(p->checksum != sum) return -2; // Sum error
+ // Pass 1 write to rom.
+ c = i2c_eeprom_burstwrite(I2CEEPROM_ADDR, addr, (unsigned char *)p, sizeof(__freqset_t));
+ return 0;
+}
+
+
void format_frequencies(unsigned int page)
{
unsigned char i;
unsigned int sum;
- freqset_temp.magic = 0xfabc;
+ freqset_temp.magic = EEPROM_FREQSET_MAGIC;
freqset_temp.version = 0x0001;
for(i = 0; i < USER_MEMORY_NUM; i++){
freqset_temp.memoryfreqs[i].band = AKC6955_BAND_MW2;
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)+ EEPROM_FREQSET_ADDR, (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();
if(load_frequencies(i, 0xff) < 0){
- printstr("Format:");
- print_numeric_nosupress(i, 2);
+// printstr("Format:");
+// print_numeric_nosupress(i, 2);
_HOME();
format_frequencies(i);
}
}
+ if(load_userbands() < 0) {
+ format_userbands();
+ }
+}
+
+static unsigned int calcsum_userband(__userband_t_t *p, unsigned int start)
+{
+ unsigned int sum = start;
+ unsigned char *q = (unsigned char *)p;
+ unsigned char c;
+ unsigned char i;
+
+ for(i = 0; i < (sizeof(__userband_t_t) - 2); i++){
+ c = *q;
+ q++;
+ sum = sum + c;
+ }
+ return sum;
}
+int load_userbands(void)
+{
+
+ __userband_t_t *p = &userband;
+ unsigned int sum;
+ unsigned int addr = EEPROM_BANDSET_ADDR;
+ unsigned char c;
+
+// if(addr > 0x0fff) return -1; // Address error
+ c = i2c_eeprom_burstread(I2CEEPROM_ADDR, addr, (unsigned char *)p, sizeof(__userband_t_t));
+ // Pass 1 Read OK?
+ if(c == 0x00) return -2;
+ // Pass 1 check magic
+ if(p->magic != EEPROM_BANDSET_MAGIC) return -3;
+ // Pass 2 check sum
+ sum = calcsum_userband(p, 0x5a5a);
+ if(sum != p->checksum) return -4;
+ return 0;
+}
+
+void save_userbands(void)
+{
+ unsigned char c;
+ unsigned int addr = EEPROM_BANDSET_ADDR;
+ __userband_t_t *p = &userband;
+ unsigned char i;
+ unsigned int sum;
+
+ // Pass 0 Calc checksum
+ userband.magic = EEPROM_BANDSET_MAGIC;
+ userband.version = 0x0001;
+ sum = calcsum_userband(&userband, 0x5a5a);
+ userband.checksum = sum;
+ // Pass 1 write to rom.
+ c = i2c_eeprom_burstwrite(I2CEEPROM_ADDR, addr, (unsigned char *)p, sizeof(__userband_t_t));
+ return;
+}
+
+void format_userbands(void)
+{
+ unsigned char i;
+ for(i = 0; i < USER_BAND_NUM; i++) {
+ userband.am_usrbands[i].start = 0x19;
+ userband.am_usrbands[i].stop = 0x32;
+ userband.am_usrbands[i].freq = 5600; //(0x32 - (0x32-0x19) / 2 *32) * 5
+ userband.am_usrbands[i].mode3k = 0;
+ //
+ userband.fm_usrbands[i].start = 0x19;
+ userband.fm_usrbands[i].stop = 0x32;
+ userband.fm_usrbands[i].freq = 8600;
+ userband.fm_usrbands[i].mode3k = 0;
+ }
+ save_userbands(); // Re-init
+}
+
+
unsigned char load_eeprom(void)
{
unsigned int p[1];
sum[0] = 0;
// Magic word
magic = readword_eeprom(p, sum);
- if(magic != 0x1298) return 0x01; // NO MAGICWORD
+ if(magic != EEPROM_INTSET_MAGIC) return 0x01; // NO MAGICWORD
// amfreq
for(i = 0; i < sizeof(__radioset_t); i++ ){
*q = readbyte_eeprom(p, sum);
/*
* 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);
+// 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);
+// 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();