Merge pull request #1197 from keyboardio/persistentledmode/revert-to-original

PersistentLEDMode: Revert back to auto-saving
pull/1188/head
Jesse Vincent 3 years ago committed by GitHub
commit 727fd47b1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -40,9 +40,7 @@ EventHandlerResult PersistentLEDMode::onSetup() {
Runtime.storage().get(settings_base_, settings_);
// If our slice is uninitialized, then return early, without touching the
// current mode. We want auto_save by default, but because EEPROM is
// uninitialized (0xff), that'll be set anyway, so we don't need to. This
// saves us a storage commit.
// current mode.
if (Runtime.storage().isSliceUninitialized(settings_base_, sizeof(settings_)))
return EventHandlerResult::OK;
@ -52,9 +50,6 @@ EventHandlerResult PersistentLEDMode::onSetup() {
}
EventHandlerResult PersistentLEDMode::onLEDModeChange() {
if (!settings_.auto_save)
return EventHandlerResult::OK;
if (settings_.default_mode_index == ::LEDControl.get_mode_index())
return EventHandlerResult::OK;
@ -65,61 +60,6 @@ EventHandlerResult PersistentLEDMode::onLEDModeChange() {
return EventHandlerResult::OK;
}
EventHandlerResult PersistentLEDMode::onFocusEvent(const char *command) {
enum {
AUTO_SAVE,
DEFAULT_MODE,
} sub_command;
if (::Focus.handleHelp(command, PSTR("led_mode.default\nled_mode.auto_save")))
return EventHandlerResult::OK;
if (strncmp_P(command, PSTR("led_mode."), 9) != 0)
return EventHandlerResult::OK;
if (strcmp_P(command + 9, PSTR("default")) == 0)
sub_command = DEFAULT_MODE;
else if (strcmp_P(command + 9, PSTR("auto_save")) == 0)
sub_command = AUTO_SAVE;
else
return EventHandlerResult::OK;
switch (sub_command) {
case DEFAULT_MODE: {
if (::Focus.isEOL()) {
::Focus.send(settings_.default_mode_index);
} else {
uint8_t idx;
::Focus.read(idx);
settings_.default_mode_index = idx;
::LEDControl.set_mode(idx);
Runtime.storage().put(settings_base_, settings_);
Runtime.storage().commit();
}
break;
}
case AUTO_SAVE: {
if (::Focus.isEOL()) {
::Focus.send(settings_.auto_save);
} else {
uint8_t v;
::Focus.read(v);
setAutoSave(v != 0);
}
break;
}
}
return EventHandlerResult::EVENT_CONSUMED;
}
void PersistentLEDMode::setAutoSave(bool state) {
settings_.auto_save = state;
Runtime.storage().put(settings_base_, settings_);
Runtime.storage().commit();
}
EventHandlerResult PersistentLEDMode::onNameQuery() {
return ::Focus.sendName(F("PersistentLEDMode"));
}

@ -31,18 +31,11 @@ class PersistentLEDMode : public kaleidoscope::Plugin {
EventHandlerResult onSetup();
EventHandlerResult onNameQuery();
EventHandlerResult onLEDModeChange();
EventHandlerResult onFocusEvent(const char *command);
void setAutoSave(bool state);
bool getAutoSave() {
return settings_.auto_save == 1;
}
private:
static uint16_t settings_base_;
static struct settings {
uint8_t auto_save : 1;
uint8_t default_mode_index : 7;
uint8_t default_mode_index;
} settings_;
};

Loading…
Cancel
Save