ducky.devices package

Module contents

Emulating different virtual devices like keyboard, display, disks...

class ducky.devices.Device(machine, klass, name)[source]

Bases: ducky.interfaces.IMachineWorker

Base class for all devices. Serves more like an API description.

Parameters:
  • machine (ducky.machine.Machine) – VM this device belongs to.
  • klass (str) – device family (input, output, snapshot, ...)
  • name (str) – device name. Maps directly to a section of config file that hosts setup for this device.
boot()[source]
static create_from_config(machine, config, section)[source]

Create new instance, configured exactly as requested by configuration file.

Parameters:
static create_hdt_entries(logger, config, section)[source]

Create HDT entries for this device, based on configuration file.

Parameters:
  • logger (logging.Logger) – logger to use for logging.
  • config (ducky.config.MachineConfig) – configuration file.
  • section (str) – name of config section with this device’s setup.
Return type:

list of ducky.hdt.HDTEntry

Returns:

list of HDT entries. This list is then appended to entries of other devices.

get_master()[source]
halt()[source]
is_slave()[source]
class ducky.devices.DeviceBackend(machine, klass, name)[source]

Bases: ducky.devices.Device

Backend is a special component of a device, which is connected to internal queues, and processes events in the queue, originating from user via its frontend counterpart.

set_frontend(device)[source]

Set frontend counterpart.

Parameters:device (ducky.device.DeviceFrontend) – frontend part.
class ducky.devices.DeviceFrontend(machine, klass, name)[source]

Bases: ducky.devices.Device

Frontend is a special component of a device, that interfaces communication channels from user and internal queues.

set_backend(device)[source]

Set backend counterpart.

Parameters:device (ducky.devices.DeviceFrontend) – backend part.
class ducky.devices.MMIOMemoryPage(device, *args, **kwargs)[source]

Bases: ducky.mm.VirtualMemoryPage

Memory page, suited for memory-mapped IO, supported by a device driver.

Parameters:device (ducky.devices.Device) – device instance, backing this memory page.
ducky.devices.get_driver(driver_class)[source]

Get Python class, implementing device driver, by its name.

Parameters:driver_class (str) – path to a class, e.g. ducky.devices.rtc.RTC.
Returns:driver class.