mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-06-02 10:09:32 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user