ducky.devices.tty module

Very simple character device that just “prints” characters on the screen. It does not care about dimensions of the display, it kknow only how to “print” characters. Suited for the most basic output possible - just “print” chars by writing to this device, and you’ll get this written into a stream attached to the frontend (stdout, file, ...).

class ducky.devices.tty.Backend(machine, name, stream=None, mmio_address=None, *args, **kwargs)[source]

Bases: ducky.devices.DeviceBackend

boot()[source]
static create_from_config(machine, config, section)[source]
static create_hdt_entries(logger, config, section)[source]
halt()[source]
tenh(s, *args)[source]
tenh_close_stream()[source]
tenh_enable()[source]
tenh_flush_stream()[source]
class ducky.devices.tty.Frontend(machine, name)[source]

Bases: ducky.devices.DeviceFrontend

boot()[source]
close(allow=False)[source]
static create_from_config(machine, config, section)[source]
flush()[source]
halt()[source]
set_output(stream)[source]
sleep_flush()[source]
tenh_enable()[source]
wakeup_flush()[source]
class ducky.devices.tty.FrontendFlushTask(frontend, queue, stream)[source]

Bases: ducky.interfaces.IReactorTask

run()[source]
set_output(stream)[source]
class ducky.devices.tty.HDTEntry_TTY(logger, config, section)[source]

Bases: ducky.hdt.HDTEntry_Device

_fields_ = [('type', <class 'ctypes.c_ushort'>), ('length', <class 'ctypes.c_ushort'>), ('name_length', <class 'ctypes.c_ubyte'>), ('flags', <class 'ctypes.c_ubyte'>), ('name', <class 'ducky.hdt.c_ubyte_Array_10'>), ('ident', <class 'ducky.hdt.c_ubyte_Array_32'>), ('mmio_address', <class 'ctypes.c_uint'>)]
flags

Structure/Union member

ident

Structure/Union member

length

Structure/Union member

mmio_address

Structure/Union member

name

Structure/Union member

name_length

Structure/Union member

type

Structure/Union member

class ducky.devices.tty.TTYMMIOMemoryPage(device, *args, **kwargs)[source]

Bases: ducky.devices.MMIOMemoryPage

write_u8(offset, value)[source]
class ducky.devices.tty.TTYPorts[source]

Bases: enum.IntEnum

DATA = 0
_member_map_ = OrderedDict([('DATA', <TTYPorts.DATA: 0>)])
_member_names_ = ['DATA']
_member_type_

alias of int

_value2member_map_ = {0: <TTYPorts.DATA: 0>}