From bf73530ed72a5c22d9fc6279060d909d22023d4c Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Wed, 7 Sep 2022 14:07:07 +0200
Subject: [PATCH] error handling in calc_timestamp

+ miniscule code formatting
---
 Ccs/packet_config_CHEOPS.py | 2 ++
 Ccs/packet_config_SMILE.py  | 2 ++
 Ccs/plotter.py              | 7 +++----
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/Ccs/packet_config_CHEOPS.py b/Ccs/packet_config_CHEOPS.py
index dcf4d27..f5388d9 100644
--- a/Ccs/packet_config_CHEOPS.py
+++ b/Ccs/packet_config_CHEOPS.py
@@ -105,6 +105,8 @@ def calc_timestamp(time, sync=0, return_bytes=False):
             ftime = 0
         sync = 1 if time[-1].upper() == 'S' else 0
     elif isinstance(time, bytes):
+        if len(time) not in [timepack[1], timepack[1]-timepack[3]]:
+            raise ValueError('Bytestring size ({}) does not match length specified in format ({})'.format(len(time), timepack[1]))
         ctime = int.from_bytes(time[:4], 'big')
         ftime = int.from_bytes(time[4:6], 'big') >> 1
         sync = time[-1] & 1
diff --git a/Ccs/packet_config_SMILE.py b/Ccs/packet_config_SMILE.py
index 1db09e3..c9a4f5f 100644
--- a/Ccs/packet_config_SMILE.py
+++ b/Ccs/packet_config_SMILE.py
@@ -128,6 +128,8 @@ def calc_timestamp(time, sync=None, return_bytes=False):
         sync = 0b101 if time[-1].upper() == 'S' else 0
 
     elif isinstance(time, bytes):
+        if len(time) not in [timepack[1], timepack[1]-timepack[3]]:
+            raise ValueError('Bytestring size ({}) does not match length specified in format ({})'.format(len(time), timepack[1]))
         ctime = int.from_bytes(time[:4], 'big')
         ftime = int.from_bytes(time[4:7], 'big')
         if len(time) == timepack[1]:
diff --git a/Ccs/plotter.py b/Ccs/plotter.py
index 29302f0..1193a65 100644
--- a/Ccs/plotter.py
+++ b/Ccs/plotter.py
@@ -622,7 +622,6 @@ class PlotViewer(Gtk.Window):
         dbcon.close()
         return sid_search
 
-
     def plot_parameter(self, widget=None, parameter=None):
         if parameter is not None:
             hk, parameter = parameter
@@ -643,7 +642,7 @@ class PlotViewer(Gtk.Window):
             st, sst, sid = dbres.fetchall()[0]
 
             rows = rows.filter(DbTelemetry.stc == st, DbTelemetry.sst == sst,
-                               DbTelemetry.raw.like(self.sid_position_query(st,sst,sid)))
+                               DbTelemetry.raw.like(self.sid_position_query(st, sst, sid)))
             #if sid == 0:
             #    rows = rows.filter(DbTelemetry.stc == st, DbTelemetry.sst == sst)
             #else:
@@ -659,14 +658,14 @@ class PlotViewer(Gtk.Window):
             #rows = rows.filter(DbTelemetry.stc == st, DbTelemetry.sst == sst,
             #                   DbTelemetry.data.like(struct.pack('>B', sid) + b'%'))#
             rows = rows.filter(DbTelemetry.stc == st, DbTelemetry.sst == sst,
-                               DbTelemetry.data.like(self.sid_position_query(st,sst,sid)))
+                               DbTelemetry.data.like(self.sid_position_query(st, sst, sid)))
         else:
             userpar = json.loads(self.cfg['ccs-plot_parameters'][parameter])
             rows = rows.filter(DbTelemetry.stc == userpar['ST'], DbTelemetry.sst == userpar['SST'],
                                DbTelemetry.apid == userpar['APID'])
             if 'SID' in userpar and userpar['SID']:
                 #rows = rows.filter(DbTelemetry.data.like(struct.pack('>B', int(userpar['SID'])) + b'%'))
-                rows = rows.filter(DbTelemetry.raw.like(self.sid_position_query(userpar['ST'],userpar['SST'],userpar['SID'])))
+                rows = rows.filter(DbTelemetry.raw.like(self.sid_position_query(userpar['ST'], userpar['SST'], userpar['SID'])))
         if not self.filter_tl2.get_active():
             rows = rows.filter(func.left(DbTelemetry.timestamp, func.length(DbTelemetry.timestamp) - 1) > 2.)
         try:
-- 
GitLab