Files @ b168d439d9a0
Branch filter:

Location: linux-tools/kcdemu/cdemu/device.py

Silverwing
initial commit. Version 1.0
from event.sync import EventDispatcher
from .proxy import OP_BS_EMU, OP_DEV_ID, OP_DPM_EMU, OP_TR_EMU


class CDEmuDevice(EventDispatcher):
    def __init__(self, device_id, cdemu):
        super().__init__(
            'change'
        )
        self.cdemu = cdemu
        self._device_id = device_id
        self._mapped_sr = None
        self._mapped_sg = None
        self._img = False
        self._dpm = False
        self._tr = False
        self._bs = False
        self._vendor = None
        self._product = None
        self._revision = None
        self._vendor_specific = None

    def get_name(self):
        return 'Device {}'.format(self._device_id)

    @property
    def mapped_sr(self):
        return self._mapped_sr

    @property
    def mapped_sg(self):
        return self._mapped_sg

    def get_img(self):
        return self._img

    def load(self, img):
        self.cdemu.load(self, img)

    def unload(self):
        self.cdemu.unload(self)

    def get_dpm(self):
        """
        get current dpm emulation state
        :return: True if dpm emulation is on, False otherwise
        """
        return self._dpm

    def set_dpm(self, dpm):
        """
        set dpm emulation state
        :param dpm: True to enable emulation, False to disable
        """
        self.cdemu.set_device_option(self._device_id, OP_DPM_EMU, dpm)

    def get_tr(self):
        """
        get current transfer rate emulation state
        :return: True if transfer rate emulation is enabled, False otherwise
        """
        return self._tr

    def set_tr(self, tr):
        """
        set transfer rate emulation state
        :param tr: True to enable emulation, False to disable
        """
        self.cdemu.set_device_option(self._device_id, OP_TR_EMU, tr)

    def get_bs(self):
        """
        get current bad sector emulation state
        :return: True if bad sector emulation is enabled, False otherwise
        """
        return self._bs

    def set_bs(self, bs):
        """
        set bad sector emulation state
        :param bs: True to enable emulation, False to disable
        """
        self.cdemu.set_device_option(self._device_id, OP_BS_EMU, bs)

    def get_id(self):
        """
        get current device id
        :return: tuple(str(vendor_id), str(product_id), str(revision), str(vendor_specific))
        """
        return (self._vendor, self._product, self._revision, self._vendor_specific)

    def set_id(self, vendor, product, revision, vendor_specific):
        """
        set device id
        :param vendor: vendor_id - 8 character string
        :param product: product_id - 16 character string
        :param revision: - 4 character string
        :param vendor_specific: - 20 character string
        """
        self.cdemu.set_device_option(self._device_id, OP_DEV_ID, (vendor, product, revision, vendor_specific))