add timeout

This commit is contained in:
Sem van der Hoeven
2023-06-08 12:36:59 +02:00
parent a7c22aa362
commit ba0fdc7863
2 changed files with 16 additions and 10 deletions

View File

@@ -76,9 +76,9 @@
<script>
var ws;
var api_timout;
var checked_for_connection = false;
var connected_to_api = false;
// setInterval(check_ws_connection, 1000, ws);
assign_button_callbacks();
openSocket = () => {
@@ -317,22 +317,23 @@
document.getElementById("failsafe").style.color = "white";
document.getElementById("failsafe").style.textDecoration = "bold";
alert("Failsafe enabled! Drone is landing. The failsafe message is:\n" + data.message);
} else if (data.type == "API_HEARTBEAT") {
clearTimeout(api_timout);
} else {
// decodeBase64Image(data.image, document.getElementById("result-video"));
}
}
function check_ws_connection() {
if (checked_for_connection == false && connected_to_api)
{
if (checked_for_connection == false && connected_to_api) {
console.log("Checking connection to API")
console.log(ws.readyState)
if (ws.readyState != WebSocket.OPEN) {
alert("Lost connection to API!")
ws.send(JSON.stringify({ "command": 7 }));
api_timout = setTimeout(function () {
alert("API did not respond on time!")
document.getElementById("connectedlabel").innerHTML = "Not connected to drone";
document.getElementById("connectbutton").disabled = false;
checked_for_connection = true;
}
document.getElementById("connectbutton").disabled = false;
}, 1000);
}
}
@@ -345,7 +346,7 @@
document.getElementById("connectedlabel").innerHTML = "Connected to drone";
document.getElementById("connectbutton").disabled = true;
connected_to_api = true;
setInterval(check_ws_connection, 1000);
setInterval(check_ws_connection, 2000);
openSocket();
});

View File

@@ -42,6 +42,7 @@ class RequestCommand(Enum):
MOVE_DIRECTION = 3
TAKE_PICTURE = 5
EMERGENCY_STOP = 6
API_HEARTBEAT = 7
class ResponseMessage(Enum):
@@ -53,6 +54,7 @@ class ResponseMessage(Enum):
IMAGE = 1
MOVE_DIRECTION_RESULT = 2
FAILSAFE = 3
API_HEARTBEAT = 4
class ApiListener(Node):
@@ -442,6 +444,9 @@ class ApiListener(Node):
elif message_json['command'] == RequestCommand.EMERGENCY_STOP.value:
self.get_logger().info('Emergency stop command received')
self.emergency_stop()
elif message_json['command'] == RequestCommand.API_HEARTBEAT.value:
self.get_logger().info('API heartbeat received')
self.message_queue.append(json.dumps({"type": ResponseMessage.API_HEARTBEAT.name}))
else:
self.get_logger().error('Received unknown command ' +
str(message_json['command']))