mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-29 02:38:07 +08:00
BUGFIX: Incorrect frequency display (conversion error) (#3656)
Doxygen / build (push) Has been cancelled
Doxygen / build (push) Has been cancelled
This commit is contained in:
@@ -55,11 +55,17 @@ class IvyRecorder(QObject):
|
||||
|
||||
|
||||
# Subscribe to everything for detecting senders
|
||||
self.ivy.subscribe(self.__detectSenders)
|
||||
self.ivy.subscribe(self.__detectSenders,"(.*ALIVE.*)")
|
||||
|
||||
# Start Ivy
|
||||
self.ivy.start()
|
||||
|
||||
# Manually add ground
|
||||
self.__known_senders[0] = None
|
||||
self.records[0] = dict()
|
||||
self.new_sender.emit(0)
|
||||
self.recordSender(0)
|
||||
|
||||
def getMessage(self,i:MessageIndex) -> MessageLog:
|
||||
return self.records[i.sender_id][i.class_id][i.message_id]
|
||||
|
||||
@@ -70,14 +76,14 @@ class IvyRecorder(QObject):
|
||||
for m in c.values():
|
||||
m.updateSize(bsize)
|
||||
|
||||
def __detectSenders(self,sender_id:int,msg:PprzMessage):
|
||||
def __detectSenders(self,sender_id,msg:PprzMessage):
|
||||
|
||||
if isinstance(sender_id,list):
|
||||
for id in sender_id:
|
||||
self.__detectSenders(id,msg)
|
||||
elif isinstance(sender_id,str) and '[' in sender_id:
|
||||
sender_id = sender_id[1:-1].split(',')
|
||||
self.__detectSenders(sender_id)
|
||||
self.__detectSenders(sender_id,msg)
|
||||
else:
|
||||
sender_id = int(sender_id)
|
||||
|
||||
@@ -94,17 +100,21 @@ class IvyRecorder(QObject):
|
||||
try:
|
||||
class_dict = self.records[sender_id][timed_msg.class_id]
|
||||
except KeyError:
|
||||
self.records[sender_id][timed_msg.class_id] = dict()
|
||||
try:
|
||||
self.records[sender_id][timed_msg.class_id] = dict()
|
||||
except KeyError:
|
||||
self.__detectSenders(sender_id,msg)
|
||||
self.records[sender_id][timed_msg.class_id] = dict()
|
||||
class_dict = self.records[sender_id][timed_msg.class_id]
|
||||
self.classNames[timed_msg.class_id] = timed_msg.msg_class
|
||||
|
||||
try:
|
||||
class_dict[timed_msg.msg_id].addMessage(timed_msg)
|
||||
p = class_dict[timed_msg.msg_id].addMessage(timed_msg)
|
||||
except KeyError:
|
||||
class_dict[timed_msg.msg_id] = MessageLog(self.__buffer_size)
|
||||
class_dict[timed_msg.msg_id].addMessage(timed_msg)
|
||||
p = class_dict[timed_msg.msg_id].addMessage(timed_msg)
|
||||
new_msg = True
|
||||
|
||||
|
||||
self.data_updated.emit(sender_id,timed_msg.class_id,timed_msg.msg_id,new_msg)
|
||||
|
||||
def recordMessage(self,sender_id:int,msg:PprzMessage):
|
||||
|
||||
@@ -191,6 +191,8 @@ class MessageLog():
|
||||
sublog = MessageLog(self.queue.maxlen)
|
||||
self.__groups[field.val] = sublog
|
||||
sublog.addMessage(msg)
|
||||
|
||||
return self.period
|
||||
|
||||
|
||||
def addMessages(self,msgs:typing.Iterable[TimedPprzMessage]):
|
||||
@@ -225,7 +227,7 @@ class MessageLog():
|
||||
if self.period is None:
|
||||
raise NoMessageError()
|
||||
else:
|
||||
return 10e9/self.period #ns to s, then s to Hz
|
||||
return 1e9/self.period #ns to s, then s to Hz
|
||||
|
||||
def msg_name(self) -> str:
|
||||
return self.newest().name
|
||||
|
||||
@@ -204,7 +204,7 @@ class MessageSubgroupItem(QStandardItem):
|
||||
fieldAltValItem = QStandardItem()
|
||||
fieldAltValItem.setEditable(False)
|
||||
|
||||
newitems = [None] * COLUMN_COUNT#####
|
||||
newitems = [None] * COLUMN_COUNT
|
||||
newitems[FieldColumns.ROOT] = fieldRootItem
|
||||
newitems[FieldColumns.VALUE] = fieldValueItem
|
||||
newitems[FieldColumns.ALT_VALUE] = fieldAltValItem
|
||||
@@ -447,7 +447,7 @@ class MessageClassItem(QStandardItem):
|
||||
id = msg.msg_id()
|
||||
name = msg.msg_name()
|
||||
timestamp = msg.newest().timestamp
|
||||
dt = (time.time_ns() - timestamp)/10e9
|
||||
dt = (time.time_ns() - timestamp)/1e9
|
||||
|
||||
try:
|
||||
freq = msg.meanFreq()
|
||||
@@ -598,7 +598,14 @@ class IvyModel(QStandardItemModel):
|
||||
newPin = pyqtSignal(int,int,int,str,bool)
|
||||
multiPinningDone = pyqtSignal()
|
||||
|
||||
def __init__(self,ivy_recorder:IvyRecorder, parent: typing.Optional[QObject] = None):
|
||||
def __init__(self,ivy_recorder:IvyRecorder, parent: typing.Optional[QObject] = None, refresh_time:int = 500):
|
||||
""" Build a QStandardItemModel linked to an IvyRecorder storing messages
|
||||
|
||||
Args:
|
||||
ivy_recorder (IvyRecorder): Interface storing messages
|
||||
parent (typing.Optional[QObject], optional): Parent widget. Defaults to None.
|
||||
refresh_time (int, optional): Time in ms between updates. Defaults to 500ms.
|
||||
"""
|
||||
super().__init__(parent)
|
||||
|
||||
self.setHorizontalHeaderLabels(["Name","Id/Value","Time/Alt Value"])
|
||||
@@ -612,7 +619,7 @@ class IvyModel(QStandardItemModel):
|
||||
self.timer = QTimer()
|
||||
self.timer.timeout.connect(self.update)
|
||||
|
||||
self.timerDt = 500 # Time between updates, in ms
|
||||
self.timerDt = refresh_time # Time between updates, in ms
|
||||
|
||||
self.timer.start(self.timerDt)
|
||||
|
||||
@@ -752,7 +759,7 @@ class IvyModel(QStandardItemModel):
|
||||
|
||||
senderItem = SenderItem(senderId)
|
||||
|
||||
newItems = [QStandardItem()] * COLUMN_COUNT
|
||||
newItems = [QStandardItem() for i in range(COLUMN_COUNT)]
|
||||
newItems[SenderColumns.ROOT] = senderItem
|
||||
|
||||
for i in newItems:
|
||||
|
||||
Reference in New Issue
Block a user