| @@ -193,6 +193,62 @@ struct Peaks : Module { | |||||
| setFunction(1, function_[1]); | setFunction(1, function_[1]); | ||||
| } | } | ||||
| json_t *toJson() override { | |||||
| saveState(); | |||||
| json_t *rootJ = json_object(); | |||||
| json_object_set_new(rootJ, "edit_mode", json_integer((int)settings_.edit_mode)); | |||||
| json_object_set_new(rootJ, "fcn_channel_1", json_integer((int)settings_.function[0])); | |||||
| json_object_set_new(rootJ, "fcn_channel_2", json_integer((int)settings_.function[1])); | |||||
| json_t *potValuesJ = json_array(); | |||||
| for (int p : pot_value_) { | |||||
| json_t *pJ = json_integer(p); | |||||
| json_array_append_new(potValuesJ, pJ); | |||||
| } | |||||
| json_object_set_new(rootJ, "pot_values", potValuesJ); | |||||
| json_object_set_new(rootJ, "snap_mode", json_boolean(settings_.snap_mode)); | |||||
| return rootJ; | |||||
| } | |||||
| void fromJson(json_t *rootJ) override { | |||||
| json_t *editModeJ = json_object_get(rootJ, "edit_mode"); | |||||
| if (editModeJ) { | |||||
| settings_.edit_mode = static_cast<EditMode>(json_integer_value(editModeJ)); | |||||
| } | |||||
| json_t *fcnChannel1J = json_object_get(rootJ, "fcn_channel_1"); | |||||
| if (fcnChannel1J) { | |||||
| settings_.function[0] = static_cast<Function>(json_integer_value(fcnChannel1J)); | |||||
| } | |||||
| json_t *fcnChannel2J = json_object_get(rootJ, "fcn_channel_2"); | |||||
| if (fcnChannel2J) { | |||||
| settings_.function[1] = static_cast<Function>(json_integer_value(fcnChannel2J)); | |||||
| } | |||||
| json_t *snapModeJ = json_object_get(rootJ, "snap_mode"); | |||||
| if (snapModeJ) { | |||||
| settings_.snap_mode = json_boolean_value(snapModeJ); | |||||
| } | |||||
| json_t *potValuesJ = json_object_get(rootJ, "pot_values"); | |||||
| size_t potValueId; | |||||
| json_t *pJ; | |||||
| json_array_foreach(potValuesJ, potValueId, pJ) { | |||||
| if (potValueId < sizeof(pot_value_) / sizeof(pot_value_)[0]) { | |||||
| settings_.pot_value[potValueId] = json_integer_value(pJ); | |||||
| } | |||||
| } | |||||
| // Update module internal state from settings. | |||||
| init(); | |||||
| } | |||||
| void step() override { | void step() override { | ||||
| poll(); | poll(); | ||||
| pollPots(); | pollPots(); | ||||
| @@ -259,64 +315,6 @@ struct Peaks : Module { | |||||
| } | } | ||||
| } | } | ||||
| json_t *toJson() override { | |||||
| saveState(); | |||||
| json_t *rootJ = json_object(); | |||||
| json_object_set_new(rootJ, "edit_mode", json_integer((int)settings_.edit_mode)); | |||||
| json_object_set_new(rootJ, "fcn_channel_1", json_integer((int)settings_.function[0])); | |||||
| json_object_set_new(rootJ, "fcn_channel_2", json_integer((int)settings_.function[1])); | |||||
| json_t *potValuesJ = json_array(); | |||||
| for (int p : pot_value_) { | |||||
| json_t *pJ = json_integer(p); | |||||
| json_array_append_new(potValuesJ, pJ); | |||||
| } | |||||
| json_object_set_new(rootJ, "pot_values", potValuesJ); | |||||
| json_object_set_new(rootJ, "snap_mode", json_boolean(settings_.snap_mode)); | |||||
| return rootJ; | |||||
| } | |||||
| void fromJson(json_t *rootJ) override { | |||||
| json_t *editModeJ = json_object_get(rootJ, "edit_mode"); | |||||
| if (editModeJ) { | |||||
| settings_.edit_mode = static_cast<EditMode>(json_integer_value(editModeJ)); | |||||
| } | |||||
| json_t *fcnChannel1J = json_object_get(rootJ, "fcn_channel_1"); | |||||
| if (fcnChannel1J) { | |||||
| settings_.function[0] = static_cast<Function>(json_integer_value(fcnChannel1J)); | |||||
| } | |||||
| json_t *fcnChannel2J = json_object_get(rootJ, "fcn_channel_2"); | |||||
| if (fcnChannel2J) { | |||||
| settings_.function[1] = static_cast<Function>(json_integer_value(fcnChannel2J)); | |||||
| } | |||||
| json_t *snapModeJ = json_object_get(rootJ, "snap_mode"); | |||||
| if (snapModeJ) { | |||||
| settings_.snap_mode = json_boolean_value(snapModeJ); | |||||
| } | |||||
| json_t *potValuesJ = json_object_get(rootJ, "pot_values"); | |||||
| size_t potValueId; | |||||
| json_t *pJ; | |||||
| json_array_foreach(potValuesJ, potValueId, pJ) { | |||||
| if (potValueId < sizeof(pot_value_) / sizeof(pot_value_)[0]) { | |||||
| settings_.pot_value[potValueId] = json_integer_value(pJ); | |||||
| } | |||||
| } | |||||
| // Update module internal state from settings. | |||||
| init(); | |||||
| } | |||||
| inline Function function() const { | inline Function function() const { | ||||
| return edit_mode_ == EDIT_MODE_SECOND ? function_[1] : function_[0]; | return edit_mode_ == EDIT_MODE_SECOND ? function_[1] : function_[0]; | ||||
| } | } | ||||