provision for a custom gain control
This commit is contained in:
parent
63475dda78
commit
48b177defa
@ -1,7 +1,8 @@
|
||||
function Input(name, value, label) {
|
||||
function Input(name, value, options) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
this.label = label;
|
||||
this.options = options;
|
||||
this.label = options && options.label || name;
|
||||
};
|
||||
|
||||
Input.prototype.bootstrapify = function(input) {
|
||||
@ -36,6 +37,16 @@ NumberInput.prototype.render = function() {
|
||||
return this.bootstrapify($('<input type="number" name="' + this.name + '" value="' + this.value + '">'));
|
||||
};
|
||||
|
||||
function SoapyGainInput() {
|
||||
Input.apply(this, arguments);
|
||||
}
|
||||
|
||||
SoapyGainInput.prototype = new Input();
|
||||
|
||||
SoapyGainInput.prototype.render = function(){
|
||||
return this.bootstrapify($('<div>Soapy gain settings go here</div>'));
|
||||
};
|
||||
|
||||
function ProfileInput() {
|
||||
Input.apply(this, arguments);
|
||||
};
|
||||
@ -94,37 +105,49 @@ SdrDevice.prototype.getMappings = function() {
|
||||
return {
|
||||
"name": {
|
||||
constructor: TextInput,
|
||||
label: "Name",
|
||||
inputOptions: {
|
||||
label: "Name"
|
||||
},
|
||||
initialValue: "",
|
||||
includeInDefault: true
|
||||
},
|
||||
"type": {
|
||||
constructor: TextInput,
|
||||
label: "Type",
|
||||
inputOptions: {
|
||||
label: "Type"
|
||||
},
|
||||
initialValue: '',
|
||||
includeInDefault: true
|
||||
},
|
||||
"ppm": {
|
||||
constructor: NumberInput,
|
||||
label: "PPM",
|
||||
inputOptions: {
|
||||
label: "PPM"
|
||||
},
|
||||
initialValue: 0
|
||||
},
|
||||
"profiles": {
|
||||
constructor: ProfileInput,
|
||||
label: "Profiles",
|
||||
inputOptions: {
|
||||
label: "Profiles"
|
||||
},
|
||||
initialValue: [],
|
||||
includeInDefault: true,
|
||||
position: 100
|
||||
},
|
||||
"scheduler": {
|
||||
constructor: SchedulerInput,
|
||||
inputOptions: {
|
||||
label: "Scheduler",
|
||||
},
|
||||
initialValue: {},
|
||||
position: 101
|
||||
},
|
||||
"rf_gain": {
|
||||
constructor: TextInput,
|
||||
inputOptions: {
|
||||
label: "Gain",
|
||||
},
|
||||
initialValue: 0
|
||||
}
|
||||
};
|
||||
@ -140,11 +163,6 @@ SdrDevice.prototype.getInputClass = function(key) {
|
||||
return mapping && mapping.constructor || TextInput;
|
||||
};
|
||||
|
||||
SdrDevice.prototype.getLabel = function(key) {
|
||||
var mapping = this.getMapping(key);
|
||||
return mapping && mapping.label || key;
|
||||
};
|
||||
|
||||
SdrDevice.prototype.getInitialValue = function(key) {
|
||||
var mapping = this.getMapping(key);
|
||||
return mapping && ('initialValue' in mapping) ? mapping['initialValue'] : false;
|
||||
@ -155,6 +173,16 @@ SdrDevice.prototype.getPosition = function(key) {
|
||||
return mapping && mapping.position || 10;
|
||||
};
|
||||
|
||||
SdrDevice.prototype.getInputOptions = function(key) {
|
||||
var mapping = this.getMapping(key);
|
||||
return mapping && mapping.inputOptions || {};
|
||||
};
|
||||
|
||||
SdrDevice.prototype.getLabel = function(key) {
|
||||
var options = this.getInputOptions(key);
|
||||
return options && options.label || key;
|
||||
};
|
||||
|
||||
SdrDevice.prototype.render = function() {
|
||||
var self = this;
|
||||
self.el.empty();
|
||||
@ -164,7 +192,7 @@ SdrDevice.prototype.render = function() {
|
||||
}).forEach(function(key){
|
||||
var value = data[key];
|
||||
var inputClass = self.getInputClass(key);
|
||||
var input = new inputClass(key, value, self.getLabel(key));
|
||||
var input = new inputClass(key, value, self.getInputOptions(key));
|
||||
self.inputs[key] = input;
|
||||
self.el.append(input.render());
|
||||
});
|
||||
@ -190,7 +218,7 @@ SdrDevice.prototype.renderFieldSelector = function() {
|
||||
'</div>';
|
||||
};
|
||||
|
||||
RtlSdrDevice = function(el, data) {
|
||||
RtlSdrDevice = function() {
|
||||
SdrDevice.apply(this, arguments);
|
||||
};
|
||||
|
||||
@ -202,14 +230,58 @@ RtlSdrDevice.prototype.getMappings = function() {
|
||||
return $.extend(new Object(), mappings, {
|
||||
"device": {
|
||||
constructor: TextInput,
|
||||
label: "Serial Number",
|
||||
inputOptions:{
|
||||
label: "Serial number"
|
||||
},
|
||||
initialValue: ""
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
SoapySdrDevice = function() {
|
||||
SdrDevice.apply(this, arguments);
|
||||
};
|
||||
|
||||
SoapySdrDevice.prototype = Object.create(SdrDevice.prototype);
|
||||
SoapySdrDevice.prototype.constructor = SoapySdrDevice;
|
||||
|
||||
SoapySdrDevice.prototype.getMappings = function() {
|
||||
var mappings = SdrDevice.prototype.getMappings.apply(this, arguments);
|
||||
return $.extend(new Object(), mappings, {
|
||||
"device": {
|
||||
constructor: TextInput,
|
||||
inputOptions:{
|
||||
label: "Soapy device selector"
|
||||
},
|
||||
initialValue: ""
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
SdrplaySdrDevice = function() {
|
||||
SoapySdrDevice.apply(this, arguments);
|
||||
};
|
||||
|
||||
SdrplaySdrDevice.prototype = Object.create(SoapySdrDevice.prototype);
|
||||
SdrplaySdrDevice.prototype.constructor = SdrplaySdrDevice;
|
||||
|
||||
SdrplaySdrDevice.prototype.getMappings = function() {
|
||||
var mappings = SoapySdrDevice.prototype.getMappings.apply(this, arguments);
|
||||
return $.extend(new Object(), mappings, {
|
||||
"rf_gain": {
|
||||
constructor: SoapyGainInput,
|
||||
initialValue: 0,
|
||||
inputOptions: {
|
||||
label: "Gain",
|
||||
gains: ['RFGR', 'IFGR']
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
SdrDevice.types = {
|
||||
'rtl_sdr': RtlSdrDevice
|
||||
'rtl_sdr': RtlSdrDevice,
|
||||
'sdrplay': SdrplaySdrDevice
|
||||
};
|
||||
|
||||
$.fn.sdrdevice = function() {
|
||||
|
Loading…
Reference in New Issue
Block a user