Professional Documents
Culture Documents
'use strict';
var ROVpilot;
// Instance variables
this.cockpit = cockpit;
this.power = .1; //default to mid power
this.vtrim = 0; //default to no trim
this.ttrim = 0;
this.tilt = 0;
this.light = 0;
this.sendToROVEnabled = true;
this.positions = {
throttle: 0,
yaw: 0,
lift: 0
};
this.sendUpdateEnabled = true;
var SAMPLE_PERIOD = 1000 / CONFIG.sample_freq; //ms
var trimHeld = false;
this.priorControls = {};
this.listen();
$("#thrustfactor").text(2);
};
//This pattern will hook events in the cockpit and pull them all back
//so that the reference to this instance is available for further processing
ROVpilot.prototype.listen = function listen() {
var rov = this;
cockpitEventEmitter.on("gamepad.connected",function(){
$('#gamepad').toggleClass('hidden',false);
});
cockpitEventEmitter.on("gamepad.disconnected",function(){
$('#gamepad').toggleClass('hidden',true);
});
cockpitEventEmitter.on('rovpilot.allStop',function(){ rov.allStop()});
cockpitEventEmitter.on('rovpilot.setThrottle',function(v)
{ rov.setThrottle(v)});
cockpitEventEmitter.on('rovpilot.setYaw',function(v){ rov.setYaw(v)});
cockpitEventEmitter.on('rovpilot.setLift',function(v){ rov.setLift(v)});
cockpitEventEmitter.on('rovpilot.powerLevel',function(v)
{ rov.powerLevel(v)});
cockpitEventEmitter.on('rovpilot.adjustVerticleTrim',function(v)
{ rov.adjustVerticleTrim(v)});
cockpitEventEmitter.on('rovpilot.adjustThrottleTrim',function(v)
{ rov.adjustThrottleTrim(v)});
cockpitEventEmitter.on('rovpilot.adjustCameraTilt',function(v)
{ rov.adjustCameraTilt(v)});
cockpitEventEmitter.on('rovpilot.setCameraTilt',function(v)
{ rov.setCameraTilt(v)});
cockpitEventEmitter.on('rovpilot.adjustLights',function(v)
{ rov.adjustLights(v)});
cockpitEventEmitter.on('rovpilot.toggleLasers',function(v)
{ rov.toggleLasers()});
cockpitEventEmitter.on('rovpilot.toggleLights',function(v)
{ rov.toggleLights()});
cockpitEventEmitter.on('rovpilot.incrimentPowerLevel', function()
{ rov.incrimentPowerLevel()});
cockpitEventEmitter.on('rovpilot.powerOnESCs', function()
{ rov.powerOnESCs()});
cockpitEventEmitter.on('rovpilot.powerOffESCs', function()
{ rov.powerOffESCs()});
cockpitEventEmitter.on('rovpilot.toggleholdHeading', function()
{ rov.toggleholdHeading()});
cockpitEventEmitter.on('rovpilot.toggleholdDepth', function()
{ rov.toggleholdDepth()});
cockpitEventEmitter.on('rovpilot.manualMotorThrottle', function(p,v,s)
{ rov.manualMotorThrottle(p,v,s)});
cockpitEventEmitter.on('rovpilot.disable', function(){rov.disablePilot()});
cockpitEventEmitter.on('rovpilot.enable', function(){rov.enablePilot()});
};
ROVpilot.prototype.manualMotorThrottle = function
manualMotorThrottle(port,vertical,starbord){
var maxdiff = 0;
maxdiff = Math.max(maxdiff,Math.abs(port-lastSentManualThrottle.port));
maxdiff = Math.max(maxdiff,Math.abs(vertical-
lastSentManualThrottle.vertical));
maxdiff = Math.max(maxdiff,Math.abs(starbord-
lastSentManualThrottle.starbord));
if (vertical < 0) vertical = vertical*2; //make up for async props
// this.cockpit.socket.emit('motor_test', {
// port: 1500 + (-port * 500),
// starbord: 1500 + (-starbord * 500),
// vertical: 1500 + (vertical * 500)
// });
this.cockpit.socket.emit('motor_test', {
port: -port * this.power ,
starbord: -starbord * this.power,
vertical: vertical * this.power
});
lastSentManualThrottle.port = port;
lastSentManualThrottle.vertical = vertical;
lastSentManualThrottle.starbord = starbord;
}
}
}
else
{
controls.yaw = positions.yaw * .2;
if (controls[i] != this.priorControls[i])
{
updateRequired = true;
}
}
}
cockpitEventEmitter.emit('rovpilot.control_update',controls);
this.priorControls = controls;
};
}
window.Cockpit.plugins.push(ROVpilot);
}(window, jQuery));