class RelayAction(IntEnum):
"""Possible relay actions."""
MOMENTARY_ACTIVATION = 1
LATCH = 2
RELEASE = 3
INQUIRY = 9
class OptoAction(IntEnum):
"""Possible opto actions."""
OFF = 0
ON = 1
INQUIRY = 9
class SalvoOption(IntEnum):
"""Describes how salvos are organized."""
ACTUAL_SALVO_NUM = 1
ALPHANUMERIC_POSITION_OF_SALVO = 2
class CrosspointTransitionControlSetting(IntEnum):
"""Possible transition control settings."""
CUT_OUT_CUT_IN = 0
CUT_OUT_FADE_IN = 1
FADE_OUT_CUT_IN = 2
FADE_OUT_FADE_IN = 3
CROSS_FADE = 4
CUT_OUT_CUT_IN_WITH_DSP = 9
class FadeTime(IntEnum):
"""Possible fade times."""
INSTANT = 0
T_10MS = 1
T_50MS = 2
T_100MS = 3
T_200MS = 4
T_500MS = 5
T_1S = 6
T_2S = 7
T_3S = 8
T_4S = 9
T_5S = 10
T_6S = 11
T_7S = 12
T_8S = 13
T_9S = 14
T_10S = 15
class GainChangeStage(IntEnum):
"""Possible gain change stages."""
SOURCE_INPUT_SENSITIVITY = 1
OUTPUT_GAIN_TRIM = 3
DSP_COEFFICIENT_LEVEL_NO_FADE_TIME = 10
DSP_COEFFICIENT_LEVEL_FADE_TIME = 11
DSP_MIXER_OUTPUT_MASTER_LEVEL_NO_FADE_TIME = 15
DSP_MIXER_OUTPUT_MASTER_LEVEL_FADE_TIME = 16
class StereoLinkOption(IntEnum):
"""Describes if input or output should be modified."""
INPUT_LINK = 0
OUTPUT_LINK = 1
class StereoLinkSetting(IntEnum):
"""Types of inputs and outputs."""
MONO = 0
STEREO = 1
SOURCE_DEPENDENT = 2
LR_MONO_SUM = 3
class EnhancedTakeOptions:
"""Describes arguments for enhancement_take() method."""
class PriorityLevel(IntEnum):
"""Possible priority levels."""
STANDARD = 0
IFB = 1
class ControlOptions(IntEnum):
"""Possible control options."""
OFF = 0
ON = 1
MOMENTARY = 2
class ActionOptions(IntEnum):
"""Possible actions."""
TAKE = 0
SUM = 1
DIRECT_RELAY_CONTROL = 2
class SuppliedGainValueUsage(IntEnum):
"""Should use specified gain value."""
NO = 0
YES = 1
class CurrentXpointTransitionCtlSpec(IntEnum):
"""Should use current xpoint transition control specification."""
NO = 0
YES = 1
def __init__(self,
priority_level: PriorityLevel,
control_options: ControlOptions,
action_options: ActionOptions,
use_supplied_gain_value: SuppliedGainValueUsage,
use_current_xpoint_transition_ctl_spec: CurrentXpointTransitionCtlSpec
):
self.value = int(priority_level)
self.value += int(control_options) << 2
self.value += int(action_options) << 5
self.value += int(use_supplied_gain_value) << 9
self.value += int(use_current_xpoint_transition_ctl_spec) << 10
def get(self):
"""
Get calculated enhanced take command options numeric value.
:return: value calculated for arguments provided in constructor.
"""
return self.value
class ConsoleModuleAction(IntEnum):
"""Possible console module actions."""
TURN_MODULE_OFF_WITH_SOURCE_SELECTED = 0
TURN_MODULE_ON_WITH_SOURCE_SELECTED = 1
TURN_CUE_OFF_ON_MODULE_WITH_SOURCE_SELECTED = 2
TURN_CUE_ON_ON_MODULE_WITH_SOURCE_SELECTED = 3
class AlphanumericNameInquiryInputOutput(IntEnum):
"""Alphanumeric name inquiry should be shown for input or output."""
INPUT = 0
OUTPUT = 1
class FeedbackReplies(IntEnum):
"""Feedback replies should be enabled or disabled."""
ENABLED = 1
DISABLED = 0
class FeedbackTally(IntEnum):
"""Possible feedback tally options."""
NO_TALLY_OF_XPOINT_ACTIVITY_OR_ALPHA_CHANGE_NOTIFICATION = 0
XPOINT_TALLY_IN_NUMERICAL_FORMAT_ONLY = 1
XPOINT_TALLY_AS_CHANNEL_ALPHA_LABELS_ONLY = 2
XPOINT_TALLY_BOTH_NUMERICAL_AND_ALPHA_LABELS = 3
NOTIFICATION_OF_CHANGES_TO_THE_ALPHA_LABELS = 4
NUMERICAL_TALLY_AND_ALPHA_CHANGE_NOTIFICATION = 5
ALPHA_LABEL_TALLY_AND_ALPHA_CHANGE_NOTIFICATION = 6
NUMERICAL_AND_ALPHA_LABEL_TALLY_WITH_ALPHA_CHANGE_NOTICE = 7
NOTICE_OF_CONSOLE_MODULE_OPERATIONS_ONLY = 8
NOTICE_OF_CONSOLE_MODULE_OPERATIONS_AND_NUMERICAL_TALLY_AND_ALPHA_CHANGE_NOTIFICATION = 9
class FeedbackProtocol(IntEnum):
"""Possible feedback variants."""
THREE_DIGIT_ASCII_STYLE_XPOINT_TALLY = 0
TWO_DIGIT_ASCII_HEX_STYLE_XPOINT_TALLY = 1
FOUR_DIGIT_ASCII_STYLE_XPOINT_TALLY = 2
class Reply(IntEnum):
"""Default replies."""
OK = 0
ERROR = 1