diff --git a/src/calibre/devices/cybookg3/driver.py b/src/calibre/devices/cybookg3/driver.py
index ed0891f256..cf9f2e5a41 100644
--- a/src/calibre/devices/cybookg3/driver.py
+++ b/src/calibre/devices/cybookg3/driver.py
@@ -22,7 +22,7 @@ class CYBOOKG3(USBMS):
VENDOR_ID = 0x0bda
PRODUCT_ID = 0x0703
- BCD = 0x110
+ BCD = [0x110, 0x132]
VENDOR_NAME = 'BOOKEEN'
PRODUCT_NAME = 'CYBOOK_GEN3'
diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py
index 070ec54dc1..f6b0c6a0a8 100644
--- a/src/calibre/devices/usbms/device.py
+++ b/src/calibre/devices/usbms/device.py
@@ -38,10 +38,12 @@ class Device(_Device):
+ %(BCD_start)s
%(main_memory)s
%(deviceclass)s
+ %(BCD_end)s
@@ -50,35 +52,47 @@ class Device(_Device):
+ %(BCD_start)s
%(storage_card)s
%(deviceclass)s
+ %(BCD_end)s
'''
+ FDI_BCD_TEMPLATE = ''
+
def __init__(self, key='-1', log_packets=False, report_progress=None) :
self._main_prefix = self._card_prefix = None
- @classmethod
- def get_bcd_less_fdi(cls):
- return cls.FDI_TEMPLATE%dict(
- app=__appname__,
- deviceclass=cls.__name__,
- vendor_id=hex(cls.VENDOR_ID),
- product_id=hex(cls.PRODUCT_ID),
- main_memory=cls.MAIN_MEMORY_VOLUME_LABEL,
- storage_card=cls.STORAGE_CARD_VOLUME_LABEL,
- )
-
@classmethod
def get_fdi(cls):
+ fdi = ''
+
+ fdi_base_values = dict(
+ app=__appname__,
+ deviceclass=cls.__name__,
+ vendor_id=hex(cls.VENDOR_ID),
+ product_id=hex(cls.PRODUCT_ID),
+ main_memory=cls.MAIN_MEMORY_VOLUME_LABEL,
+ storage_card=cls.STORAGE_CARD_VOLUME_LABEL,
+ )
if cls.BCD is None:
- return cls.get_bcd_less_fdi()
- raise NotImplementedError('TODO:')
+ fdi_base_values['BCD_start'] = ''
+ fdi_base_values['BCD_end'] = ''
+ fdi = cls.FDI_TEMPLATE % fdi_base_values
+ else:
+ for bcd in cls.BCD:
+ fdi_bcd_values = fdi_base_values
+ fdi_bcd_values['BCD_start'] = cls.FDI_BCD_TEMPLATE % dict(bcd=hex(bcd))
+ fdi_bcd_values['BCD_end'] = ''
+ fdi += cls.FDI_TEMPLATE % fdi_bcd_values
+
+ return fdi
def set_progress_reporter(self, report_progress):
self.report_progress = report_progress
@@ -173,7 +187,7 @@ class Device(_Device):
self._card_prefix = drives[1][1]
@classmethod
- def get_osx_mountpoints(cls, raw=None):
+ def get_osx_mountpoints(self, raw=None):
if raw is None:
ioreg = '/usr/sbin/ioreg'
if not os.access(ioreg, os.X_OK):
@@ -193,9 +207,9 @@ class Device(_Device):
break
for i, line in enumerate(lines):
- if line.strip().endswith('') and OSX_NAME_MAIN_MEM in line:
+ if line.strip().endswith('') and self.OSX_NAME_MAIN_MEM in line:
get_dev_node(lines[i+1:], 'main')
- if line.strip().endswith('') and OSX_NAME_CARD_MEM in line:
+ if line.strip().endswith('') and self.OSX_NAME_CARD_MEM in line:
get_dev_node(lines[i+1:], 'card')
if len(names.keys()) == 2:
break