done
This commit is contained in:
parent
5a49c4a6ce
commit
d623e83be8
@ -2,6 +2,7 @@ import struct
|
|||||||
from eive_tmtc.config.object_ids import *
|
from eive_tmtc.config.object_ids import *
|
||||||
from eive_tmtc.tmtc.acs.imtq import ImtqActionId
|
from eive_tmtc.tmtc.acs.imtq import ImtqActionId
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
|
from eive_tmtc.tmtc.core import handle_core_ctrl_action_replies
|
||||||
from eive_tmtc.tmtc.payload.ploc_mpsoc import PlocReplyIds
|
from eive_tmtc.tmtc.payload.ploc_mpsoc import PlocReplyIds
|
||||||
from eive_tmtc.tmtc.payload.ploc_supervisor import SupvActionId
|
from eive_tmtc.tmtc.payload.ploc_supervisor import SupvActionId
|
||||||
from eive_tmtc.tmtc.acs.star_tracker import StarTrackerActionId
|
from eive_tmtc.tmtc.acs.star_tracker import StarTrackerActionId
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import enum
|
import enum
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import struct
|
import struct
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from eive_tmtc.pus_tm.defs import PrintWrapper
|
from eive_tmtc.pus_tm.defs import PrintWrapper
|
||||||
|
|
||||||
@ -603,23 +605,37 @@ def handle_core_ctrl_action_replies(
|
|||||||
return
|
return
|
||||||
seq_idx = struct.unpack("!I", custom_data[0:4])[0]
|
seq_idx = struct.unpack("!I", custom_data[0:4])[0]
|
||||||
total_chunks = struct.unpack("!I", custom_data[4:8])[0]
|
total_chunks = struct.unpack("!I", custom_data[4:8])[0]
|
||||||
compressed = custom_data[4]
|
compressed = custom_data[8]
|
||||||
ls_cmd = custom_data[5:].decode()
|
ls_cmd = custom_data[9:].split(b"\x00")[0].decode()
|
||||||
# Include length of NULL termination
|
# Include length of NULL termination
|
||||||
file_data_offset = 5 + len(ls_cmd) + 1
|
file_data_offset = 9 + len(ls_cmd) + 1
|
||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Received directory listing dump for ls command {ls_cmd}. Chunk {seq_idx}/{total_chunks}"
|
f"Received directory listing dump for ls command {ls_cmd}. "
|
||||||
|
f"Chunk {seq_idx + 1}/{total_chunks}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def remove_if_exists_and_new(seq_idx_: int, path_: Path):
|
||||||
|
if seq_idx_ == 0 and path_.exists():
|
||||||
|
os.remove(path_)
|
||||||
|
|
||||||
if compressed:
|
if compressed:
|
||||||
|
path = Path("dir_listing.txt.gz")
|
||||||
|
remove_if_exists_and_new(seq_idx, path)
|
||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Compression option: {compressed}. Dumping file into dir_listing.txt.gz"
|
f"Compression option: {compressed}. Dumping file into dir_listing.txt.gz"
|
||||||
)
|
)
|
||||||
with open("dir_listing.txt.gz", "ab") as listing_file:
|
with open(path, "ab") as listing_file:
|
||||||
listing_file.write(custom_data[file_data_offset:])
|
listing_file.write(custom_data[file_data_offset:])
|
||||||
else:
|
else:
|
||||||
|
path = Path("dir_listing.txt")
|
||||||
|
remove_if_exists_and_new(seq_idx, path)
|
||||||
pw.dlog(
|
pw.dlog(
|
||||||
f"Compression option: {compressed}. Dumping file into dir_listing.txt"
|
f"Compression option: {compressed}. Dumping file into dir_listing.txt"
|
||||||
)
|
)
|
||||||
with open("dir_listing.txt", "a") as listing_file:
|
with open(path, "a") as listing_file:
|
||||||
listing_file_str = custom_data[file_data_offset:].decode()
|
listing_file_str = custom_data[file_data_offset:].decode()
|
||||||
listing_file.write(listing_file_str)
|
listing_file.write(listing_file_str)
|
||||||
|
if seq_idx + 1 == total_chunks:
|
||||||
|
pw.dlog("Full directory listing: ")
|
||||||
|
with open("dir_listing.txt", "r") as listing_file:
|
||||||
|
print(listing_file.read())
|
||||||
|
Loading…
Reference in New Issue
Block a user