# -*- coding: utf-8 -*-
"""
@file   obsw_tc_service3.py
@brief  PUS Service 3:  Housekeeping Service.
@author R. Mueller
@date   02.05.2020
"""
import struct
from typing import Deque
from tmtc_core.tc.obsw_pus_tc_base import PusTelecommand
import config.obsw_config as g


def make_sid(set_id: int, object_id: bytearray) -> bytearray:
    set_id_bytearray = struct.pack(">I", set_id)
    return object_id + set_id_bytearray


# adding custom defintion to hk using test pool variables
sid_thermalsensor = make_sid(0, g.THERMAL_SENSOR_DEVICE_ID)
collection_interval_hk = struct.pack('>f', 3)
collection_interval_diag = struct.pack('>f', 0.8)
number_of_parameters = struct.pack('>B', 5)


def pack_service3_test_into(tc_queue: Deque) -> Deque:
    tc_queue.appendleft(("print", "Testing Service 3"))
    # Predefined packet testing
    # pack_predefined_tests(tc_queue)
    pack_custom_tests(tc_queue)

    tc_queue.appendleft(("export", "log/tmtc_log_service3.txt"))
    return tc_queue

def pack_custom_tests(tc_queue: Deque):
    # deleting pre-defined test entry
    tc_queue.appendleft(("print", "Testing Service 3: "))
    command = PusTelecommand(service=3, subservice=3, ssc=3100, app_data=sid_thermalsensor)
    tc_queue.appendleft(command.pack_command_tuple())