convert Modes class to a Flag Enum type and rename it to ChannelModes

move it into vban_cmd.packet
This commit is contained in:
2026-03-03 15:36:56 +00:00
parent 3e3bec6d50
commit c9a505df0a
4 changed files with 71 additions and 90 deletions

53
vban_cmd/packet/enums.py Normal file
View File

@@ -0,0 +1,53 @@
from enum import Flag
class ChannelModes(Flag):
"""Channel Modes - Bit flags that can be combined"""
MUTE = 0x00000001
SOLO = 0x00000002
MONO = 0x00000004
MC = 0x00000008
AMIX = 0x00000010
REPEAT = 0x00000020
BMIX = 0x00000030
COMPOSITE = 0x00000040
TVMIX = 0x00000050
UPMIX21 = 0x00000060
UPMIX41 = 0x00000070
UPMIX61 = 0x00000080
CENTERONLY = 0x00000090
LFEONLY = 0x000000A0
REARONLY = 0x000000B0
MASK = 0x000000F0
ON = 0x00000100 # eq.on
CROSS = 0x00000200
AB = 0x00000800 # eq.ab
BUSA = 0x00001000
BUSA1 = 0x00001000
BUSA2 = 0x00002000
BUSA3 = 0x00004000
BUSA4 = 0x00008000
BUSA5 = 0x00080000
BUSB = 0x00010000
BUSB1 = 0x00010000
BUSB2 = 0x00020000
BUSB3 = 0x00040000
PAN0 = 0x00000000
PANCOLOR = 0x00100000
PANMOD = 0x00200000
PANMASK = 0x00F00000
POSTFX_R = 0x01000000
POSTFX_D = 0x02000000
POSTFX1 = 0x04000000
POSTFX2 = 0x08000000
SEL = 0x10000000
MONITOR = 0x20000000

View File

@@ -5,6 +5,7 @@ from vban_cmd.enums import NBS
from vban_cmd.kinds import KindMapClass
from vban_cmd.util import comp
from .enums import ChannelModes
from .headers import VbanPacket
@@ -31,57 +32,57 @@ class ChannelState:
# Common boolean modes
@property
def mute(self) -> bool:
return (self._state & 0x00000001) != 0
return (self._state & ChannelModes.MUTE) != 0
@property
def solo(self) -> bool:
return (self._state & 0x00000002) != 0
return (self._state & ChannelModes.SOLO) != 0
@property
def mono(self) -> bool:
return (self._state & 0x00000004) != 0
return (self._state & ChannelModes.MONO) != 0
@property
def mc(self) -> bool:
return (self._state & 0x00000008) != 0
return (self._state & ChannelModes.MC) != 0
# EQ modes
@property
def eq_on(self) -> bool:
return (self._state & 0x00000100) != 0
return (self._state & ChannelModes.ON) != 0
@property
def eq_ab(self) -> bool:
return (self._state & 0x00000800) != 0
return (self._state & ChannelModes.AB) != 0
# Bus assignments (strip to bus routing)
@property
def busa1(self) -> bool:
return (self._state & 0x00001000) != 0
return (self._state & ChannelModes.BUSA1) != 0
@property
def busa2(self) -> bool:
return (self._state & 0x00002000) != 0
return (self._state & ChannelModes.BUSA2) != 0
@property
def busa3(self) -> bool:
return (self._state & 0x00004000) != 0
return (self._state & ChannelModes.BUSA3) != 0
@property
def busa4(self) -> bool:
return (self._state & 0x00008000) != 0
return (self._state & ChannelModes.BUSA4) != 0
@property
def busb1(self) -> bool:
return (self._state & 0x00010000) != 0
return (self._state & ChannelModes.BUSB1) != 0
@property
def busb2(self) -> bool:
return (self._state & 0x00020000) != 0
return (self._state & ChannelModes.BUSB2) != 0
@property
def busb3(self) -> bool:
return (self._state & 0x00040000) != 0
return (self._state & ChannelModes.BUSB3) != 0
class States(NamedTuple):