#include "SubmarineFree.hpp" struct DS_Module : Module { float voltage0 = 0.0f; float voltage1 = 10.0f; float midpoint(); float output(int); DS_Module(int p, int i, int o, int l) : Module(p, i, o, l) {} json_t *toJson() override; void fromJson(json_t *) override; void onReset() override; void appendContextMenu(Menu *); }; struct DS_MenuItem : MenuItem { DS_Module *module; float vh; float vl; void onAction(EventAction &e) override; void step() override; }; struct DS_Schmitt { int _state = 0; static float high(float, float); static float low(float, float); void reset(); void set(); void set(int); int state(float, float, float); int state(DS_Module *, float); int edge(float, float, float); int edge(DS_Module *, float); int edge(float, float, float, int); int edge(DS_Module *, float, int); int redge(float, float, float); int redge(DS_Module *, float); int fedge(float, float, float); int fedge(DS_Module *, float); };