18457f821SDeepak Kodihalli ## This file is a template. The comment below is emitted 28457f821SDeepak Kodihalli ## into the rendered file; feel free to edit this file. 38457f821SDeepak Kodihalli // WARNING: Generated header. Do not edit! 48457f821SDeepak Kodihalli 58457f821SDeepak Kodihalli 68457f821SDeepak Kodihalli #pragma once 78457f821SDeepak Kodihalli 88457f821SDeepak Kodihalli #include <map> 98457f821SDeepak Kodihalli #include <iostream> 108457f821SDeepak Kodihalli #include "defines.hpp" 118457f821SDeepak Kodihalli #include "store.hpp" 12*76794495SDeepak Kodihalli #include "types.hpp" 13*76794495SDeepak Kodihalli #include "utils.hpp" 148457f821SDeepak Kodihalli 158457f821SDeepak Kodihalli namespace openpower 168457f821SDeepak Kodihalli { 178457f821SDeepak Kodihalli namespace vpd 188457f821SDeepak Kodihalli { 198457f821SDeepak Kodihalli namespace inventory 208457f821SDeepak Kodihalli { 218457f821SDeepak Kodihalli 228457f821SDeepak Kodihalli /** @brief API to write parsed VPD to inventory, 238457f821SDeepak Kodihalli * for a specifc FRU 248457f821SDeepak Kodihalli * 258457f821SDeepak Kodihalli * @param [in] vpdStore - Store object containing 268457f821SDeepak Kodihalli * parsed VPD 278457f821SDeepak Kodihalli * @param [in] path - FRU object path 288457f821SDeepak Kodihalli */ 298457f821SDeepak Kodihalli template<Fru F> 308457f821SDeepak Kodihalli void writeFru(const Store& vpdStore, const std::string& path); 318457f821SDeepak Kodihalli 328457f821SDeepak Kodihalli % for key in fruDict.iterkeys(): 338457f821SDeepak Kodihalli <% 348457f821SDeepak Kodihalli fru = fruDict[key] 358457f821SDeepak Kodihalli %>\ 368457f821SDeepak Kodihalli // Specialization of ${key} 378457f821SDeepak Kodihalli template<> 388457f821SDeepak Kodihalli void writeFru<Fru::${key}>(const Store& vpdStore, 398457f821SDeepak Kodihalli const std::string& path) 408457f821SDeepak Kodihalli { 414cf89a10SDeepak Kodihalli ObjectMap objects; 424cf89a10SDeepak Kodihalli InterfaceMap interfaces; 438457f821SDeepak Kodihalli 448457f821SDeepak Kodihalli // Inventory manager needs object path, list of interface names to be 458457f821SDeepak Kodihalli // implemented, and property:value pairs contained in said interfaces 468457f821SDeepak Kodihalli 474cf89a10SDeepak Kodihalli % for interface, properties in fru.iteritems(): 488457f821SDeepak Kodihalli <% 494cf89a10SDeepak Kodihalli names = interface.split(".") 504cf89a10SDeepak Kodihalli intfName = names[0] + names[-1] 518457f821SDeepak Kodihalli %>\ 524cf89a10SDeepak Kodihalli PropertyMap ${intfName}Props; 538457f821SDeepak Kodihalli % for name, value in properties.iteritems(): 544cf89a10SDeepak Kodihalli % if fru and interface and name and value: 558457f821SDeepak Kodihalli <% 568457f821SDeepak Kodihalli record, keyword = value.split(",") 578457f821SDeepak Kodihalli %>\ 584cf89a10SDeepak Kodihalli ${intfName}Props["${name}"] = 598457f821SDeepak Kodihalli vpdStore.get<Record::${record}, record::Keyword::${keyword}>(); 608457f821SDeepak Kodihalli % endif 618457f821SDeepak Kodihalli % endfor 624cf89a10SDeepak Kodihalli interfaces.emplace("${interface}", 634cf89a10SDeepak Kodihalli std::move(${intfName}Props)); 648457f821SDeepak Kodihalli % endfor 658457f821SDeepak Kodihalli 664cf89a10SDeepak Kodihalli sdbusplus::message::object_path object(path); 674cf89a10SDeepak Kodihalli objects.emplace(std::move(object), std::move(interfaces)); 684cf89a10SDeepak Kodihalli 694cf89a10SDeepak Kodihalli callPIM(std::move(objects)); 708457f821SDeepak Kodihalli } 718457f821SDeepak Kodihalli 728457f821SDeepak Kodihalli % endfor 738457f821SDeepak Kodihalli } // namespace inventory 748457f821SDeepak Kodihalli } // namespace vpd 758457f821SDeepak Kodihalli } // namespace openpower 76