1 #pragma once 2 3 #include "config.h" 4 5 #include "libpldm/bios.h" 6 #include "libpldm/bios_table.h" 7 8 #include "bios_config.hpp" 9 #include "bios_table.hpp" 10 #include "pldmd/handler.hpp" 11 12 #include <stdint.h> 13 14 #include <ctime> 15 #include <functional> 16 #include <map> 17 #include <vector> 18 19 namespace pldm 20 { 21 22 namespace responder 23 { 24 25 namespace bios 26 { 27 28 class Handler : public CmdHandler 29 { 30 public: 31 Handler(); 32 33 /** @brief Handler for GetDateTime 34 * 35 * @param[in] request - Request message payload 36 * @return Response - PLDM Response message 37 */ 38 Response getDateTime(const pldm_msg* request, size_t payloadLength); 39 40 /** @brief Handler for GetBIOSTable 41 * 42 * @param[in] request - Request message 43 * @param[in] payload_length - Request message payload length 44 * @return Response - PLDM Response message 45 */ 46 Response getBIOSTable(const pldm_msg* request, size_t payloadLength); 47 48 /** @brief Handler for SetBIOSTable 49 * 50 * @param[in] request - Request message 51 * @param[in] payload_length - Request message payload length 52 * @return Response - PLDM Response message 53 */ 54 Response setBIOSTable(const pldm_msg* request, size_t payloadLength); 55 56 /** @brief Handler for GetBIOSAttributeCurrentValueByHandle 57 * 58 * @param[in] request - Request message 59 * @param[in] payloadLength - Request message payload length 60 * @return Response - PLDM Response message 61 */ 62 Response getBIOSAttributeCurrentValueByHandle(const pldm_msg* request, 63 size_t payloadLength); 64 65 /** @brief Handler for SetDateTime 66 * 67 * @param[in] request - Request message payload 68 * @param[in] payloadLength - Request message payload length 69 * @return Response - PLDM Response message 70 */ 71 Response setDateTime(const pldm_msg* request, size_t payloadLength); 72 73 /** @brief Handler for setBIOSAttributeCurrentValue 74 * 75 * @param[in] request - Request message 76 * @param[in] payloadLength - Request message payload length 77 * @return Response - PLDM Response message 78 */ 79 Response setBIOSAttributeCurrentValue(const pldm_msg* request, 80 size_t payloadLength); 81 82 private: 83 BIOSConfig biosConfig; 84 }; 85 86 } // namespace bios 87 88 namespace utils 89 { 90 91 /** @brief Convert epoch time to BCD time 92 * 93 * @param[in] timeSec - Time got from epoch time in seconds 94 * @param[out] seconds - number of seconds in BCD 95 * @param[out] minutes - number of minutes in BCD 96 * @param[out] hours - number of hours in BCD 97 * @param[out] day - day of the month in BCD 98 * @param[out] month - month number in BCD 99 * @param[out] year - year number in BCD 100 */ 101 void epochToBCDTime(uint64_t timeSec, uint8_t& seconds, uint8_t& minutes, 102 uint8_t& hours, uint8_t& day, uint8_t& month, 103 uint16_t& year); 104 105 /** @brief Convert dec time to epoch time 106 * 107 * @param[in] seconds - number of seconds in dec 108 * @param[in] minutes - number of minutes in dec 109 * @param[in] hours - number of hours in dec 110 * @param[in] day - day of the month in dec 111 * @param[in] month - month number in dec 112 * @param[in] year - year number in dec 113 * @return time - epoch time 114 */ 115 std::time_t timeToEpoch(uint8_t seconds, uint8_t minutes, uint8_t hours, 116 uint8_t day, uint8_t month, uint16_t year); 117 } // namespace utils 118 119 } // namespace responder 120 } // namespace pldm 121