public/js/mobile-functions.js
var socket;
socket = io.connect("http://192.168.1.10:3000");
//Modes and Info
var DRIVE_AUTO = 'a';
var DRIVE_MANUAL = 'm'; //
var DRIVE_HALT = 'h'; //
var DRIVE = DRIVE_MANUAL;
var SCAN_CONTINUOUS = 'o'; //
var SCAN_TURN = 't'; //
var SCAN_FORWARD = 'f'; //
var SCAN_LEFT = 'l'; //
var SCAN_RIGHT = 'r'; //
var SCAN_STOP = 's'; //
var SCAN = SCAN_FORWARD;
//Guidance and Power
var MOVE_FORWARD = 'f'; //
var MOVE_BACK = 'b'; //
var TURN_LEFT = '<'; //
var TURN_RIGHT = '>'; //
var STOP = 's';
var MOVE = STOP;
var old_MOVE = STOP; //this is to resume either forward motion or stop after a turn
var POWER = 0;
var INFO = 0; //
$(function() {
socket.on('robot-info', function (data) {
//console.log("Serial Status: " + data.msg);
$("#robot-status").html("<em>Status: </em>" + data.Status);
$("#robot-info").html("<em>Drive: </em>" + data.Drive +
" <em>Scan: </em>" + data.Scan +
" <em>Power: </em>" + data.Power);
$("#distance-info").html("<em>Left: </em>" + data.Left +
" <em>Forward: </em>" + data.Forward +
" <em>Right: </em>" + data.Right);
});
//$("#robot-status").hide();
$("#robot-info").hide();
$("#distance-info").hide();
/* Scanner Control */
var refreshScannerFunction = function() {
/*
$('#scanner-left').attr("data-theme", "d").removeClass("ui-btn-up-e").addClass("ui-btn-up-d");
$('#scanner-center').attr("data-theme", "e").removeClass("ui-btn-up-d").addClass("ui-btn-up-e");
$('#scanner-right').attr("data-theme", "d").removeClass("ui-btn-up-e").addClass("ui-btn-up-d");
*/
$('#scanner-right').attr("checked",false).checkboxradio("refresh");
$('#scanner-left').attr("checked",false).checkboxradio("refresh");
$('#scanner-center').attr("checked",true).checkboxradio("refresh");
SCAN = SCAN_FORWARD;
UpdateControl();
};
var refreshMoveFunction = function() {
$('#turn-left').attr("checked",false).checkboxradio("refresh");
$('#turn-right').attr("checked",false).checkboxradio("refresh");
MOVE = old_MOVE;
UpdateControl();
if (MOVE == MOVE_FORWARD)
$('#forward').attr("checked",true).checkboxradio("refresh");
else
$('#stop').attr("checked",true).checkboxradio("refresh");
};
$('#scanner-left').click(function() {
console.log("left clicked");
SCAN = SCAN_LEFT;
setTimeout(refreshScannerFunction, 2000);
UpdateControl();
});
$('#scanner-center').click(function() {
console.log("center clicked");
SCAN = SCAN_FORWARD;
UpdateControl();
});
$("#scanner-right").click(function() {
console.log("right clicked");
SCAN = SCAN_RIGHT;
setTimeout(refreshScannerFunction, 2000);
UpdateControl();
});
$('#scanner-continuous').click(function() {
console.log("continuous clicked");
$('#scanner-center').attr("checked",false).checkboxradio("refresh");
$('#scanner-right').attr("checked",false).checkboxradio("refresh");
$('#scanner-left').attr("checked",false).checkboxradio("refresh");
SCAN = SCAN_CONTINUOUS;
UpdateControl();
});
/* Direction Control */
$('#forward').click(function() {
console.log("forward");
$('#turn-left').attr("checked",false).checkboxradio("refresh");
$('#turn-right').attr("checked",false).checkboxradio("refresh");
MOVE = MOVE_FORWARD;
UpdateControl();
});
$('#turn-left').click(function() {
console.log("turn left");
$('#forward').attr("checked",false).checkboxradio("refresh");
$('#back').attr("checked",false).checkboxradio("refresh");
$('#stop').attr("checked",false).checkboxradio("refresh");
setTimeout(refreshMoveFunction, 1000);
old_MOVE = MOVE;
MOVE = TURN_LEFT;
UpdateControl();
});
$('#turn-right').click(function() {
console.log("Turn Right");
$('#forward').attr("checked",false).checkboxradio("refresh");
$('#back').attr("checked",false).checkboxradio("refresh");
$('#stop').attr("checked",false).checkboxradio("refresh");
setTimeout(refreshMoveFunction, 1000);
old_MOVE = MOVE;
MOVE = TURN_RIGHT;
UpdateControl();
});
$('#back').click(function() {
console.log("Move Back");
$('#turn-left').attr("checked",false).checkboxradio("refresh");
$('#turn-right').attr("checked",false).checkboxradio("refresh");
MOVE = MOVE_BACK;
UpdateControl();
setTimeout(function() {
$('#back').attr("checked",false).checkboxradio("refresh");
$('#stop').attr("checked",true).checkboxradio("refresh");
}, 1700);
});
$('#stop').click(function() {
console.log("Stop");
$('#turn-left').attr("checked",false).checkboxradio("refresh");
$('#turn-right').attr("checked",false).checkboxradio("refresh");
MOVE = STOP;
POWER = 0;
$( "#speed" ).val("0").slider("refresh");
console.log("Speed: " + $("#speed").val());
UpdateControl();
});
/* Drive Mode */
$('#drive_auto').click(function() {
console.log("Drive Auto");
DRIVE = DRIVE_AUTO;
$(this).attr("data-theme", "b");
$('#drive_manual').attr("data-theme", "a").removeClass("ui-btn-up-b").addClass("ui-btn-up-a");
UpdateControl();
});
$('#drive_manual').click(function() {
console.log("Drive Manual");
$(this).attr("data-theme", "b");
$('#drive_auto').attr("data-theme", "a").removeClass("ui-btn-up-b").addClass("ui-btn-up-a");
DRIVE = DRIVE_MANUAL;
UpdateControl();
});
/* Speed Control*/
$( "#speed" ).on( 'slidestop', function( event ) {
POWER = $( this ).val();
console.log("Speed: " + POWER);
UpdateControl();
});
/* Robot Info */
$( "#robot-data" ).on( 'slidestop', function( event ) {
var value = $(this).val();
console.log("value: " + value);
if (value == 'on') {
INFO = 1;
$("#robot-info").show('slow');
$("#distance-info").show('slow');
//$("#robot-status").show('slow');
}
else {
INFO = 0;
$("#robot-info").hide('slow');
$("#distance-info").hide('slow');
//$("#robot-status").hide('slow');
}
UpdateControl();
});
});
function UpdateControl() {
str = DRIVE + SCAN + POWER + MOVE + INFO;
socket.emit('robot_control', {output: str});
}