From 20608377f32b6530783583597f5de190176402a6 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 4 Oct 2018 22:05:25 +1000 Subject: [PATCH 1/2] Add support for Kobo Forma The Kobo Forma will be released soon. This adds the basic support so that it will be recognised. The exact firmware version isn't known, but it is unlikely there will be any issues with it. --- src/calibre/devices/kobo/driver.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index 3b23e81f42..e16689f7c9 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -1335,7 +1335,7 @@ class KOBOTOUCH(KOBO): # Starting with firmware version 3.19.x, the last number appears to be is a # build number. A number will be recorded here but it can be safely ignored # when testing the firmware version. - max_supported_fwversion = (4, 10, 11586) + max_supported_fwversion = (4, 10, 11626) # The following document firwmare versions where new function or devices were added. # Not all are used, but this feels a good place to record it. min_fwversion_shelves = (2, 0, 0) @@ -1347,6 +1347,7 @@ class KOBOTOUCH(KOBO): min_auraone_fwversion = (3, 20, 7280) min_fwversion_overdrive = (4, 0, 7523) min_clarahd_fwversion = (4, 8, 11090) + # min_forma_fwversion = (4, 10, 11xxx) # TODO: Update when known. has_kepubs = True @@ -1372,16 +1373,20 @@ class KOBOTOUCH(KOBO): AURA_H2O_EDITION2_PRODUCT_ID = [0x4227] AURA_ONE_PRODUCT_ID = [0x4225] CLARA_HD_PRODUCT_ID = [0x4228] + FORMA_PRODUCT_ID = [0x4229] GLO_PRODUCT_ID = [0x4173] GLO_HD_PRODUCT_ID = [0x4223] + GLO_HD_PRODUCT_ID = [0x4223] MINI_PRODUCT_ID = [0x4183] TOUCH_PRODUCT_ID = [0x4163] TOUCH2_PRODUCT_ID = [0x4224] + FORMA_PRODUCT_ID = [0x4223] + GLO_HD_PRODUCT_ID = [0x4229] PRODUCT_ID = AURA_PRODUCT_ID + AURA_EDITION2_PRODUCT_ID + \ AURA_HD_PRODUCT_ID + AURA_H2O_PRODUCT_ID + AURA_H2O_EDITION2_PRODUCT_ID + \ GLO_PRODUCT_ID + GLO_HD_PRODUCT_ID + \ MINI_PRODUCT_ID + TOUCH_PRODUCT_ID + TOUCH2_PRODUCT_ID + \ - AURA_ONE_PRODUCT_ID + CLARA_HD_PRODUCT_ID + AURA_ONE_PRODUCT_ID + CLARA_HD_PRODUCT_ID + FORMA_PRODUCT_ID BCD = [0x0110, 0x0326, 0x401] @@ -1440,6 +1445,14 @@ class KOBOTOUCH(KOBO): # Used for library lists ' - N3_LIBRARY_GRID.parsed':[(149, 198), 0, 200,False,], # Used for library lists } + FORMA_COVER_FILE_ENDINGS = { + # Used for screensaver, home screen + ' - N3_FULL.parsed': [(1440,1920), 0, 200,True,], + # Used for Details screen before FW2.8.1, then for current book tile on home screen + ' - N3_LIBRARY_FULL.parsed':[(355, 473), 0, 200,False,], + # Used for library lists + ' - N3_LIBRARY_GRID.parsed':[(149, 198), 0, 200,False,], # Used for library lists + } # Following are the sizes used with pre2.1.4 firmware # COVER_FILE_ENDINGS = { # ' - N3_LIBRARY_FULL.parsed':[(355,530),0, 99,], # Used for Details screen @@ -3006,6 +3019,9 @@ class KOBOTOUCH(KOBO): def isClaraHD(self): return self.detected_device.idProduct in self.CLARA_HD_PRODUCT_ID + def isForma(self): + return self.detected_device.idProduct in self.FORMA_PRODUCT_ID + def isGlo(self): return self.detected_device.idProduct in self.GLO_PRODUCT_ID @@ -3036,6 +3052,8 @@ class KOBOTOUCH(KOBO): _cover_file_endings = self.AURA_ONE_COVER_FILE_ENDINGS elif self.isClaraHD(): _cover_file_endings = self.GLO_HD_COVER_FILE_ENDINGS + elif self.isForma(): + _cover_file_endings = self.FORMA_COVER_FILE_ENDINGS elif self.isGlo(): _cover_file_endings = self.GLO_COVER_FILE_ENDINGS elif self.isGloHD(): @@ -3066,7 +3084,9 @@ class KOBOTOUCH(KOBO): elif self.isAuraOne(): device_name = 'Kobo Aura ONE' elif self.isClaraHD(): - device_name = 'Clara HD' + device_name = 'Kobo Clara HD' + elif self.isForma(): + device_name = 'Kobo Forma' elif self.isGlo(): device_name = 'Kobo Glo' elif self.isGloHD(): From 83501393d63491373bb80845d2978254f3aaef1c Mon Sep 17 00:00:00 2001 From: David Date: Thu, 4 Oct 2018 22:34:08 +1000 Subject: [PATCH 2/2] Remove debugging lines --- src/calibre/devices/kobo/driver.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index e16689f7c9..614a368ac1 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -1376,12 +1376,9 @@ class KOBOTOUCH(KOBO): FORMA_PRODUCT_ID = [0x4229] GLO_PRODUCT_ID = [0x4173] GLO_HD_PRODUCT_ID = [0x4223] - GLO_HD_PRODUCT_ID = [0x4223] MINI_PRODUCT_ID = [0x4183] TOUCH_PRODUCT_ID = [0x4163] TOUCH2_PRODUCT_ID = [0x4224] - FORMA_PRODUCT_ID = [0x4223] - GLO_HD_PRODUCT_ID = [0x4229] PRODUCT_ID = AURA_PRODUCT_ID + AURA_EDITION2_PRODUCT_ID + \ AURA_HD_PRODUCT_ID + AURA_H2O_PRODUCT_ID + AURA_H2O_EDITION2_PRODUCT_ID + \ GLO_PRODUCT_ID + GLO_HD_PRODUCT_ID + \