diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2021-12-29 00:26:47 +0000 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2022-01-02 15:50:17 -0500 |
commit | cbb57fe714b633cd5b91850eae9cfd326dee2eeb (patch) | |
tree | 57fce120fed1c96313842f63b770dbee9fa55333 /utils/rbutilqt/base | |
parent | 42999913ba3a76221fceb04b1f935ed4e0e71476 (diff) | |
download | rockbox-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.h | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhelper.cpp | 20 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhelper.h | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallipod.cpp | 11 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallsansa.cpp | 10 |
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 | ||
80 | BootloaderInstallBase::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 @@ | |||
28 | BootloaderInstallIpod::BootloaderInstallIpod(QObject *parent) | 28 | BootloaderInstallIpod::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 | ||
46 | bool BootloaderInstallIpod::install(void) | 42 | bool 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 @@ | |||
27 | BootloaderInstallSansa::BootloaderInstallSansa(QObject *parent) | 27 | BootloaderInstallSansa::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 | */ |
47 | bool BootloaderInstallSansa::install(void) | 43 | bool 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; |