Skip to content

Commit 3b700fd

Browse files
committed
eeprom is ready checks
1 parent ec7a913 commit 3b700fd

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

Diff for: primer.ino

+27-25
Original file line numberDiff line numberDiff line change
@@ -252,25 +252,24 @@ void setup() {
252252
pinMode(PIN_BUTTON, INPUT);
253253
attachInterrupt(0, pushInterrupt, FALLING);
254254

255-
if (EEPROM.read(ADDR_SLEEPING)) {
256-
while (!eeprom_is_ready());
257-
EEPROM.update(ADDR_SLEEPING, 0);
255+
if (EEPROMread(ADDR_SLEEPING)) {
256+
EEPROMupdate(ADDR_SLEEPING, 0);
258257
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_ON);
259258
button_state = new_state = S_SLEEP_WAKE;
260259
}
261260
detachInterrupt(0);
262261

263-
if (EEPROM_VERSION != EEPROM.read(ADDR_VERSION)) {
262+
if (EEPROM_VERSION != EEPROMread(ADDR_VERSION)) {
264263
resetMemory();
265-
EEPROM.update(ADDR_VERSION, EEPROM_VERSION);
264+
EEPROMupdate(ADDR_VERSION, EEPROM_VERSION);
266265
} else {
267266
loadModes();
268267
loadBundles();
269268
loadPalette(ADDR_PALETTE);
270269
}
271270

272271
Serial.begin(57600);
273-
cur_bundle = EEPROM.read(ADDR_CUR_BUNDLE);
272+
cur_bundle = EEPROMread(ADDR_CUR_BUNDLE);
274273

275274
pinMode(PIN_R, OUTPUT);
276275
pinMode(PIN_G, OUTPUT);
@@ -472,8 +471,7 @@ void handlePress(bool pressed) {
472471
flash(128, 128, 128, 5);
473472
new_state = S_PLAY_SLEEP_WAIT;
474473
} else if (!pressed) {
475-
while (!eeprom_is_ready());
476-
EEPROM.update(ADDR_LOCKED, 1);
474+
EEPROMupdate(ADDR_LOCKED, 1);
477475
enterSleep();
478476
}
479477
break;
@@ -650,8 +648,7 @@ void handlePress(bool pressed) {
650648
new_state = S_BUNDLE_EDIT_WAIT;
651649
} else if (!pressed) {
652650
flash(128, 128, 128, 5);
653-
while (!eeprom_is_ready());
654-
EEPROM.update(ADDR_CUR_BUNDLE, cur_bundle);
651+
EEPROMupdate(ADDR_CUR_BUNDLE, cur_bundle);
655652
new_state = S_PLAY_OFF;
656653
}
657654
break;
@@ -709,12 +706,11 @@ void handlePress(bool pressed) {
709706

710707
// On Wake
711708
case S_SLEEP_WAKE:
712-
if (EEPROM.read(ADDR_LOCKED)) {
709+
if (EEPROMread(ADDR_LOCKED)) {
713710
if (since_trans == VERY_LONG_HOLD) flash(0, 128, 0, 5);
714711
if (!pressed) {
715712
if (since_trans > VERY_LONG_HOLD) {
716-
while (!eeprom_is_ready());
717-
EEPROM.update(ADDR_LOCKED, 0);
713+
EEPROMupdate(ADDR_LOCKED, 0);
718714
new_state = S_PLAY_OFF;
719715
} else {
720716
enterSleep();
@@ -785,7 +781,6 @@ void handlePress(bool pressed) {
785781
flash(128, 128, 128, 1);
786782
flash(0, 128, 0, 1);
787783
flash(128, 128, 128, 1);
788-
while (!eeprom_is_ready());
789784
saveMode(cur_mode_idx);
790785
new_state = S_PLAY_OFF;
791786
break;
@@ -796,7 +791,6 @@ void handlePress(bool pressed) {
796791
flash(128, 128, 128, 1);
797792
flash(0, 0, 128, 1);
798793
flash(128, 128, 128, 1);
799-
while (!eeprom_is_ready());
800794
saveBundles();
801795
new_state = S_PLAY_OFF;
802796
break;
@@ -829,8 +823,7 @@ void handlePress(bool pressed) {
829823
void enterSleep() {
830824
writeFrame(0, 0, 0);
831825
accelStandby();
832-
while (!eeprom_is_ready());
833-
EEPROM.update(ADDR_SLEEPING, 1);
826+
EEPROMupdate(ADDR_SLEEPING, 1);
834827
digitalWrite(PIN_LDO, LOW);
835828
delay(64000);
836829
}
@@ -840,7 +833,7 @@ void pushInterrupt() {}
840833

841834
void clearMemory() {
842835
for (int i = 0; i < 1024; i++) {
843-
EEPROM.update(i, 0);
836+
EEPROMupdate(i, 0);
844837
}
845838
}
846839

@@ -863,7 +856,7 @@ void initBundles() {
863856

864857
void saveMode(uint8_t idx) {
865858
for (uint8_t b = 0; b < MODE_SIZE; b++) {
866-
EEPROM.update(ADDR_MODES + (idx * 40) + b, pmodes[idx].d[b]);
859+
EEPROMupdate(ADDR_MODES + (idx * 40) + b, pmodes[idx].d[b]);
867860
}
868861
}
869862

@@ -873,16 +866,16 @@ void saveModes() {
873866

874867
void saveBundles() {
875868
for (uint8_t b = 0; b < NUM_BUNDLES; b++) {
876-
EEPROM.update(ADDR_BUNDLES + (b * 20), bundle_slots[b]);
869+
EEPROMupdate(ADDR_BUNDLES + (b * 20), bundle_slots[b]);
877870
for (uint8_t s = 0; s < NUM_MODES; s++) {
878-
EEPROM.update(ADDR_BUNDLES + (b * 20) + s + 1, bundles[b][s]);
871+
EEPROMupdate(ADDR_BUNDLES + (b * 20) + s + 1, bundles[b][s]);
879872
}
880873
}
881874
}
882875

883876
void loadMode(uint8_t idx) {
884877
for (uint8_t b = 0; b < MODE_SIZE; b++) {
885-
pmodes[idx].d[b] = EEPROM.read(ADDR_MODES + (idx * 40) + b);
878+
pmodes[idx].d[b] = EEPROMread(ADDR_MODES + (idx * 40) + b);
886879
}
887880
}
888881

@@ -892,15 +885,14 @@ void loadModes() {
892885

893886
void loadBundles() {
894887
for (uint8_t b = 0; b < NUM_BUNDLES; b++) {
895-
bundle_slots[b] = EEPROM.read(ADDR_BUNDLES + (b * 20));
888+
bundle_slots[b] = EEPROMread(ADDR_BUNDLES + (b * 20));
896889
for (uint8_t s = 0; s < NUM_MODES; s++) {
897-
bundles[b][s] = EEPROM.read(ADDR_BUNDLES + (b * 20) + s + 1);
890+
bundles[b][s] = EEPROMread(ADDR_BUNDLES + (b * 20) + s + 1);
898891
}
899892
}
900893
}
901894

902895
void resetMemory() {
903-
while (!eeprom_is_ready());
904896
clearMemory();
905897
initModes();
906898
saveModes();
@@ -1267,3 +1259,13 @@ void detectAccelModel() {
12671259
thresh_target = 8;
12681260
}
12691261
}
1262+
1263+
void EEPROMupdate(uint16_t addr, uint8_t val) {
1264+
while (!eeprom_is_ready());
1265+
EEPROM.update(addr, val);
1266+
}
1267+
1268+
uint8_t EEPROMread(uint16_t addr) {
1269+
while (!eeprom_is_ready());
1270+
return EEPROM.read(addr);
1271+
}

0 commit comments

Comments
 (0)