File diff 000000000000 → b168d439d9a0
cdemu/device.py
Show inline comments
 
new file 100644
 
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))