Skip to content
Snippets Groups Projects
Commit f06623a0 authored by Robin Mueller's avatar Robin Mueller
Browse files

deleted obsolete block

parent 98286ac3
No related branches found
No related tags found
No related merge requests found
......@@ -11,90 +11,6 @@ from typing import Deque
from tc.obsw_pus_tc_packer import PusTelecommand
class Service23WriteToFile:
""" This class generates the telecommand packet for the custom PUS service [23, 128]
@param objectID(bytearray): The objectID of the filesystem handler (e.g. SD_CARD_HANDLER_ID, PLOCHandler)
@param repository_path(str): The directory of the file
@param filename(str): The name of the file (e.g. boot.bin)
@param file_data(bytearray): The data to write to the file
"""
def __init__(self, repository_path: str, filename: str, size_of_data_blocks: int,
object_id: bytearray = bytearray([]), file_data: bytearray = bytearray([])):
"""
@param repository_path:
@param filename:
@param object_id:
@param file_data:
"""
self.file_data = []
self.number_of_packets = 0
self.file_data = file_data
self.data_to_pack = object_id
repository_path_length_h = len(bytearray(repository_path, 'utf-8')) >> 8
repository_path_length_l = 0x00FF & len(bytearray(repository_path, 'utf-8'))
self.data_to_pack.append(repository_path_length_h)
self.data_to_pack.append(repository_path_length_l)
if repository_path != "":
self.data_to_pack += bytearray(repository_path, 'utf-8')
self.data_to_pack.append(len(bytearray(filename, 'utf-8')))
self.data_to_pack += bytearray(filename, 'utf-8')
self.pus_packets = self.split_large_file(size_of_data_blocks)
def split_large_file(self, size_of_data_blocks: int):
""" This function splits a large file in multiple packets
This is necessary because the packet size is limited
:param size_of_data_blocks: The file is splitted in data blocks of this size
:return: List containing the PUS packets generated for each data block
"""
self.number_of_packets = math.floor(len(self.file_data) / size_of_data_blocks)
packetNumber = 0
commands = []
for i in range(self.number_of_packets):
# append packet number
self.data_to_pack.append(size_of_data_blocks)
self.data_to_pack.append(packetNumber >> 8)
self.data_to_pack.append(0xFF & packetNumber)
self.data_to_pack += self.file_data[i * size_of_data_blocks:(i + 1) * size_of_data_blocks]
commands.append(PusTelecommand(service=23, subservice=128, ssc=21, app_data=self.data_to_pack))
# Last data block, packet number and data block size is removed to create new command with next data block,
# packet number and data block size
self.data_to_pack = self.data_to_pack[:len(self.data_to_pack) - size_of_data_blocks - 2 - 1]
packetNumber = packetNumber + 1
# Calculate remaining data bytes
remaining_data_size = len(self.file_data) - self.number_of_packets * size_of_data_blocks
self.data_to_pack.append(remaining_data_size)
self.data_to_pack.append(packetNumber >> 8)
self.data_to_pack.append(0xFF & packetNumber)
self.data_to_pack += self.file_data[self.number_of_packets * size_of_data_blocks:len(self.file_data)]
commands.append(PusTelecommand(service=23, subservice=128, ssc=21, app_data=self.data_to_pack))
return commands
def get_number_of_packets(self):
return self.number_of_packets
# def sendSoftwareUpdate(comInterface, tmtcPrinter, tmListener, tmTimeout, tcTimeoutFactor, doPrintToFile):
# """ This function sends all packets to upload a new version of the software image
# The new image is assumed to be stored in the tmtc directory
# """
# image = open("sourceobsw-at91sam9g20_ek-sdram.bin", "rb").read()
# update = Service23WriteToFile("", "boot.bin", objectID=[0x4D, 0x00, 0x73, 0xAD], file_data=image)
# updateQueue = deque()
# updateQueue.appendleft(("print", "Service 23 Software Update"))
# i = 1
# for packet in update.pus_packets:
# updateQueue.appendleft(
# ("print", "Packet " + str(i) + "/" + str(len(update.pus_packets)) + " of software update sent"))
# updateQueue.appendleft(packet.packCommandTuple())
# i = i + 1
# updateQueue.appendleft(("print", "Transmission of software update complete"))
# SenderAndReceiver = SequentialCommandSenderReceiver(comInterface, tmtcPrinter, tmListener, tmTimeout, updateQueue,
# tcTimeoutFactor, doPrintToFile)
# SenderAndReceiver.sendQueueTcAndReceiveTmSequentially()
def generate_service23_subservice2_packet(filename: str, repositoryPath: str = "",
object_id=bytearray([])):
""" This function generates the application data field of a service 23/subservice 2 to
......@@ -228,9 +144,9 @@ def generate_service23_subservice129_packet(repository_path: str, filename: str,
def pack_service23_test_into(tc_queue: Deque) -> Deque:
sd_handler_id = g.SD_CARD_HANDLER_ID
tc_queue.appendleft(("print", "Testing Service 23"))
tc_queue.append(("print", "Create directory 'test'"))
command = generate_service23_subservice9_packet(directory_name="test", object_id=sd_handler_id)
tc_queue.appendleft(command.pack_command_tuple())
# tc_queue.append(("print", "Create directory 'test'"))
# command = generate_service23_subservice9_packet(directory_name="test", object_id=sd_handler_id)
# tc_queue.appendleft(command.pack_command_tuple())
# tc_queue.append(("print", "Create subdirectory 'subdir' in 'test'"))
# command = generate_service23_subservice9_packet(repository_path="test", directory_name="subdir",
# object_id=sd_handler_id)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment