xref: /openbmc/phosphor-bmc-code-mgmt/cpld/cpld.cpp (revision f6470b5e95618fa0eeb8b03b37c53a311dfc1ef3)
1 #include "cpld.hpp"
2 
3 namespace phosphor::software::cpld
4 {
5 
updateDevice(const uint8_t * image,size_t image_size)6 sdbusplus::async::task<bool> CPLDDevice::updateDevice(const uint8_t* image,
7                                                       size_t image_size)
8 {
9     if (cpldInterface == nullptr)
10     {
11         lg2::error("CPLD interface is not initialized");
12         co_return false;
13     }
14     else
15     {
16         setUpdateProgress(1);
17         if (!(co_await cpldInterface->updateFirmware(
18                 false, image, image_size, [this](int percent) -> bool {
19                     return this->setUpdateProgress(percent);
20                 })))
21         {
22             lg2::error("Failed to update CPLD firmware");
23             co_return false;
24         }
25 
26         setUpdateProgress(100);
27         lg2::info("Successfully updated CPLD");
28         co_return true;
29     }
30 }
31 
getVersion(std::string & version)32 sdbusplus::async::task<bool> CPLDDevice::getVersion(std::string& version)
33 {
34     if (cpldInterface == nullptr)
35     {
36         lg2::error("CPLD interface is not initialized");
37         co_return false;
38     }
39     else
40     {
41         if (!(co_await cpldInterface->getVersion(version)))
42         {
43             lg2::error("Failed to get CPLD version");
44             co_return false;
45         }
46 
47         lg2::info("CPLD version: {VERSION}", "VERSION", version);
48         co_return true;
49     }
50 }
51 
52 } // namespace phosphor::software::cpld
53