blob: 4b544c2999730f05005916787de9aaf2852aeabd [file] [log] [blame]
Alexander Hansen00b3cae2024-11-26 17:32:33 +01001#pragma once
2
3#include "package_parser.hpp"
4#include "sdbusplus/message/native_types.hpp"
5
6#include <cstdint>
Alexander Hansencc372352025-01-14 14:15:39 +01007#include <functional>
Alexander Hansen00b3cae2024-11-26 17:32:33 +01008#include <memory>
9
10using namespace pldm::fw_update;
11
12namespace pldm_package_util
13{
14
15// @param buf pointer to the pldm package
16// @param size size of 'buf'
17// @returns PackageParser instance
Patrick Williamseae5ec92025-02-01 08:21:45 -050018std::shared_ptr<PackageParser> parsePLDMPackage(const uint8_t* buf,
19 size_t size);
Alexander Hansen00b3cae2024-11-26 17:32:33 +010020
21// reads into a buffer, from file
22// @param file the file to read from
Alexander Hansencc372352025-01-14 14:15:39 +010023// @param packageData the pre-allocated buffer for the package data
24// @param packageSize how many bytes to read from the file
25int readImagePackage(FILE* file, uint8_t* packageData, size_t packageSize);
Alexander Hansen00b3cae2024-11-26 17:32:33 +010026
27// @param image file descriptor to the package
Alexander Hansencc372352025-01-14 14:15:39 +010028// @param sizeOut function will write the size of the package here
29// @returns a unique pointer to the mmapped pldm package
30std::unique_ptr<void, std::function<void(void*)>> mmapImagePackage(
31 sdbusplus::message::unix_fd image, size_t* sizeOut);
Alexander Hansen00b3cae2024-11-26 17:32:33 +010032
33// @param packageParser PackageParser instance
34// @param compatible 'compatible' string of device
35// @param vendorIANA vendor iana of device
Alexander Hansencc372352025-01-14 14:15:39 +010036// @param componentOffsetOut function returns offset of component image
37// @param componentSizeOut function returns size of component image
38// @param componentVersionOut function returns version of component image
Alexander Hansen00b3cae2024-11-26 17:32:33 +010039// @returns 0 on success
40int extractMatchingComponentImage(
41 const std::shared_ptr<PackageParser>& packageParser,
42 const std::string& compatible, uint32_t vendorIANA,
Alexander Hansencc372352025-01-14 14:15:39 +010043 uint32_t* componentOffsetOut, size_t* componentSizeOut,
44 std::string& componentVersionOut);
Alexander Hansen00b3cae2024-11-26 17:32:33 +010045
46} // namespace pldm_package_util