summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/base
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-12-29 00:26:47 +0000
committerAidan MacDonald <amachronic@protonmail.com>2022-01-02 15:50:17 -0500
commitcbb57fe714b633cd5b91850eae9cfd326dee2eeb (patch)
tree57fce120fed1c96313842f63b770dbee9fa55333 /utils/rbutilqt/base
parent42999913ba3a76221fceb04b1f935ed4e0e71476 (diff)
downloadrockbox-cbb57fe714b633cd5b91850eae9cfd326dee2eeb.tar.gz
rockbox-cbb57fe714b633cd5b91850eae9cfd326dee2eeb.zip
rbutil: allow checking bootloader installer capabilities
Instead of checking for certain hardcoded strings, fetch the actual capability bitmask by instantiating an installer and querying it. Change-Id: I7883d9c1e90da37ee7c0189732ac626685adbfa1
Diffstat (limited to 'utils/rbutilqt/base')
-rw-r--r--utils/rbutilqt/base/bootloaderinstallbase.h2
-rw-r--r--utils/rbutilqt/base/bootloaderinstallhelper.cpp20
-rw-r--r--utils/rbutilqt/base/bootloaderinstallhelper.h1
-rw-r--r--utils/rbutilqt/base/bootloaderinstallipod.cpp11
-rw-r--r--utils/rbutilqt/base/bootloaderinstallsansa.cpp10
5 files changed, 34 insertions, 10 deletions
diff --git a/utils/rbutilqt/base/bootloaderinstallbase.h b/utils/rbutilqt/base/bootloaderinstallbase.h
index 9a216a632c..0d9423a06f 100644
--- a/utils/rbutilqt/base/bootloaderinstallbase.h
+++ b/utils/rbutilqt/base/bootloaderinstallbase.h
@@ -67,8 +67,6 @@ class BootloaderInstallBase : public QObject
67 // be modified for new targets 67 // be modified for new targets
68 static QString postinstallHints(QString model); 68 static QString postinstallHints(QString model);
69 69
70 //! returns the correct BootloaderInstaller object for the requested type
71 static BootloaderInstallBase* createBootloaderInstaller(QObject* parent,QString type);
72 protected slots: 70 protected slots:
73 void downloadReqFinished(int id, bool error); 71 void downloadReqFinished(int id, bool error);
74 void downloadBlFinish(bool error); 72 void downloadBlFinish(bool error);
diff --git a/utils/rbutilqt/base/bootloaderinstallhelper.cpp b/utils/rbutilqt/base/bootloaderinstallhelper.cpp
index c94ed29140..4a1b24883b 100644
--- a/utils/rbutilqt/base/bootloaderinstallhelper.cpp
+++ b/utils/rbutilqt/base/bootloaderinstallhelper.cpp
@@ -77,6 +77,26 @@ BootloaderInstallBase* BootloaderInstallHelper::createBootloaderInstaller(QObjec
77 } 77 }
78} 78}
79 79
80BootloaderInstallBase::Capabilities
81 BootloaderInstallHelper::bootloaderInstallerCapabilities(QObject *parent, QString type)
82{
83 /* Note - this is a terrible pattern in general, but in this case
84 * it is a much simpler option to just allocate a class instance.
85 * This operation is rarely used, anyway. */
86
87 BootloaderInstallBase* bootloaderInstaller =
88 createBootloaderInstaller(parent, type);
89
90 BootloaderInstallBase::Capabilities caps = BootloaderInstallBase::Capabilities();
91
92 if(bootloaderInstaller) {
93 caps = bootloaderInstaller->capabilities();
94 delete bootloaderInstaller;
95 }
96
97 return caps;
98}
99
80 100
81//! @brief Return post install hints string. 101//! @brief Return post install hints string.
82//! @param model model string 102//! @param model model string
diff --git a/utils/rbutilqt/base/bootloaderinstallhelper.h b/utils/rbutilqt/base/bootloaderinstallhelper.h
index c89444d7a7..9b6fed0866 100644
--- a/utils/rbutilqt/base/bootloaderinstallhelper.h
+++ b/utils/rbutilqt/base/bootloaderinstallhelper.h
@@ -29,6 +29,7 @@ class BootloaderInstallHelper : public QObject
29 Q_OBJECT 29 Q_OBJECT
30 public: 30 public:
31 static BootloaderInstallBase* createBootloaderInstaller(QObject* parent, QString type); 31 static BootloaderInstallBase* createBootloaderInstaller(QObject* parent, QString type);
32 static BootloaderInstallBase::Capabilities bootloaderInstallerCapabilities(QObject *parent, QString type);
32 static QString postinstallHints(QString model); 33 static QString postinstallHints(QString model);
33}; 34};
34 35
diff --git a/utils/rbutilqt/base/bootloaderinstallipod.cpp b/utils/rbutilqt/base/bootloaderinstallipod.cpp
index f94813f99f..d08cc22339 100644
--- a/utils/rbutilqt/base/bootloaderinstallipod.cpp
+++ b/utils/rbutilqt/base/bootloaderinstallipod.cpp
@@ -28,10 +28,6 @@
28BootloaderInstallIpod::BootloaderInstallIpod(QObject *parent) 28BootloaderInstallIpod::BootloaderInstallIpod(QObject *parent)
29 : BootloaderInstallBase(parent) 29 : BootloaderInstallBase(parent)
30{ 30{
31 (void)parent;
32 // initialize sector buffer. The sector buffer is part of the ipod_t
33 // structure, so a second instance of this class will have its own buffer.
34 ipod_alloc_buffer(&ipod, BUFFER_SIZE);
35} 31}
36 32
37 33
@@ -45,11 +41,18 @@ BootloaderInstallIpod::~BootloaderInstallIpod()
45 41
46bool BootloaderInstallIpod::install(void) 42bool BootloaderInstallIpod::install(void)
47{ 43{
44 // initialize sector buffer. The sector buffer is part of the ipod_t
45 // structure, so a second instance of this class will have its own buffer.
46 if(ipod.sectorbuf == nullptr) {
47 ipod_alloc_buffer(&ipod, BUFFER_SIZE);
48 }
49
48 if(ipod.sectorbuf == nullptr) { 50 if(ipod.sectorbuf == nullptr) {
49 emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR); 51 emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR);
50 emit done(true); 52 emit done(true);
51 return false; 53 return false;
52 } 54 }
55
53 // save buffer pointer before cleaning up ipod_t structure 56 // save buffer pointer before cleaning up ipod_t structure
54 unsigned char* sb = ipod.sectorbuf; 57 unsigned char* sb = ipod.sectorbuf;
55 memset(&ipod, 0, sizeof(struct ipod_t)); 58 memset(&ipod, 0, sizeof(struct ipod_t));
diff --git a/utils/rbutilqt/base/bootloaderinstallsansa.cpp b/utils/rbutilqt/base/bootloaderinstallsansa.cpp
index d4a2799f73..568bb82afa 100644
--- a/utils/rbutilqt/base/bootloaderinstallsansa.cpp
+++ b/utils/rbutilqt/base/bootloaderinstallsansa.cpp
@@ -27,10 +27,6 @@
27BootloaderInstallSansa::BootloaderInstallSansa(QObject *parent) 27BootloaderInstallSansa::BootloaderInstallSansa(QObject *parent)
28 : BootloaderInstallBase(parent) 28 : BootloaderInstallBase(parent)
29{ 29{
30 (void)parent;
31 // initialize sector buffer. The sector buffer is part of the sansa_t
32 // structure, so a second instance of this class will have its own buffer.
33 sansa_alloc_buffer(&sansa, BUFFER_SIZE);
34} 30}
35 31
36 32
@@ -46,6 +42,12 @@ BootloaderInstallSansa::~BootloaderInstallSansa()
46 */ 42 */
47bool BootloaderInstallSansa::install(void) 43bool BootloaderInstallSansa::install(void)
48{ 44{
45 // initialize sector buffer. The sector buffer is part of the sansa_t
46 // structure, so a second instance of this class will have its own buffer.
47 if(sansa.sectorbuf == nullptr) {
48 sansa_alloc_buffer(&sansa, BUFFER_SIZE);
49 }
50
49 if(sansa.sectorbuf == nullptr) { 51 if(sansa.sectorbuf == nullptr) {
50 emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR); 52 emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR);
51 return false; 53 return false;