"""
@brief      This file transfers control of the custom definitions like modes to the user.
@details    Template configuration file. Copy this folder to the TMTC commander root and adapt
            it to your needs.
"""

import enum

from spacepackets import PacketType
from spacepackets.ccsds import PacketId
from spacepackets.util import UnsignedByteField
from pathlib import Path


PUS_APID = 0x65
CFDP_APID = 0x66
PUS_PACKET_ID = PacketId(PacketType.TM, True, PUS_APID)
CFDP_PACKET_ID = PacketId(PacketType.TM, False, CFDP_APID)
SPACE_PACKET_IDS = (
    PUS_PACKET_ID,
    CFDP_PACKET_ID,
)

CFDP_LOCAL_ENTITY_ID = UnsignedByteField(byte_len=2, val=1)
CFDP_REMOTE_ENTITY_ID = UnsignedByteField(byte_len=2, val=CFDP_APID)


class CustomServiceList(str, enum.Enum):
    value: str

    TEST_DEVICE = "test"
    HEALTH = "health"
    P60DOCK = "p60dock"
    PDU1 = "pdu1"
    PDU2 = "pdu2"
    POWER = "power"
    ACU = "acu"
    ACS = "acs"
    COM_SS = "com"
    BPX_BATTERY = "bpx"
    HEATER = "heater"
    IMTQ = "imtq"
    PLOC_SUPV = "ploc_supv"
    PLOC_MPSOC = "ploc_mpsoc"
    PCDU = "pcdu"
    PL_PCDU = "plpcdu"
    SA_DEPLYOMENT = "sa_depl"
    REACTION_WHEEL_1 = "rw_1"
    REACTION_WHEEL_2 = "rw_2"
    REACTION_WHEEL_3 = "rw_3"
    REACTION_WHEEL_4 = "rw_4"
    RW_ASSEMBLY = "rw_ass"
    RAD_SENSOR = "rad_sensor"
    GPS_CTRL = "gps"
    PLOC_MEMORY_DUMPER = "ploc_memory_dumper"
    CORE = "core"
    STAR_TRACKER = "star_tracker"
    CCSDS_HANDLER = "ccsds_handler"
    PDEC_HANDLER = "pdec_handler"
    STR_IMG_HELPER = "str_img_helper"
    SYRLINKS = "syrlinks"
    ACS_CTRL = "acs_ctrl"
    ACS_SS = "acs_subsystem"
    PL_SS = "pl_subsystem"
    ACS_BRD_ASS = "acs_brd_ass"
    SUS_BRD_ASS = "sus_brd_ass"
    TCS = "tcs"
    TCS_ASS = "tcs_ass"
    TIME = "time"
    PROCEDURE = "proc"
    RTD = "rtd"
    TMP1075 = "tcs_tmp"
    TVTTESTPROCEDURE = "tvtestproc"
    CONTROLLERS = "controllers"
    SCEX = "scex"