radio_tool 0.2.1
Loading...
Searching...
No Matches
fw_factory.hpp
1
18#pragma once
19
20#include <radio_tool/fw/fw.hpp>
21#include <radio_tool/fw/tyt_fw.hpp>
22#include <radio_tool/fw/tyt_fw_sgl.hpp>
23#include <radio_tool/fw/cs_fw.hpp>
24#include <radio_tool/fw/ailunce_fw.hpp>
25#include <radio_tool/fw/yaesu_fw.hpp>
26
27#include <string>
28#include <memory>
29#include <functional>
30
31namespace radio_tool::fw
32{
34 {
35 public:
37 std::function<bool(const std::string &)> &&fnFile,
38 std::function<bool(const std::string &)> &&fnRadio,
39 std::function<std::unique_ptr<FirmwareSupport>()> &&fnCreate
40 ) : SupportsFirmwareFile(fnFile), SupportsRadioModel(fnRadio), CreateHandler(fnCreate)
41 {
42
43 }
44 const std::function<bool(const std::string &)> SupportsFirmwareFile;
45
46 const std::function<bool(const std::string &)> SupportsRadioModel;
47
48 const std::function<std::unique_ptr<FirmwareSupport>()> CreateHandler;
49 };
50
54 const std::vector<FirmwareSupportTest> AllFirmwareHandlers = {
58 /* Below supports random files - no checks */
61 };
62
64 {
65 public:
70 static auto GetFirmwareFileHandler(const std::string &file) -> std::unique_ptr<FirmwareSupport>
71 {
72 for (const auto &fn : AllFirmwareHandlers)
73 {
74 if (fn.SupportsFirmwareFile(file))
75 {
76 return fn.CreateHandler();
77 }
78 }
79 throw std::runtime_error("Firmware file not supported");
80 }
81
86 static auto GetFirmwareModelHandler(const std::string &model) -> std::unique_ptr<FirmwareSupport>
87 {
88 for (const auto &fn : AllFirmwareHandlers)
89 {
90 if (fn.SupportsRadioModel(model))
91 {
92 return fn.CreateHandler();
93 }
94 }
95 throw std::runtime_error("Firmware model not supported");
96 }
97 };
98} // namespace radio_tool::fw
static auto Create() -> std::unique_ptr< FirmwareSupport >
Definition: ailunce_fw.hpp:58
static auto SupportsRadioModel(const std::string &model) -> bool
Definition: ailunce_fw.cpp:81
static auto SupportsFirmwareFile(const std::string &file) -> bool
Definition: ailunce_fw.cpp:65
static auto Create() -> std::unique_ptr< FirmwareSupport >
Definition: cs_fw.hpp:69
static auto SupportsFirmwareFile(const std::string &file) -> bool
Definition: cs_fw.cpp:161
static auto GetFirmwareModelHandler(const std::string &model) -> std::unique_ptr< FirmwareSupport >
Definition: fw_factory.hpp:86
static auto GetFirmwareFileHandler(const std::string &file) -> std::unique_ptr< FirmwareSupport >
Definition: fw_factory.hpp:70
static auto Create() -> std::unique_ptr< FirmwareSupport >
Definition: tyt_fw.hpp:201
static auto SupportsRadioModel(const std::string &model) -> bool
Definition: tyt_fw.cpp:205
static auto SupportsFirmwareFile(const std::string &file) -> bool
Definition: tyt_fw.cpp:179
static auto SupportsRadioModel(const std::string &model) -> bool
Definition: tyt_fw_sgl.cpp:174
static auto Create() -> std::unique_ptr< FirmwareSupport >
Definition: tyt_fw_sgl.hpp:179
static auto SupportsFirmwareFile(const std::string &file) -> bool
Definition: tyt_fw_sgl.cpp:159
static auto SupportsRadioModel(const std::string &model) -> bool
Definition: yaesu_fw.cpp:85
static auto Create() -> std::unique_ptr< FirmwareSupport >
Definition: yaesu_fw.hpp:79
static auto SupportsFirmwareFile(const std::string &file) -> bool
Definition: yaesu_fw.cpp:71
const std::vector< FirmwareSupportTest > AllFirmwareHandlers
Definition: fw_factory.hpp:54