added a lot of documentation and Enums for most function parameters
This commit is contained in:
@@ -63,6 +63,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
Input_4 (int): The input number for Input 4.
|
||||
Input_5 (int): The input number for Input 5.
|
||||
"""
|
||||
|
||||
INPUT_1 = 1
|
||||
INPUT_2 = 2
|
||||
INPUT_3 = 3
|
||||
@@ -77,9 +78,50 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
A (int): The first output channel.
|
||||
B (int): The second output channel.
|
||||
"""
|
||||
|
||||
A = 1 # channel A
|
||||
B = 2 # channel B
|
||||
|
||||
class UserEncoderLayoutPresetNumber(enum.IntEnum):
|
||||
"""
|
||||
An enumeration representing the available user encoder layout preset numbers.
|
||||
|
||||
Attributes:
|
||||
PRESET_1 (int): The preset number for layout 1.
|
||||
PRESET_2 (int): The preset number for layout 2.
|
||||
PRESET_3 (int): The preset number for layout 3.
|
||||
PRESET_4 (int): The preset number for layout 4.
|
||||
PRESET_5 (int): The preset number for layout 5.
|
||||
PRESET_6 (int): The preset number for layout 6.
|
||||
PRESET_7 (int): The preset number for layout 7.
|
||||
PRESET_8 (int): The preset number for layout 8.
|
||||
PRESET_9 (int): The preset number for layout 9.
|
||||
PRESET_10 (int): The preset number for layout 10.
|
||||
PRESET_11 (int): The preset number for layout 11.
|
||||
PRESET_12 (int): The preset number for layout 12.
|
||||
PRESET_13 (int): The preset number for layout 13.
|
||||
PRESET_14 (int): The preset number for layout 14.
|
||||
PRESET_15 (int): The preset number for layout 15.
|
||||
PRESET_16 (int): The preset number for layout 16.
|
||||
"""
|
||||
|
||||
PRESET_1 = 1
|
||||
PRESET_2 = 2
|
||||
PRESET_3 = 3
|
||||
PRESET_4 = 4
|
||||
PRESET_5 = 5
|
||||
PRESET_6 = 6
|
||||
PRESET_7 = 7
|
||||
PRESET_8 = 8
|
||||
PRESET_9 = 9
|
||||
PRESET_10 = 10
|
||||
PRESET_11 = 11
|
||||
PRESET_12 = 12
|
||||
PRESET_13 = 13
|
||||
PRESET_14 = 14
|
||||
PRESET_15 = 15
|
||||
PRESET_16 = 16
|
||||
|
||||
class AudioChannels(enum.IntEnum):
|
||||
"""
|
||||
Enum representing the available audio channels on the Extron SMP recorder.
|
||||
@@ -632,7 +674,9 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
|
||||
### File related stuff not implemented. (-> use sftp)
|
||||
|
||||
def set_input(self, input_num: Union[InputNumber, int], channel_num: Union[OutputChannel, int]):
|
||||
def set_input(
|
||||
self, input_num: Union[InputNumber, int], channel_num: Union[OutputChannel, int]
|
||||
):
|
||||
"""
|
||||
Switches input # (1 to 5) to output channel (1=A [input 1 and 2], 2=B [input 3, 4 and 5])
|
||||
:param input_num:
|
||||
@@ -662,7 +706,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
self.tn.write(f"{channel_num}!\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_input_format(self, input_num: int, input_format: int):
|
||||
def set_input_format(self, input_num: Union[InputNumber, int], input_format: int):
|
||||
"""
|
||||
Sets the input to the format, where the input_format parameter may be:
|
||||
1 = YUVp / HDTV (default)
|
||||
@@ -672,22 +716,42 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
:param input_format:
|
||||
:return:
|
||||
"""
|
||||
if input_num not in range(1, 6):
|
||||
raise LrcException("input_num must be a value between 1 and 5!")
|
||||
input_num = self._get_number_from_enum(input_num, SMP35x.InputNumber)
|
||||
if input_format not in range(1, 4):
|
||||
raise LrcException("input_num must be a value between 1 and 3!")
|
||||
self.tn.write(f"{input_num}*{input_format}\\\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_input_format(self, input_num: int):
|
||||
if input_num not in range(1, 6):
|
||||
raise LrcException("input_num must be a value between 1 and 5!")
|
||||
def get_input_format(self, input_num: Union[InputNumber, int]):
|
||||
"""
|
||||
Get the input format for the specified input number.
|
||||
|
||||
Args:
|
||||
input_num (Union[InputNumber, int]): The input number to get the format for.
|
||||
|
||||
Returns:
|
||||
str: The input format for the specified input number.
|
||||
"""
|
||||
input_num = self._get_number_from_enum(input_num, SMP35x.InputNumber)
|
||||
self.tn.write(f"{input_num}\\\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_input_name(self, input_num: int, input_name: str):
|
||||
if input_num not in range(1, 6):
|
||||
raise LrcException("input_num must be a value between 1 and 5!")
|
||||
def set_input_name(self, input_num: Union[InputNumber, int], input_name: str):
|
||||
"""
|
||||
Sets the name of the specified input on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
input_num (Union[InputNumber, int]): The input number to set the name for.
|
||||
input_name (str): The name to set for the input. Must be no longer than
|
||||
16 characters and only contain ASCII characters.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after setting the input name.
|
||||
Raises:
|
||||
LrcException: If the input_name is longer than
|
||||
16 characters or contains non-ASCII characters.
|
||||
"""
|
||||
input_num = self._get_number_from_enum(input_num, SMP35x.InputNumber)
|
||||
if len(input_name) > 16:
|
||||
raise LrcException("input_name must be no longer than 16 chars")
|
||||
try:
|
||||
@@ -697,13 +761,29 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
self.tn.write(f"{self.esc_char}{input_num},{input_name}NI\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_input_name(self, input_num: int):
|
||||
if input_num not in range(1, 6):
|
||||
raise LrcException("input_num must be a value between 1 and 5!")
|
||||
def get_input_name(self, input_num: Union[InputNumber, int]) -> str:
|
||||
"""
|
||||
Sends a command to the Extron SMP device to retrieve the name of the input
|
||||
corresponding to the given input number. Returns the name of the input as a string.
|
||||
|
||||
Args:
|
||||
input_num (Union[InputNumber, int]): The number of the input to retrieve the name for.
|
||||
|
||||
Returns:
|
||||
str: The name of the input as a string.
|
||||
"""
|
||||
input_num = self._get_number_from_enum(input_num, SMP35x.InputNumber)
|
||||
self.tn.write(f"{self.esc_char}{input_num}NI\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_input_selction_per_channel(self):
|
||||
def get_input_selection_per_channel(self):
|
||||
"""
|
||||
Sends a command to the Extron SMP device to get the
|
||||
input selection per channel and returns the response.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
self.tn.write("32I\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
@@ -830,25 +910,74 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
|
||||
### Metadata part skipped
|
||||
|
||||
def recall_user_preset(self, channel_number: int, preset_number: int):
|
||||
if channel_number not in range(1, 3):
|
||||
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def recall_user_preset(
|
||||
self,
|
||||
channel_number: Union["SMP35x.OutputChannel", int],
|
||||
preset_number: Union["SMP35x.UserEncoderLayoutPresetNumber", int],
|
||||
):
|
||||
"""
|
||||
Recalls a user preset on the specified channel.
|
||||
|
||||
Args:
|
||||
channel_number (Union[SMP35x.OutputChannel, int]): The channel number to recall the preset on.
|
||||
preset_number (Union[SMP35x.UserEncoderLayoutPresetNumber, int]): The preset number to recall.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
channel_number = self._get_number_from_enum(
|
||||
channel_number, SMP35x.OutputChannel
|
||||
)
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"1*{channel_number}*{preset_number}.\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def save_user_preset(self, channel_number: int, preset_number: int):
|
||||
if channel_number not in range(1, 3):
|
||||
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def save_user_preset(
|
||||
self,
|
||||
channel_number: Union["SMP35x.OutputChannel", int],
|
||||
preset_number: Union["SMP35x.UserEncoderLayoutPresetNumber", int],
|
||||
):
|
||||
"""
|
||||
Saves a user preset for the specified channel number and preset number.
|
||||
|
||||
Args:
|
||||
channel_number (Union[SMP35x.OutputChannel, int]): The channel number to save the preset for.
|
||||
preset_number (Union[SMP35x.UserEncoderLayoutPresetNumber, int]): The preset number to save the preset to.
|
||||
|
||||
Returns:
|
||||
str: The response string from the Telnet server.
|
||||
"""
|
||||
channel_number = self._get_number_from_enum(
|
||||
channel_number, SMP35x.OutputChannel
|
||||
)
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"1*{channel_number}*{preset_number},\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_user_preset_name(self, preset_number: int, preset_name: str):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def set_user_preset_name(
|
||||
self,
|
||||
preset_number: Union["SMP35x.UserEncoderLayoutPresetNumber", int],
|
||||
preset_name: str,
|
||||
):
|
||||
"""
|
||||
Sets the name of a user encoder layout preset on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[SMP35x.UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to set the name for.
|
||||
preset_name (str): The name to set for the preset.
|
||||
Must be no longer than 16 characters and only contain ASCII characters.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after setting the preset name.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
if len(preset_name) > 16:
|
||||
raise LrcException("preset_name must be no longer than 16 chars")
|
||||
try:
|
||||
@@ -860,37 +989,106 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
self.tn.write(f"{self.esc_char}1*{preset_number},{preset_name}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_user_preset_name(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def get_user_preset_name(
|
||||
self, preset_number: Union["SMP35x.UserEncoderLayoutPresetNumber", int]
|
||||
):
|
||||
"""
|
||||
Retrieves the name of a user encoder layout preset from the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[SMP35x.UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to retrieve.
|
||||
|
||||
Returns:
|
||||
str: The name of the specified user encoder layout preset.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}1*{preset_number}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_user_presets(self, input_number: int):
|
||||
if input_number not in range(1, 6):
|
||||
raise LrcException("input_number must be a value between 1 and 5!")
|
||||
def get_user_presets(self, input_number: Union[InputNumber, int]):
|
||||
"""
|
||||
Retrieves the user presets for the specified input number.
|
||||
|
||||
Args:
|
||||
input_number (Union[InputNumber, int]): The input number to retrieve user presets for.
|
||||
|
||||
Returns:
|
||||
str: The response string from the device.
|
||||
"""
|
||||
input_number = self._get_number_from_enum(input_number, SMP35x.InputNumber)
|
||||
self.tn.write(f"52*{input_number}#\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
# Input Presets
|
||||
def recall_input_preset(self, channel_number: int, preset_number: int):
|
||||
if channel_number not in range(1, 3):
|
||||
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||
if preset_number not in range(1, 129):
|
||||
def recall_input_preset(
|
||||
self,
|
||||
channel_number: Union["SMP35x.OutputChannel", int],
|
||||
input_preset_number: int,
|
||||
):
|
||||
"""
|
||||
Recalls an input preset on the specified channel.
|
||||
|
||||
Args:
|
||||
channel_number (Union[SMP35x.OutputChannel, int]):
|
||||
The channel number to recall the input preset on.
|
||||
input_preset_number (int): The input preset number to recall.
|
||||
|
||||
Raises:
|
||||
LrcException: If the input preset number is not between 1 and 128.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
channel_number = self._get_number_from_enum(
|
||||
channel_number, SMP35x.OutputChannel
|
||||
)
|
||||
if input_preset_number not in range(1, 129):
|
||||
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||
self.tn.write(f"2*{channel_number}*{preset_number}.\n")
|
||||
self.tn.write(f"2*{channel_number}*{input_preset_number}.\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def save_input_preset(self, channel_number: int, preset_number: int):
|
||||
if channel_number not in range(1, 3):
|
||||
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||
if preset_number not in range(1, 129):
|
||||
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||
self.tn.write(f"1*{channel_number}*{preset_number},\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
def save_input_preset(
|
||||
self,
|
||||
channel_number: Union["SMP35x.OutputChannel", int],
|
||||
input_preset_number: int,
|
||||
):
|
||||
"""
|
||||
Saves the current input configuration as a preset on the specified channel.
|
||||
|
||||
def set_input_preset_name(self, preset_number: int, preset_name: str):
|
||||
if preset_number not in range(1, 129):
|
||||
Args:
|
||||
channel_number (Union[SMP35x.OutputChannel, int]):
|
||||
The channel number to save the preset on.
|
||||
input_preset_number (int): The preset number to save the input configuration to.
|
||||
|
||||
Raises:
|
||||
LrcException: If the input_preset_number is not between 1 and 128.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
|
||||
def set_input_preset_name(self, input_preset_number: int, preset_name: str):
|
||||
"""
|
||||
Sets the name of an input preset on the Extron SMP recorder.
|
||||
|
||||
Args:
|
||||
input_preset_number (int): The number of the input preset to set the name for.
|
||||
Must be a value between 1 and 128.
|
||||
preset_name (str): The name to set for the input preset. Must be a string of
|
||||
ASCII characters no longer than 16 characters.
|
||||
|
||||
Returns:
|
||||
str: The response string returned by the Extron SMP recorder after setting
|
||||
the input preset name.
|
||||
|
||||
Raises:
|
||||
LrcException: If the input_preset_number is not between 1 and 128, or if the
|
||||
preset_name is longer than 16 characters or contains non-ASCII characters.
|
||||
"""
|
||||
if input_preset_number not in range(1, 129):
|
||||
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||
if len(preset_name) > 16:
|
||||
raise LrcException("preset_name must be no longer than 16 chars")
|
||||
@@ -900,19 +1098,41 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
raise LrcException(
|
||||
"preset_name must only contain ascii characters"
|
||||
) from exc
|
||||
self.tn.write(f"{self.esc_char}2*{preset_number},{preset_name}PNAM\n")
|
||||
self.tn.write(f"{self.esc_char}2*{input_preset_number},{preset_name}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_input_preset_name(self, preset_number: int):
|
||||
if preset_number not in range(1, 129):
|
||||
def get_input_preset_name(self, input_preset_number: int):
|
||||
"""
|
||||
Retrieves the name of the input preset with the given number.
|
||||
|
||||
Args:
|
||||
input_preset_number (int): The number of the input preset to retrieve the name of.
|
||||
Must be a value between 1 and 128.
|
||||
|
||||
Returns:
|
||||
str: The name of the input preset.
|
||||
|
||||
Raises:
|
||||
LrcException: If the input_preset_number is not a value between 1 and 128.
|
||||
"""
|
||||
if input_preset_number not in range(1, 129):
|
||||
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||
self.tn.write(f"{self.esc_char}2*{preset_number}PNAM\n")
|
||||
self.tn.write(f"{self.esc_char}2*{input_preset_number}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def delete_input_preset(self, preset_number: int):
|
||||
if preset_number not in range(1, 129):
|
||||
def delete_input_preset(self, input_preset_number: int):
|
||||
"""
|
||||
Deletes the input preset with the given number.
|
||||
|
||||
Args:
|
||||
input_preset_number (int): The number of the input preset to delete. Must be a value between 1 and 128.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after attempting to delete the input preset.
|
||||
"""
|
||||
if input_preset_number not in range(1, 129):
|
||||
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||
self.tn.write(f"{self.esc_char}X2*{preset_number}PRST\n")
|
||||
self.tn.write(f"{self.esc_char}X2*{input_preset_number}PRST\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_input_presets(self):
|
||||
@@ -924,7 +1144,11 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
# Streaming Presets
|
||||
def recall_streaming_preset(self, output_number: int, preset_number: int):
|
||||
def recall_streaming_preset(
|
||||
self,
|
||||
output_number: int,
|
||||
preset_number: Union[UserEncoderLayoutPresetNumber, int],
|
||||
):
|
||||
"""
|
||||
Output_number:
|
||||
1 = Channel A
|
||||
@@ -936,12 +1160,17 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
"""
|
||||
if output_number not in range(1, 4):
|
||||
raise LrcException("output_number must be a value between 1 and 3!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"3*{output_number}*{preset_number}.\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def save_streaming_preset(self, output_number: int, preset_number: int):
|
||||
def save_streaming_preset(
|
||||
self,
|
||||
output_number: int,
|
||||
preset_number: Union[UserEncoderLayoutPresetNumber, int],
|
||||
):
|
||||
"""
|
||||
Output_number:
|
||||
1 = Channel A
|
||||
@@ -953,14 +1182,34 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
"""
|
||||
if output_number not in range(1, 4):
|
||||
raise LrcException("output_number must be a value between 1 and 3!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"3*{output_number}*{preset_number},\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_streaming_preset_name(self, preset_number: int, preset_name: str):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def set_streaming_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int], preset_name: str
|
||||
):
|
||||
"""
|
||||
Sets the name of a streaming preset on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to set the name for.
|
||||
preset_name (str): The name to set for the preset.
|
||||
Must be no longer than 16 characters and contain only ASCII characters.
|
||||
|
||||
Raises:
|
||||
LrcException: If the preset_name is longer
|
||||
than 16 characters or contains non-ASCII characters.
|
||||
|
||||
Returns:
|
||||
str: The response from the Extron SMP device.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
if len(preset_name) > 16:
|
||||
raise LrcException("preset_name must be no longer than 16 chars")
|
||||
try:
|
||||
@@ -972,20 +1221,48 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
self.tn.write(f"{self.esc_char}3*{preset_number},{preset_name}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_streaming_preset_name(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def get_streaming_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Retrieves the name of the streaming preset associated with the given preset number.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]): The preset number or enum value.
|
||||
|
||||
Returns:
|
||||
str: The name of the streaming preset.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}3*{preset_number}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def reset_streaming_preset_to_default(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def reset_streaming_preset_to_default(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Resets the streaming preset to its default settings.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]): The preset number to reset.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}X3*{preset_number}PRST\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
# Encoder Presets
|
||||
def recall_encoder_preset(self, output_number: int, preset_number: int):
|
||||
def recall_encoder_preset(
|
||||
self,
|
||||
output_number: int,
|
||||
preset_number: Union[UserEncoderLayoutPresetNumber, int],
|
||||
):
|
||||
"""
|
||||
Output_number:
|
||||
1 = Channel A
|
||||
@@ -997,12 +1274,17 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
"""
|
||||
if output_number not in range(1, 4):
|
||||
raise LrcException("output_number must be a value between 1 and 3!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"4*{output_number}*{preset_number}.\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def save_encoder_preset(self, output_number: int, preset_number: int):
|
||||
def save_encoder_preset(
|
||||
self,
|
||||
output_number: int,
|
||||
preset_number: Union[UserEncoderLayoutPresetNumber, int],
|
||||
):
|
||||
"""
|
||||
Output_number:
|
||||
1 = Channel A
|
||||
@@ -1014,14 +1296,33 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
"""
|
||||
if output_number not in range(1, 4):
|
||||
raise LrcException("output_number must be a value between 1 and 3!")
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"4*{output_number}*{preset_number},\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_encoder_preset_name(self, preset_number: int, preset_name: str):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def set_encoder_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int], preset_name: str
|
||||
):
|
||||
"""
|
||||
Sets the name of an encoder preset on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to set the name for.
|
||||
preset_name (str): The name to set for the preset.
|
||||
Must be no longer than 16 characters and only contain ASCII characters.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after setting the preset name.
|
||||
Raises:
|
||||
LrcException: If the preset_name is longer
|
||||
than 16 characters or contains non-ASCII characters.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
if len(preset_name) > 16:
|
||||
raise LrcException("preset_name must be no longer than 16 chars")
|
||||
try:
|
||||
@@ -1033,39 +1334,113 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
self.tn.write(f"{self.esc_char}4*{preset_number},{preset_name}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_encoder_preset_name(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def get_encoder_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Sends a command to the Extron SMP device to retrieve the name of the encoder preset
|
||||
associated with the given preset number.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]): The preset number to
|
||||
retrieve the name for. This can be either an integer or a value from the
|
||||
UserEncoderLayoutPresetNumber enum.
|
||||
|
||||
Returns:
|
||||
str: The name of the encoder preset associated with the given preset number.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}4*{preset_number}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def reset_encoder_preset_to_default(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def reset_encoder_preset_to_default(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Resets the specified encoder preset to its default settings.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to reset.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after sending the reset command.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}X4*{preset_number}PRST\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
# Layout Presets
|
||||
def save_layout_preset(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
|
||||
def save_layout_preset(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Saves the current layout as a preset with the given number.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to save.
|
||||
This can be either an integer or a
|
||||
value from the UserEncoderLayoutPresetNumber enum.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after sending the save command.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"7*{preset_number},\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def recall_layout_preset(
|
||||
self, preset_number: int, include_input_selections: bool = True
|
||||
self,
|
||||
preset_number: Union[UserEncoderLayoutPresetNumber, int],
|
||||
include_input_selections: bool = True,
|
||||
):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
"""
|
||||
Recalls a layout preset on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The preset number to recall.
|
||||
include_input_selections (bool, optional):
|
||||
Whether to include input selections in the recall. Defaults to True.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
if include_input_selections:
|
||||
self.tn.write(f"7*{preset_number}.\n")
|
||||
else:
|
||||
self.tn.write(f"8*{preset_number}.\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def set_layout_preset_name(self, preset_number: int, preset_name: str):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def set_layout_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int], preset_name: str
|
||||
):
|
||||
"""
|
||||
Sets the name of a user encoder layout preset on the Extron SMP device.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to set the name for.
|
||||
preset_name (str): The name to set for the preset.
|
||||
Must be no longer than 16 characters and only contain ASCII characters.
|
||||
|
||||
Returns:
|
||||
str: The response from the device after setting the preset name.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
if len(preset_name) > 16:
|
||||
raise LrcException("preset_name must be no longer than 16 chars")
|
||||
try:
|
||||
@@ -1074,20 +1449,44 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||
raise LrcException(
|
||||
"preset_name must only contain ascii characters"
|
||||
) from exc
|
||||
self.tn.write(
|
||||
"{}7*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name)
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}7*{preset_number},{preset_name}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def get_layout_preset_name(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def get_layout_preset_name(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Gets the name of the layout preset with the given preset number.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]): The preset number
|
||||
of the layout preset to get the name of.
|
||||
|
||||
Returns:
|
||||
str: The name of the layout preset with the given preset number.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}7*{preset_number}PNAM\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
def reset_layout_preset_to_default(self, preset_number: int):
|
||||
if preset_number not in range(1, 17):
|
||||
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||
def reset_layout_preset_to_default(
|
||||
self, preset_number: Union[UserEncoderLayoutPresetNumber, int]
|
||||
):
|
||||
"""
|
||||
Resets the layout preset to its default value.
|
||||
|
||||
Args:
|
||||
preset_number (Union[UserEncoderLayoutPresetNumber, int]):
|
||||
The number of the preset to reset.
|
||||
|
||||
Returns:
|
||||
str: The response from the device.
|
||||
"""
|
||||
preset_number = self._get_number_from_enum(
|
||||
preset_number, SMP35x.UserEncoderLayoutPresetNumber
|
||||
)
|
||||
self.tn.write(f"{self.esc_char}X7*{preset_number}PRST\n")
|
||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||
|
||||
@@ -1239,13 +1638,12 @@ def main():
|
||||
print(smp.is_audio_channel_muted(60000))
|
||||
|
||||
exit()
|
||||
smp._login()
|
||||
# smp._login()
|
||||
print(smp.get_version(verbose_info=False))
|
||||
print(smp.get_file_transfer_config())
|
||||
print(smp.save_configuration())
|
||||
print(smp.restore_configuration())
|
||||
|
||||
return
|
||||
print(smp.get_bootstrap_version())
|
||||
print(smp.get_part_number())
|
||||
print(smp.get_model_name())
|
||||
@@ -1264,7 +1662,7 @@ def main():
|
||||
print(smp.get_front_panel_lock())
|
||||
|
||||
print(smp.get_input_name(1))
|
||||
print(smp.get_input_selction_per_channel())
|
||||
print(smp.get_input_selection_per_channel())
|
||||
print(smp.get_recording_status())
|
||||
print("Preset Name: " + smp.get_user_preset_name(2))
|
||||
print(smp.get_user_presets(1))
|
||||
|
||||
@@ -13,15 +13,6 @@ pw = "123mzsmp"
|
||||
|
||||
|
||||
def print_tn(tn_response):
|
||||
"""
|
||||
Prints the given TN response, decoding it if necessary.
|
||||
|
||||
Args:
|
||||
tn_response (bytes or str): The TN response to print.
|
||||
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
if isinstance(tn_response, bytes):
|
||||
print(tn_response.decode("ascii").rstrip())
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user