i2c control persistance byte

This commit is contained in:
2026-02-18 21:59:24 +01:00
parent ebeb452ded
commit c327c7d9d0
4 changed files with 20 additions and 7 deletions
+2 -1
View File
@@ -5,7 +5,7 @@
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing! #define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing!
#define EE_CHECKBYTE_VALUE 20 // 0 ~ 255,add new entry, change for new value #define EE_CHECKBYTE_VALUE 20 // 0 ~ 255,add new entry, change for new value
#define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped! #define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped!
#define EE_TOTAL_CNT 2287 // Total occupied eeprom bytes, we can take 20K #define EE_TOTAL_CNT 2288 // Total occupied eeprom bytes, we can take 20K
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte #define EE_PRESETS_BAND_START 0 // 99 * 1 byte
#define EE_PRESET_BW_START 99 // 99 * 1 byte #define EE_PRESET_BW_START 99 // 99 * 1 byte
@@ -127,6 +127,7 @@
#define EE_BYTE_CLOCKAMPM 2278 #define EE_BYTE_CLOCKAMPM 2278
#define EE_UINT16_LOGCOUNTER 2279 #define EE_UINT16_LOGCOUNTER 2279
#define EE_UINT16_PICTLOCK 2283 #define EE_UINT16_PICTLOCK 2283
#define EE_BYTE_CONTROLMODE 2285
// End of EEPROM index defines // End of EEPROM index defines
void StoreFrequency(); void StoreFrequency();
+7 -5
View File
@@ -997,10 +997,8 @@ void total_pc_control() {
} break; } break;
case 6: { // Change baud case 6: { // Change baud
if(len < 5) break; if(len < 5) break;
uint32_t clock = ((uint32_t)data[1] << 24) | uint32_t clock = ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) |
((uint32_t)data[2] << 16) | ((uint32_t)data[3] << 8) | ((uint32_t)data[4]);
((uint32_t)data[3] << 8) |
((uint32_t)data[4]);
Serial.write(1); Serial.write(1);
Serial.write(6); Serial.write(6);
Serial.flush(); Serial.flush();
@@ -1020,10 +1018,14 @@ void total_pc_control() {
Serial.write(8); Serial.write(8);
for(uint16_t i = 0; i < data[3]; i++) Serial.write(EEPROM.read(address + i)); for(uint16_t i = 0; i < data[3]; i++) Serial.write(EEPROM.read(address + i));
} break; } break;
case 0xfe: { // Get EEPROM address for starting control mode on boot
Serial.write(2);
Serial.write((uint8_t)(EE_BYTE_CONTROLMODE >> 8));
Serial.write(EE_BYTE_CONTROLMODE & 0xff);
} break;
case 0xff: { // Another wake command case 0xff: { // Another wake command
Serial.write(1); Serial.write(1);
Serial.write(0xff); Serial.write(0xff);
Serial.flush(true);
} break; } break;
default: default:
break; break;
+8 -1
View File
@@ -198,6 +198,10 @@ void setup() {
loadData(); loadData();
pinMode(MODEBUTTON, INPUT);
if(i2c_pc_control && digitalRead(MODEBUTTON) == HIGH) return;
else i2c_pc_control = false;
if (spispeed == 0) setAutoSpeedSPI(); if (spispeed == 0) setAutoSpeedSPI();
else tft.setSPISpeed(spispeed); else tft.setSPISpeed(spispeed);
@@ -265,7 +269,6 @@ void setup() {
tft.invertDisplay(!invertdisplay); tft.invertDisplay(!invertdisplay);
pinMode(BANDBUTTON, INPUT); pinMode(BANDBUTTON, INPUT);
pinMode(MODEBUTTON, INPUT);
pinMode(BWBUTTON, INPUT); pinMode(BWBUTTON, INPUT);
pinMode(ROTARY_BUTTON, INPUT); pinMode(ROTARY_BUTTON, INPUT);
pinMode(ROTARY_PIN_A, INPUT); pinMode(ROTARY_PIN_A, INPUT);
@@ -1075,6 +1078,10 @@ void loop() {
if(i2c_pc_control) { if(i2c_pc_control) {
total_pc_control(); total_pc_control();
if(i2c_pc_control) return; if(i2c_pc_control) return;
if(EEPROM.readByte(EE_BYTE_CONTROLMODE)) {
saveData();
esp_restart();
}
} }
handleWiFi(); handleWiFi();
+3
View File
@@ -125,6 +125,7 @@ void saveData() {
EEPROM.writeByte(EE_BYTE_AUTODST, autoDST); EEPROM.writeByte(EE_BYTE_AUTODST, autoDST);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm); EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, radio.rds.PICTlock); EEPROM.writeUInt(EE_UINT16_PICTLOCK, radio.rds.PICTlock);
EEPROM.writeByte(EE_BYTE_CONTROLMODE, 0); // Always 0
EEPROM.commit(); EEPROM.commit();
} }
@@ -239,6 +240,7 @@ void loadData() {
clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM); clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM);
logcounter = EEPROM.readUInt(EE_UINT16_LOGCOUNTER); logcounter = EEPROM.readUInt(EE_UINT16_LOGCOUNTER);
radio.rds.PICTlock = EEPROM.readUInt(EE_UINT16_PICTLOCK); radio.rds.PICTlock = EEPROM.readUInt(EE_UINT16_PICTLOCK);
i2c_pc_control = i2c_pc_control_init = EEPROM.readByte(EE_BYTE_CONTROLMODE);
} }
void DefaultSettings() { void DefaultSettings() {
@@ -345,6 +347,7 @@ void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_AUTODST, 1); EEPROM.writeByte(EE_BYTE_AUTODST, 1);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0); EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, 0); EEPROM.writeUInt(EE_UINT16_PICTLOCK, 0);
EEPROM.writeByte(EE_BYTE_CONTROLMODE, 0);
EEPROM.writeByte(EE_BYTE_SPISPEED, 0); EEPROM.writeByte(EE_BYTE_SPISPEED, 0);