Merge branch 'feature-branch' of https://github.com/CopterExpress/clever-show.git; branch 'feature-branch' of https://github.com/CopterExpress/clever-show into feature-branch

This commit is contained in:
Artem30801
2019-10-26 14:36:39 +03:00
6 changed files with 40 additions and 22 deletions

View File

@@ -47,6 +47,8 @@ class Client(object):
global active_client
active_client = self
# self._last_ping_time = 0
def load_config(self):
self.config.read(self.config_path)
@@ -119,6 +121,8 @@ class Client(object):
try:
self.client_socket = socket.socket()
self.client_socket.settimeout(timeout)
self.client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
self.client_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.client_socket.connect((self.server_host, self.server_port))
except socket.error as error:
if isinstance(error, OSError):
@@ -186,6 +190,9 @@ class Client(object):
def _process_connections(self):
while True:
events = self.selector.select(timeout=1)
# if time.time() - self._last_ping_time > 5:
# self.server_connection.send_message("ping")
# self._last_ping_time = time.time()
# logging.debug("tick")
for key, mask in events: # TODO add notifier to client!
connection = key.data

View File

@@ -210,6 +210,11 @@ def configure_bashrc(hostname):
return True
@messaging.message_callback("execute")
def _execute(*args, **kwargs):
command = kwargs.get("command", None)
if command:
execute_command(command)
@messaging.message_callback("id")
def _response_id(*args, **kwargs):
@@ -226,13 +231,13 @@ def _response_id(*args, **kwargs):
configure_hosts(hostname)
configure_bashrc(hostname)
configure_motd(hostname)
execute_command("hostname {}".format(hostname))
restart_service("dhcpcd")
time.sleep(0.5)
restart_service("avahi-daemon")
time.sleep(0.5)
restart_service("clever")
restart_service("smbd")
execute_command("reboot")
#execute_command("hostname {}".format(hostname))
#restart_service("dhcpcd")
#restart_service("avahi-daemon")
#restart_service("smbd")
#restart_service("roscore")
#restart_service("clever")
restart_service("clever-show")

View File

@@ -202,11 +202,12 @@ class CopterDataModel(QtCore.QAbstractTableModel):
if role == Qt.CheckStateRole:
self.data_contents[row].states.checked = value
elif role == Qt.EditRole: # For user actions with data
if col == 0 and self.on_id_changed:
self.data_contents[row][col] = "Awaiting for response"
self.data_contents[row].states.copter_id = None
if col == 0: # and self.on_id_changed:
#self.data_contents[row][col] = "Awaiting for response"
#self.data_contents[row].states.copter_id = None
self.data_contents[row].client.send_message("id", {"new_id": value})
self.data_contents[row].client.remove()
else:
self.data_contents[row][col] = value

View File

@@ -39,6 +39,7 @@ class Server(messaging.Singleton):
self.sel = selectors.DefaultSelector()
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
self.server_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.host = socket.gethostname()
@@ -141,7 +142,7 @@ class Server(messaging.Singleton):
while self.client_processor_thread_running.is_set():
events = self.sel.select()
logging.error('tick')
#logging.error('tick')
for key, mask in events:
# logging.error(mask)
# logging.error(str(key.data))

View File

@@ -74,7 +74,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.show()
def init_model(self):
self.model.on_id_changed = self.set_copter_id
# self.model.on_id_changed = self.set_copter_id
self.proxy_model.setDynamicSortFilter(True)
self.proxy_model.setSourceModel(self.model)
@@ -210,16 +210,18 @@ class MainWindow(QtWidgets.QMainWindow):
self.signals.update_data_signal.emit(row, col, data, ModelDataRole)
def set_copter_id(self, value, copter_data_row):
col = 0
row = self.model.get_row_index(copter_data_row)
if row is None:
logging.error("No such client!")
return
copter_data_row.client.copter_id = value
self.signals.update_data_signal.emit(row, col, value, ModelDataRole)
self.signals.update_data_signal.emit(row, col, True, ModelStateRole)
#def set_copter_id(self, value, copter_data_row):
# col = 0
# row = self.model.get_row_index(copter_data_row)
# if row is None:
# logging.error("No such client!")
# return
# logging.info("SET COPTER ID TO {}".format(value))
#
# copter_data_row.client.copter_id = value
# self.signals.update_data_signal.emit(row, col, value, ModelDataRole)
# self.signals.update_data_signal.emit(row, col, True, ModelStateRole)
@pyqtSlot(QtCore.QModelIndex)
def selfcheck_info_dialog(self, index):

View File

@@ -1,6 +1,8 @@
[Unit]
Description=Clever Show Client Service
After=clever.service
Requires=clever.service
Requires=network.target
After=network.target
[Service]
WorkingDirectory=/home/pi/clever-show/Drone