blob: 22cdd6bca4ed70c7affeb6ff44b4f9f4dfdb5e97 [file] [log] [blame]
John Wang58a0e062019-11-08 15:38:15 +08001#include "pldm_base_cmd.hpp"
Sridevi Ramesh98576432019-11-27 10:10:28 -06002#include "pldm_bios_cmd.hpp"
John Wang58a0e062019-11-08 15:38:15 +08003#include "pldm_cmd_helper.hpp"
Sridevi Rameshd4489752019-12-08 09:03:29 -06004#include "pldm_fru_cmd.hpp"
George Liud6649362019-11-27 19:06:51 +08005#include "pldm_platform_cmd.hpp"
George Liu44073352020-03-12 14:00:13 +08006#include "tool/oem/ibm/pldm_host_cmd.hpp"
Lakshminarayana R. Kammath27693a42019-06-24 00:51:47 -05007
8#include <CLI/CLI.hpp>
9
John Wang58a0e062019-11-08 15:38:15 +080010namespace pldmtool
11{
12
13namespace raw
14{
15
16using namespace pldmtool::helper;
17
18namespace
19{
20std::vector<std::unique_ptr<CommandInterface>> commands;
21}
22
23class RawOp : public CommandInterface
24{
25 public:
26 ~RawOp() = default;
27 RawOp() = delete;
28 RawOp(const RawOp&) = delete;
29 RawOp(RawOp&&) = default;
30 RawOp& operator=(const RawOp&) = delete;
31 RawOp& operator=(RawOp&&) = default;
32
33 explicit RawOp(const char* type, const char* name, CLI::App* app) :
34 CommandInterface(type, name, app)
35 {
36 app->add_option("-d,--data", rawData, "raw data")
37 ->required()
38 ->expected(-3);
39 }
40 std::pair<int, std::vector<uint8_t>> createRequestMsg() override
41
42 {
43 return {PLDM_SUCCESS, rawData};
44 }
45
46 void parseResponseMsg(pldm_msg* /* responsePtr */,
47 size_t /* payloadLength */) override
48 {
49 }
50
51 private:
52 std::vector<uint8_t> rawData;
53};
54
55void registerCommand(CLI::App& app)
56{
57 auto raw =
58 app.add_subcommand("raw", "send a raw request and print response");
59 commands.push_back(std::make_unique<RawOp>("raw", "raw", raw));
60}
61
62} // namespace raw
63} // namespace pldmtool
64
Lakshminarayana R. Kammath27693a42019-06-24 00:51:47 -050065int main(int argc, char** argv)
66{
67
68 CLI::App app{"PLDM requester tool for OpenBMC"};
John Wang58a0e062019-11-08 15:38:15 +080069 app.require_subcommand(1)->ignore_case();
Lakshminarayana R. Kammath27693a42019-06-24 00:51:47 -050070
John Wang58a0e062019-11-08 15:38:15 +080071 pldmtool::raw::registerCommand(app);
72 pldmtool::base::registerCommand(app);
Sridevi Ramesh98576432019-11-27 10:10:28 -060073 pldmtool::bios::registerCommand(app);
George Liud6649362019-11-27 19:06:51 +080074 pldmtool::platform::registerCommand(app);
Sridevi Rameshd4489752019-12-08 09:03:29 -060075 pldmtool::fru::registerCommand(app);
Zahed Hossainf0d17222020-04-03 05:24:58 -050076
77#ifdef OEM_IBM
George Liu44073352020-03-12 14:00:13 +080078 pldmtool::oem_ibm::power_host::registerCommand(app);
Zahed Hossainf0d17222020-04-03 05:24:58 -050079#endif
Lakshminarayana R. Kammath27693a42019-06-24 00:51:47 -050080
81 CLI11_PARSE(app, argc, argv);
John Wang58a0e062019-11-08 15:38:15 +080082 return 0;
Lakshminarayana R. Kammath27693a42019-06-24 00:51:47 -050083}