From 4d5f4558d55c40493e3f2aa2165e84446213d620 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 5 Sep 2012 20:54:54 +0530 Subject: [PATCH] MTP: Get serial number from the device --- src/calibre/devices/mtp/base.py | 1 + src/calibre/devices/mtp/unix/driver.py | 4 ++++ src/calibre/devices/mtp/windows/driver.py | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/calibre/devices/mtp/base.py b/src/calibre/devices/mtp/base.py index bad027baa1..90369221d1 100644 --- a/src/calibre/devices/mtp/base.py +++ b/src/calibre/devices/mtp/base.py @@ -37,6 +37,7 @@ class MTPDeviceBase(DevicePlugin): self.progress_reporter = None self.current_friendly_name = None self.report_progress = lambda x, y: None + self.current_serial_num = None def reset(self, key='-1', log_packets=False, report_progress=None, detected_device=None): diff --git a/src/calibre/devices/mtp/unix/driver.py b/src/calibre/devices/mtp/unix/driver.py index b59ec22110..3792bb2fcc 100644 --- a/src/calibre/devices/mtp/unix/driver.py +++ b/src/calibre/devices/mtp/unix/driver.py @@ -129,6 +129,7 @@ class MTP_DEVICE(MTPDeviceBase): def post_yank_cleanup(self): self.dev = self._filesystem_cache = self.current_friendly_name = None self.currently_connected_dev = None + self.current_serial_num = None @synchronous def startup(self): @@ -173,6 +174,9 @@ class MTP_DEVICE(MTPDeviceBase): if len(storage) > 2: self._cardb_id = storage[2]['id'] self.current_friendly_name = self.dev.friendly_name + if not self.current_friendly_name: + self.current_friendly_name = self.dev.model_name or _('Unknown MTP device') + self.current_serial_num = self.dev.serial_number @property def filesystem_cache(self): diff --git a/src/calibre/devices/mtp/windows/driver.py b/src/calibre/devices/mtp/windows/driver.py index 63fedfaf66..2f606b42d1 100644 --- a/src/calibre/devices/mtp/windows/driver.py +++ b/src/calibre/devices/mtp/windows/driver.py @@ -231,10 +231,12 @@ class MTP_DEVICE(MTPDeviceBase): self.currently_connected_pnp_id = self.current_friendly_name = None self._main_id = self._carda_id = self._cardb_id = None self.dev = self._filesystem_cache = None + self.current_serial_num = None def eject(self): if self.currently_connected_pnp_id is None: return self.eject_dev_on_next_scan = True + self.current_serial_num = None @same_thread def open(self, connected_device, library_uuid): @@ -259,9 +261,12 @@ class MTP_DEVICE(MTPDeviceBase): self._carda_id = storage[1]['id'] if len(storage) > 2: self._cardb_id = storage[2]['id'] - self.current_friendly_name = devdata.get('friendly_name', + self.current_friendly_name = devdata.get('friendly_name', '') + if not self.current_friendly_name: + self.current_friendly_name = devdata.get('model_name', _('Unknown MTP device')) self.currently_connected_pnp_id = connected_device + self.current_serial_num = devdata.get('serial_number', None) @same_thread def get_basic_device_information(self):