+ return this;
+};
+
+$.fn.setPWMControl = function (number, menu) {
+ var container = this;
+ var freq = this.find("input[name='freq']");
+ var duty = this.find("input[name='duty']");
+ var pol = this.find("input[name='pol']");
+ var set = this.find("input[name='set']");
+ var result = this.find("input[name='result']");
+ var unexport = this.find("input[name='unexport']");
+
+ set.click(function () {
+ var freqVal = parseFloat(freq.val());
+ var dutyVal = parseFloat(duty.val());
+ var polVal = pol.is(":checked") ? 1 : 0;
+
+ result.val("Processing...");
+ if (isNaN(freqVal) || isNaN(dutyVal) || freqVal <= 0 || dutyVal < 0 || dutyVal > 1) {
+ result.val("Invalid input");
+ } else {
+ $.ajax({url : mctx.pintest.api,
+ data : {type : "pwm", num : number, freq : freqVal,
+ duty : dutyVal, pol : polVal, set : 1}})
+ .done(function(data) {
+ result.val(data);
+ })
+ }
+ });
+
+ unexport.click(function () {
+ $.ajax({url : mctx.pintest.api, data : {type : "pwm", num : number, export : -1}})
+ container.remove();
+ menu.append($("<option />").val(number).text("PWM " + number));
+ return false;
+ });
+
+ return this;
+};
+
+/**
+ * Given the form containing the ADC control elements, it activates the controls.
+ * @returns {$.fn}
+ */
+$.fn.setADCControl = function() {
+ var container = this;
+ this.find("input[type='checkbox']").each(function () {
+ var update = false;
+ var number = $(this).attr("name");
+ var result = container.find("input[type='text'][name='" + number + "']");
+
+ var updater = function () {
+ if (update) {
+ $.ajax({url : mctx.pintest.api, data : {type : "adc", num : number}})
+ .done(function (data) {
+ if (update) {
+ result.val(data);
+ }
+ })
+ .fail(function () {
+ result.val("fail - server not running?");
+ })
+ .always(function () {
+ setTimeout(updater, mctx.pintest.refreshRate);
+ });
+ } else {
+ setTimeout(updater, mctx.pintest.idleRefreshRate);
+ }
+ };
+
+ $(this).click(function () {
+ update = !update;
+ result.val("");
+ var exp = update ? 1 : -1;
+ $.ajax({url : mctx.pintest.api, data : {type : "adc", num : number, export : exp}});
+ });
+ updater();
+ });
+ return this;