blob: 7e22849c3267d61c1e4ad7a2071ccd116d8f9623 [file] [log] [blame]
Patrick Venture00887592018-12-11 10:57:06 -08001#pragma once
2
Patrick Venture0533d0b2018-12-13 08:48:24 -08003#include "firmware_handler.hpp"
4
Patrick Venture7871b452018-12-13 08:53:14 -08005#include <cstdint>
Patrick Venture00887592018-12-11 10:57:06 -08006#include <string>
7#include <vector>
8
Patrick Venture9b534f02018-12-13 16:10:02 -08009namespace host_tool
10{
11
Patrick Venture0bf8bf02018-12-12 20:43:25 -080012struct StatResponse
13{
14 std::uint16_t blob_state;
15 std::uint32_t size;
16 std::vector<std::uint8_t> metadata;
17};
18
Patrick Venture00887592018-12-11 10:57:06 -080019class BlobInterface
20{
Patrick Venture00887592018-12-11 10:57:06 -080021 public:
22 virtual ~BlobInterface() = default;
23
24 /**
25 * Get a list of the blob_ids provided by the BMC.
26 *
27 * @return list of strings, each representing a blob_id returned.
28 */
29 virtual std::vector<std::string> getBlobList() = 0;
Patrick Venture0bf8bf02018-12-12 20:43:25 -080030
31 /**
32 * Get the stat() on the blob_id.
33 *
34 * @param[in] id - the blob_id.
35 * @return metadata structure.
36 */
37 virtual StatResponse getStat(const std::string& id) = 0;
Patrick Venture0533d0b2018-12-13 08:48:24 -080038
39 /**
40 * Attempt to open the file using the specific data interface flag.
41 *
42 * @param[in] blob - the blob_id to open.
43 * @param[in] handlerFlags - the data interface flag, if relevant.
44 * @return the session id on success.
45 * @throws BlobException on failure.
46 */
47 virtual std::uint16_t
48 openBlob(const std::string& id,
49 blobs::FirmwareBlobHandler::UpdateFlags handlerFlags) = 0;
Patrick Venture00887592018-12-11 10:57:06 -080050};
Patrick Venture9b534f02018-12-13 16:10:02 -080051
52} // namespace host_tool