1 #pragma once 2 3 #include "package_parser.hpp" 4 #include "sdbusplus/message/native_types.hpp" 5 6 #include <cstdint> 7 #include <functional> 8 #include <memory> 9 10 using namespace pldm::fw_update; 11 12 namespace pldm_package_util 13 { 14 15 // @param buf pointer to the pldm package 16 // @param size size of 'buf' 17 // @returns PackageParser instance 18 std::shared_ptr<PackageParser> parsePLDMPackage(const uint8_t* buf, 19 size_t size); 20 21 // reads into a buffer, from file 22 // @param file the file to read from 23 // @param packageData the pre-allocated buffer for the package data 24 // @param packageSize how many bytes to read from the file 25 int readImagePackage(FILE* file, uint8_t* packageData, size_t packageSize); 26 27 // @param image file descriptor to the package 28 // @param sizeOut function will write the size of the package here 29 // @returns a unique pointer to the mmapped pldm package 30 std::unique_ptr<void, std::function<void(void*)>> mmapImagePackage( 31 sdbusplus::message::unix_fd image, size_t* sizeOut); 32 33 // @param packageParser PackageParser instance 34 // @param compatible 'compatible' string of device 35 // @param vendorIANA vendor iana of device 36 // @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 39 // @returns 0 on success 40 int extractMatchingComponentImage( 41 const std::shared_ptr<PackageParser>& packageParser, 42 const std::string& compatible, uint32_t vendorIANA, 43 uint32_t* componentOffsetOut, size_t* componentSizeOut, 44 std::string& componentVersionOut); 45 46 } // namespace pldm_package_util 47