|
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))
|