eive-tmtc/eive_tmtc/tmtc/acs/acs_board.py

135 lines
3.8 KiB
Python
Raw Normal View History

import enum
2022-07-04 17:59:09 +02:00
2022-11-29 16:53:29 +01:00
from eive_tmtc.config.definitions import CustomServiceList
2022-10-04 14:12:33 +02:00
from tmtccmd.config.tmtc import (
tmtc_definitions_provider,
TmtcDefinitionWrapper,
OpCodeEntry,
)
2022-12-01 11:18:11 +01:00
from tmtccmd.tc import service_provider, DefaultPusQueueHelper
2022-10-04 14:46:00 +02:00
from tmtccmd.tc.decorator import ServiceProviderParams
from tmtccmd.tc.pus_200_fsfw_modes import Modes
2022-11-29 16:53:29 +01:00
from eive_tmtc.config.object_ids import ACS_BOARD_ASS_ID
2022-11-29 16:53:29 +01:00
from eive_tmtc.tmtc.common import pack_mode_cmd_with_info
2022-05-19 13:20:22 +02:00
2022-03-07 11:07:54 +01:00
class AcsOpCodes:
2022-10-04 14:12:33 +02:00
ACS_ASS_A_SIDE = ["0", "a"]
ACS_ASS_B_SIDE = ["1", "b"]
ACS_ASS_DUAL_MODE = ["2", "d"]
ACS_ASS_OFF = ["3", "off"]
ACS_ASS_A_ON = ["4", "ao"]
ACS_ASS_B_ON = ["5", "bo"]
ACS_ASS_DUAL_ON = ["6", "do"]
2022-03-22 09:54:57 +01:00
class DualSideSubmodes(enum.IntEnum):
A_SIDE = 0
B_SIDE = 1
DUAL_SIDE = 2
2022-12-01 11:18:11 +01:00
def pack_acs_command(q: DefaultPusQueueHelper, op_code: str):
2022-03-07 11:07:54 +01:00
if op_code in AcsOpCodes.ACS_ASS_A_SIDE:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.NORMAL,
submode=DualSideSubmodes.A_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching to ACS board assembly A side",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_B_SIDE:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.NORMAL,
submode=DualSideSubmodes.B_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching to ACS board assembly B side",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_DUAL_MODE:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.NORMAL,
submode=DualSideSubmodes.DUAL_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching to ACS board assembly dual mode",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_A_ON:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.ON,
submode=DualSideSubmodes.A_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching ACS board assembly A side on",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_B_ON:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching ACS board assembly B side on",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_DUAL_ON:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.ON,
submode=DualSideSubmodes.B_SIDE,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching ACS board assembly dual side on",
)
2022-03-07 17:02:44 +01:00
if op_code in AcsOpCodes.ACS_ASS_OFF:
2022-10-04 14:46:00 +02:00
pack_mode_cmd_with_info(
2022-03-22 10:14:22 +01:00
object_id=ACS_BOARD_ASS_ID,
2022-03-22 09:54:57 +01:00
mode=Modes.OFF,
submode=0,
2022-07-04 17:59:09 +02:00
q=q,
2022-03-22 09:54:57 +01:00
info="Switching to ACS board assembly off",
)
2022-03-22 10:14:22 +01:00
2022-12-01 11:18:11 +01:00
@service_provider(CustomServiceList.ACS_BRD_ASS)
def pack_acs_command_provider(p: ServiceProviderParams):
op_code = p.op_code
q = p.queue_helper
pack_acs_command(q, op_code)
2022-10-04 14:12:33 +02:00
@tmtc_definitions_provider
def add_acs_board_cmds(defs: TmtcDefinitionWrapper):
oce = OpCodeEntry()
oce.add(
keys=AcsOpCodes.ACS_ASS_A_SIDE,
info="Switch to ACS board A side",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_B_SIDE,
info="Switch to ACS board B side",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_DUAL_MODE,
info="Switch to ACS board dual mode",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_A_ON,
info="Switch ACS board A side on",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_B_ON,
info="Switch ACS board B side on",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_DUAL_ON,
info="Switch ACS board dual mode on",
)
oce.add(
keys=AcsOpCodes.ACS_ASS_OFF,
info="Switch off ACS board",
)
defs.add_service(
name=CustomServiceList.ACS_BRD_ASS.value,
info="ACS Board Assemblie",
op_code_entry=oce,
)