diff --git a/src/app/containers/Firmware/utils/index.js b/src/app/containers/Firmware/utils/index.js index 5ba0c1ba6..320fd7783 100644 --- a/src/app/containers/Firmware/utils/index.js +++ b/src/app/containers/Firmware/utils/index.js @@ -174,6 +174,7 @@ export const convertValueToArray = (value, possibilities) => { export const applyNewSettings = (settings, eeprom, setSettingsToApply) => { let index22 = 200; // index of $22 - default is 200 because we have less eeprom values than that, so it will never be set to this value let index2021 = -1; // index of $20 or $21, whichever comes first + let tableNeedsReparsing = false; let changedSettings = settings .filter(item => eeprom[item.setting] !== item.value) // Only retrieve settings that have been modified .map((item, i) => { // Create array of set eeprom value strings (ex. "$0=1") @@ -185,6 +186,9 @@ export const applyNewSettings = (settings, eeprom, setSettingsToApply) => { // we are going to have to switch it with $20, so save the index. index2021 = i; } + if (item.setting === '$511' || item.setting === '$512' || item.setting === '$513') { + tableNeedsReparsing = true; + } return `${item.setting}=${item.value}`; }); @@ -196,6 +200,13 @@ export const applyNewSettings = (settings, eeprom, setSettingsToApply) => { changedSettings[index2021] = setting22; } changedSettings.push('$$'); // Add setting refresh to end so tool updates values + if (tableNeedsReparsing) { + // if 511-513 have changed, reparse the table + changedSettings.push('$ES', '$ESH'); + // if we disable MODVFD, there will still be the extra settings in the runner's list, + // so reset the list whenever 511-513 is changed + controller.command('runner:resetSettings'); + } controller.command('gcode', changedSettings); setSettingsToApply(false); Toaster.pop({ diff --git a/src/server/controllers/Grblhal/GrblHalController.js b/src/server/controllers/Grblhal/GrblHalController.js index dcfbafd50..0c596df7c 100644 --- a/src/server/controllers/Grblhal/GrblHalController.js +++ b/src/server/controllers/Grblhal/GrblHalController.js @@ -2159,6 +2159,9 @@ class GrblHalController { 'updateRotaryMode': () => { const [isInRotaryMode] = args; this.isInRotaryMode = isInRotaryMode; + }, + 'runner:resetSettings': () => { + this.runner.deleteSettings(); } }[cmd]; diff --git a/src/server/controllers/Grblhal/GrblHalRunner.js b/src/server/controllers/Grblhal/GrblHalRunner.js index 89897a050..56cec3e36 100644 --- a/src/server/controllers/Grblhal/GrblHalRunner.js +++ b/src/server/controllers/Grblhal/GrblHalRunner.js @@ -442,6 +442,10 @@ class GrblHalRunner extends events.EventEmitter { forceOK() { this.emit('ok', { raw: 'force ok' }); } + + deleteSettings() { + this.settings.settings = {}; + } } export default GrblHalRunner;