STR Extensions #244
@ -129,11 +129,12 @@ class SetId(enum.IntEnum):
|
|||||||
LIMITS = 68
|
LIMITS = 68
|
||||||
CENTROIDING = 72
|
CENTROIDING = 72
|
||||||
LISA = 73
|
LISA = 73
|
||||||
MATCHED_CENTROIDS = 89
|
AUTO_BLOB = 89
|
||||||
BLOB = 90
|
MATCHED_CENTROIDS = 90
|
||||||
BLOBS = 91
|
BLOB = 91
|
||||||
CENTROID = 92
|
BLOBS = 92
|
||||||
CENTROIDS = 93
|
CENTROID = 93
|
||||||
|
CENTROIDS = 94
|
||||||
|
|
||||||
|
|
||||||
class FileDefs:
|
class FileDefs:
|
||||||
@ -808,17 +809,18 @@ def handle_solution_set(hk_data: bytes, pw: PrintWrapper):
|
|||||||
|
|
||||||
|
|
||||||
def handle_blob_set(hk_data: bytes, pw: PrintWrapper):
|
def handle_blob_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
pw.dlog("Received Blob set")
|
pw.dlog("Received Blob Set")
|
||||||
if len(hk_data) < 14:
|
if len(hk_data) < 14:
|
||||||
_LOGGER.warning(f"Blob dataset HK data with length {len(hk_data)} too short")
|
_LOGGER.warning(f"Blob dataset HK data with length {len(hk_data)} too short")
|
||||||
return
|
return
|
||||||
current_idx = unpack_time_hk(hk_data, 0, pw)
|
current_idx = unpack_time_hk(hk_data, 0, pw)
|
||||||
blob_count = struct.unpack("!I", hk_data[current_idx : current_idx + 4])
|
blob_count = struct.unpack("!I", hk_data[current_idx : current_idx + 4])
|
||||||
pw.dlog(f"Blob count: {blob_count}")
|
pw.dlog(f"Blob count: {blob_count}")
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx + 4 :], num_vars=3)
|
||||||
|
|
||||||
|
|
||||||
def handle_blobs_set(hk_data: bytes, pw: PrintWrapper):
|
def handle_blobs_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
pw.dlog("Received Blobs set")
|
pw.dlog("Received Blobs Set")
|
||||||
if len(hk_data) < 6 + 2 * 2 * 8:
|
if len(hk_data) < 6 + 2 * 2 * 8:
|
||||||
_LOGGER.warning(f"Blobs dataset HK data with length {len(hk_data)} too short")
|
_LOGGER.warning(f"Blobs dataset HK data with length {len(hk_data)} too short")
|
||||||
return
|
return
|
||||||
@ -832,7 +834,16 @@ def handle_blobs_set(hk_data: bytes, pw: PrintWrapper):
|
|||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Count {count} | Count Used {count_used} | Number of skipped 4lines {nr_4lines_skipped}"
|
f"Count {count} | Count Used {count_used} | Number of skipped 4lines {nr_4lines_skipped}"
|
||||||
)
|
)
|
||||||
# TODO: Parse X, Y times 8
|
fmt_coords = "!HHHHHHHH"
|
||||||
|
inc_len = struct.calcsize(fmt_coords)
|
||||||
|
x_coords = struct.unpack(fmt_coords, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
y_coords = struct.unpack(fmt_coords, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
pw.dlog("{:<8} {:<8}".format("X", "Y"))
|
||||||
|
for idx in range(8):
|
||||||
|
pw.dlog("{:<8} {:<8}".format(x_coords[idx], y_coords[idx]))
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=7)
|
||||||
|
|
||||||
|
|
||||||
def handle_centroid_set(hk_data: bytes, pw: PrintWrapper):
|
def handle_centroid_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
@ -843,24 +854,75 @@ def handle_centroid_set(hk_data: bytes, pw: PrintWrapper):
|
|||||||
)
|
)
|
||||||
current_idx = unpack_time_hk(hk_data, 0, pw)
|
current_idx = unpack_time_hk(hk_data, 0, pw)
|
||||||
centroid_count = struct.unpack("!I", hk_data[current_idx : current_idx + 4])
|
centroid_count = struct.unpack("!I", hk_data[current_idx : current_idx + 4])
|
||||||
pw.dlog(f"Blob count: {centroid_count}")
|
pw.dlog(f"Centroid count: {centroid_count}")
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=3)
|
||||||
|
|
||||||
|
|
||||||
def handle_centroids_set(hk_data: bytes, pw: PrintWrapper):
|
def handle_centroids_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
pw.dlog("Received Centroids set")
|
pw.dlog("Received Centroids Set")
|
||||||
current_idx = unpack_time_hk(hk_data, 0, pw)
|
current_idx = unpack_time_hk(hk_data, 0, pw)
|
||||||
centroids_count = struct.unpack("!H", hk_data[current_idx : current_idx + 2])
|
centroids_count = struct.unpack("!H", hk_data[current_idx : current_idx + 2])
|
||||||
pw.dlog(f"Centroids count: {centroids_count}")
|
pw.dlog(f"Centroids count: {centroids_count}")
|
||||||
# TODO: Parse X, Y, M times 16
|
fmt_coords = "!HHHHHHHHHHHHHHHH"
|
||||||
|
inc_len = struct.calcsize(fmt_coords)
|
||||||
|
x_coords = struct.unpack(fmt_coords, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
y_coords = struct.unpack(fmt_coords, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
magnitude = struct.unpack(fmt_coords, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
pw.dlog("{:<8} {:<8} {:<8}".format("X", "Y", "Magnitude"))
|
||||||
|
for idx in range(16):
|
||||||
|
pw.dlog(
|
||||||
|
"{:<8} {:<8} {:<8}".format(x_coords[idx], y_coords[idx], magnitude[idx])
|
||||||
|
)
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=6)
|
||||||
|
|
||||||
|
|
||||||
def handle_matched_centroids_set(hk_data: bytes, pw: PrintWrapper):
|
def handle_matched_centroids_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
pw.dlog("Received Matched Centroids set")
|
pw.dlog("Received Matched Centroids Set")
|
||||||
current_idx = unpack_time_hk(hk_data, 0, pw)
|
current_idx = unpack_time_hk(hk_data, 0, pw)
|
||||||
num_matched_centroids = hk_data[current_idx]
|
num_matched_centroids = hk_data[current_idx]
|
||||||
current_idx += 1
|
current_idx += 1
|
||||||
pw.dlog(f"Number of matched centroids {num_matched_centroids}")
|
pw.dlog(f"Number of matched centroids {num_matched_centroids}")
|
||||||
# TODO: Parse ID, X, Y, ERROR X, ERROR Y times 16
|
fmt_ids = "!IIIIIIIIIIIIIIII"
|
||||||
|
inc_len = struct.calcsize(fmt_ids)
|
||||||
|
star_id = struct.unpack(fmt_ids, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
fmt_floats = "!ffffffffffffffff"
|
||||||
|
inc_len = struct.calcsize(fmt_floats)
|
||||||
|
x_coords = struct.unpack(fmt_floats, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
y_coords = struct.unpack(fmt_floats, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
x_errors = struct.unpack(fmt_floats, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
y_errors = struct.unpack(fmt_floats, hk_data[current_idx : current_idx + inc_len])
|
||||||
|
current_idx += inc_len
|
||||||
|
pw.dlog(
|
||||||
|
"{:<8} {:<8} {:<8} {:<8} {:<8}".format(
|
||||||
|
"Star ID", "X", "Y", "X Error", "Y Error"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
for idx in range(16):
|
||||||
|
pw.dlog(
|
||||||
|
"{:<8} {:<8} {:<8} {:<8} {:<8}".format(
|
||||||
|
star_id[idx], x_coords[idx], y_coords[idx], x_errors[idx], y_errors[idx]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=8)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_auto_blob_set(hk_data: bytes, pw: PrintWrapper):
|
||||||
|
pw.dlog("Received Auto Blob Set")
|
||||||
|
current_idx = unpack_time_hk(hk_data, 0, pw)
|
||||||
|
fmt_threshold = "!f"
|
||||||
|
inc_len = struct.calcsize(fmt_threshold)
|
||||||
|
threshold = struct.unpack(
|
||||||
|
fmt_threshold, hk_data[current_idx : current_idx + inc_len]
|
||||||
|
)[0]
|
||||||
|
pw.dlog(f"Threshold {threshold}")
|
||||||
|
FsfwTmTcPrinter.get_validity_buffer(hk_data[current_idx:], num_vars=3)
|
||||||
|
|
||||||
|
|
||||||
@tmtc_definitions_provider
|
@tmtc_definitions_provider
|
||||||
|
Loading…
Reference in New Issue
Block a user