diff --git a/Drone/client.py b/Drone/client.py index aed8dc4..f557081 100644 --- a/Drone/client.py +++ b/Drone/client.py @@ -1,3 +1,4 @@ +import os import time import errno import random @@ -74,6 +75,7 @@ class Client(object): def rewrite_config(self): with open(self.config_path, 'w') as file: self.config.write(file) + os.system("chown -R pi:pi /home/pi/clever-show") def write_config(self, reload_config=True, *config_options): for config_option in config_options: diff --git a/Drone/client_config.ini b/Drone/client_config.ini index 45585ce..f121d9b 100644 --- a/Drone/client_config.ini +++ b/Drone/client_config.ini @@ -1,3 +1,4 @@ + [SERVER] port = 25000 broadcast_port = 8181 @@ -48,5 +49,4 @@ use_leds = False led_pin = 21 x0 = 0 y0 = 0 -z0 = 0 - +z0 = 0 \ No newline at end of file diff --git a/Drone/copter_client.py b/Drone/copter_client.py index 19e7220..cd2f113 100644 --- a/Drone/copter_client.py +++ b/Drone/copter_client.py @@ -376,10 +376,18 @@ def _command_reset_z(*args, **kwargs): @messaging.message_callback("update_repo") def _command_update_repo(*args, **kwargs): - os.system("git reset --hard origin/master") + os.system("mv /home/pi/clever-show/Drone/client_config.ini /home/pi/clever-show/Drone/client_config_tmp.ini") + os.system("git reset --hard HEAD") + os.system("git checkout master") os.system("git fetch") - os.system("git pull") - os.system("chown -R pi:pi ~/CleverSwarm") + os.system("git pull --rebase") + os.system("mv /home/pi/clever-show/Drone/client_config_tmp.ini /home/pi/clever-show/Drone/client_config.ini") + os.system("chown -R pi:pi /home/pi/clever-show") + +@messaging.message_callback("reboot_all") +def _command_reboot_all(*args, **kwargs): + reboot_fcu() + execute_command("reboot") @messaging.message_callback("reboot_fcu") def _command_reboot(*args, **kwargs): diff --git a/Server/server.py b/Server/server.py index 311b924..b612711 100644 --- a/Server/server.py +++ b/Server/server.py @@ -314,7 +314,10 @@ class Client(messaging.ConnectionManager): if self.connected: self.close() if self.clients: - self.clients.pop(self.addr[0]) + try: + self.clients.pop(self.addr[0]) + except Exception as e: + logging.error(e) logging.info("Client {} successfully removed!".format(self.copter_id)) @requires_connect diff --git a/Server/server_gui.py b/Server/server_gui.py index 94f9018..dcc652c 100644 --- a/Server/server_gui.py +++ b/Server/server_gui.py @@ -245,6 +245,8 @@ class Ui_MainWindow(object): self.action_remove_row.setObjectName("action_remove_row") self.action_send_calibrations = QtWidgets.QAction(MainWindow) self.action_send_calibrations.setObjectName("action_send_calibrations") + self.action_reboot_all = QtWidgets.QAction(MainWindow) + self.action_reboot_all.setObjectName("action_reboot_all") self.menuDeveloper_mode.addAction(self.action_send_any_file) self.menuDeveloper_mode.addAction(self.actionSend_any_command) self.menuOptions.addAction(self.action_send_animations) @@ -261,11 +263,12 @@ class Ui_MainWindow(object): self.menuDeveloper_mode_2.addAction(self.action_restart_clever) self.menuDeveloper_mode_2.addAction(self.action_restart_clever_show) self.menuDeveloper_mode_2.addAction(self.action_update_client_repo) + self.menuDeveloper_mode_2.addAction(self.action_reboot_all) self.menuDrone.addAction(self.action_set_z_offset_to_ground) self.menuDrone.addAction(self.action_reset_z_offset) + self.menuDrone.addAction(self.action_remove_row) self.menuDrone.addSeparator() self.menuDrone.addAction(self.menuDeveloper_mode_2.menuAction()) - self.menuDrone.addAction(self.action_remove_row) self.menuMusic.addAction(self.action_select_music_file) self.menuMusic.addAction(self.action_play_music) self.menuMusic.addAction(self.action_stop_music) @@ -331,3 +334,4 @@ class Ui_MainWindow(object): self.action_stop_music.setText(_translate("MainWindow", "Stop music")) self.action_remove_row.setText(_translate("MainWindow", "Remove from table")) self.action_send_calibrations.setText(_translate("MainWindow", "Send camera calibrations")) + self.action_reboot_all.setText(_translate("MainWindow", "Reboot all")) diff --git a/Server/server_gui.ui b/Server/server_gui.ui index 60e9d8e..36569a1 100644 --- a/Server/server_gui.ui +++ b/Server/server_gui.ui @@ -418,12 +418,13 @@ + + - @@ -551,6 +552,11 @@ Send camera calibrations + + + Reboot all + + start_delay_spin diff --git a/Server/server_qt.py b/Server/server_qt.py index d08f822..d690d82 100644 --- a/Server/server_qt.py +++ b/Server/server_qt.py @@ -152,6 +152,7 @@ class MainWindow(QtWidgets.QMainWindow): self.ui.action_restart_clever.triggered.connect(self.restart_clever) self.ui.action_restart_clever_show.triggered.connect(self.restart_clever_show) self.ui.action_update_client_repo.triggered.connect(self.update_client_repo) + self.ui.action_reboot_all.triggered.connect(self.reboot_all_on_selected) self.ui.action_set_start_to_current_position.triggered.connect(self.update_start_to_current_position) self.ui.action_reset_start.triggered.connect(self.reset_start) self.ui.action_set_z_offset_to_ground.triggered.connect(self.set_z_offset_to_ground) @@ -439,7 +440,12 @@ class MainWindow(QtWidgets.QMainWindow): @pyqtSlot() def update_client_repo(self): for copter in self.model.user_selected(): - copter.client.send_message("update_repo") + copter.client.send_message("update_repo") + + @pyqtSlot() + def reboot_all_on_selected(self): + for copter in self.model.user_selected(): + copter.client.send_message("reboot_all") @pyqtSlot() def update_start_to_current_position(self): diff --git a/messaging_lib.py b/messaging_lib.py index 2e9a9b8..357e7f1 100644 --- a/messaging_lib.py +++ b/messaging_lib.py @@ -1,4 +1,5 @@ import io +import os import sys import json import socket @@ -382,6 +383,7 @@ class ConnectionManager(object): logger.error("File {} can not be written due error: {}".format(filepath, error)) else: logger.info("File {} successfully received ".format(filepath)) + os.system("chown -R pi:pi /home/pi/clever-show") def write(self): with self._send_lock: