Skip to content

Commit

Permalink
Server: Add support for telemetry streaming
Browse files Browse the repository at this point in the history
  • Loading branch information
goldarte committed Oct 30, 2019
1 parent fbff10c commit 4619a34
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions Server/server_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from server_gui import Ui_MainWindow

from server import *
import messaging_lib as messaging
from copter_table_models import *
from emergency import *

Expand Down Expand Up @@ -54,6 +55,24 @@ def wrapper(*args, **kwargs):

return inner

class Signal(object):
class Emitter(QObject):
send = pyqtSignal(str)
def __init__(self):
super(Signal.Emitter, self).__init__()

def __init__(self):
self.emitter = Signal.Emitter()

def send_message(self, message):
self.emitter.send.emit(message)

def connect(self, signal, slot):
signal.emitter.send.connect(slot)

class Sender(object):
def __init__(self):
self.signal = Signal()

# noinspection PyArgumentList,PyCallByClass
class MainWindow(QtWidgets.QMainWindow):
Expand All @@ -70,6 +89,7 @@ def __init__(self):
self.player = QtMultimedia.QMediaPlayer()

self.init_model()
self.signal = Signal()

self.show()

Expand Down Expand Up @@ -211,6 +231,33 @@ def set_copter_data(self, value, col, copter_data_row):

self.signals.update_data_signal.emit(row, col, data, ModelDataRole)

@pyqtSlot(str)
def update_table_data(self, message):
fields = message.split(';')
logging.info(fields)
# copter_id git_version animation_id battery_v battery_p system_status calibration_status mode selfcheck current_position start_position copter_time
copter_id = fields[0]
git_version = fields[1]
animation_id = fields[2]
battery_v = fields[3]
battery_p = fields[4]
sys_status = fields[5]
cal_status = fields[6]
mode = fields[7]
selfcheck = fields[8]
current_pos = fields[9]
start_pos = fields[10]
copter_time = fields[11]
row = self.model.get_row_index(self.model.get_row_by_attr('copter_id', copter_id))
logging.info("Row = {}".format(row))
self.signals.update_data_signal.emit(row, 1, animation_id, ModelDataRole)
self.signals.update_data_signal.emit(row, 2, battery_v, ModelDataRole)
self.signals.update_data_signal.emit(row, 3, battery_p, ModelDataRole)
self.signals.update_data_signal.emit(row, 4, sys_status, ModelDataRole)
self.signals.update_data_signal.emit(row, 5, cal_status, ModelDataRole)
self.signals.update_data_signal.emit(row, 6, selfcheck, ModelDataRole)
self.signals.update_data_signal.emit(row, 7, current_pos, ModelDataRole)
self.signals.update_data_signal.emit(row, 8, "{}".format(round(float(copter_time) - time.time(), 3)), ModelDataRole)

#def set_copter_id(self, value, copter_data_row):
# col = 0
Expand Down Expand Up @@ -565,6 +612,11 @@ def emergency(self):
self.model.data_contents[row_num].client \
.send_message("disarm")

@messaging.message_callback("telem")
def get_telem_data(*args, **kwargs):
message = kwargs.get("message", None)
sender.signal.send_message(message)


if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
Expand All @@ -573,7 +625,9 @@ def emergency(self):

#app.exec_()
with loop:
sender = Sender()
window = MainWindow()
sender.signal.connect(sender.signal, window.update_table_data)

Client.on_first_connect = window.new_client_connected
Client.on_connect = window.client_connection_changed
Expand Down

0 comments on commit 4619a34

Please sign in to comment.