tslumd.messages
- class tslumd.messages.Display(index: int, rh_tally: TallyColor = TallyColor.OFF, txt_tally: TallyColor = TallyColor.OFF, lh_tally: TallyColor = TallyColor.OFF, brightness: int = 3, text: str = '', control: bytes = b'', type: MessageType = MessageType.display)[source]
Bases:
object
A single tally “display”
- rh_tally: TallyColor = 0
Right hand tally indicator
- txt_tally: TallyColor = 0
Text tally indicator
- lh_tally: TallyColor = 0
Left hand tally indicator
- type: MessageType = 1
The message type. One of
display
orcontrol
.For
display
(the default), the message containstext
information and thecontrol
field must be empty.For
control
, the message containscontrol
data and thetext
field must be empty
New in version 0.0.2.
- is_broadcast: bool
True
if the display is to a “broadcast”, meaning sent to all display indices.(if the
index
is0xffff
)New in version 0.0.2.
- classmethod broadcast(**kwargs) Display [source]
Create a
broadcast
display(with
index
set to0xffff
)New in version 0.0.2.
- classmethod from_dmsg(flags: Flags, dmsg: bytes) Tuple[Display, bytes] [source]
Construct an instance from a
DMSG
portion of received message.Any remaining message data after the relevant
DMSG
is returned along with the instance.
- static _unpack_control_data(data: bytes) Tuple[bytes, bytes] [source]
Unpack control data (if control bit 15 is set)
- Parameters:
data – The portion of the
dmsg
at the start of the “Control Data” field- Returns:
- remaining
The remaining message data after the control data field
- Return type:
Note
This is undefined as of UMDv5.0 and its implementation is the author’s “best guess” based off of other areas of the protocol
New in version 0.0.2.
- static _pack_control_data(data: bytes) bytes [source]
Pack control data (if control bit 15 is set)
- Parameters:
data – The control data to pack
- Returns:
- packed
The packed control data
- Return type:
Note
This is undefined as of UMDv5.0 and its implementation is the author’s “best guess” based off of other areas of the protocol
New in version 0.0.2.
- to_dmsg(flags: Flags) bytes [source]
Build
dmsg
bytes to be included in a message (called fromMessage.build_message()
)
- class tslumd.messages.Message(version: int = 0, flags: ~tslumd.messages.Flags = Flags.NO_FLAGS, screen: int = 0, displays: list[~tslumd.messages.Display] = <factory>, scontrol: bytes = b'', type: ~tslumd.common.MessageType = MessageType.display)[source]
Bases:
object
A single UMDv5 message packet
- flags: Flags = 0
The message
Flags
field
- type: MessageType = 1
The message type. One of
display
orcontrol
.For
display
(the default), the contents ofdisplays
are used and thescontrol
field must be empty.For
control
, thescontrol
field is used anddisplays
must be empty.
New in version 0.0.2.
- is_broadcast: bool
True
if the message is to be “broadcast” to all screens.(if
screen
is0xffff
)New in version 0.0.2.
- classmethod broadcast(**kwargs) Message [source]
Create a
broadcast
message(with
screen
set to0xffff
)New in version 0.0.2.
- classmethod parse(msg: bytes) Tuple[Message, bytes] [source]
Parse incoming message data to create a
Message
instance.Any remaining message data after parsing is returned along with the instance.
- build_message(ignore_packet_length: bool = False) bytes [source]
Build a message packet from data in this instance
- Parameters:
ignore_packet_length (bool, optional) – If
False
, the message limit of 2048 bytes is respected, and if exceeded, an exception is raised. Otherwise, the limit is ignored. (default is False)- Raises:
MessageLengthError – If the message packet is larger than 2048 bytes (and
ignore_packet_length
is False)
Note
This method is retained for backwards compatability. To properly handle the message limit, use
build_messages()
Changed in version 0.0.4:
The
ignore_packet_length
parameter was addedMessage length is limited to 2048 bytes
- build_messages(ignore_packet_length: bool = False) Iterator[bytes] [source]
Build message packet(s) from data in this instance as an iterator
The specified maximum packet length of 2048 is respected and if necessary, the data will be split into separate messages.
This method will always function as a generator, regardless of the number of message packets produced.
New in version 0.0.4.
- exception tslumd.messages.ParseError(msg: str, value: bytes)[source]
Bases:
Exception
Raised on errors during message parsing
New in version 0.0.2.
- exception tslumd.messages.MessageParseError(msg: str, value: bytes)[source]
Bases:
ParseError
Raised on errors while parsing
Message
objectsNew in version 0.0.2.
- exception tslumd.messages.DmsgParseError(msg: str, value: bytes)[source]
Bases:
ParseError
Raised on errors while parsing
Display
objectsNew in version 0.0.2.
- exception tslumd.messages.DmsgControlParseError(msg: str, value: bytes)[source]
Bases:
ParseError
Raised on errors when parsing
Display.control
dataNew in version 0.0.2.
- exception tslumd.messages.MessageLengthError[source]
Bases:
ValueError
Raised when message length is larger than 2048 bytes
New in version 0.0.4.