blob: 9cfb22bb5e9d5748711f36845683902dc573e6a3 [file] [log] [blame]
Sampa Misra032bd502019-03-06 05:03:22 -06001#pragma once
2
Sampa Misrab37be312019-07-03 02:26:41 -05003#include "config.h"
4
George Liu6492f522020-06-16 10:34:05 +08005#include "libpldm/bios.h"
6#include "libpldm/bios_table.h"
7
John Wang6080aae2020-02-14 09:34:25 +08008#include "bios_config.hpp"
Sampa Misrab37be312019-07-03 02:26:41 -05009#include "bios_table.hpp"
Deepak Kodihalli1521f6d2020-06-16 08:51:02 -050010#include "pldmd/handler.hpp"
Sampa Misrab37be312019-07-03 02:26:41 -050011
Sampa Misra032bd502019-03-06 05:03:22 -060012#include <stdint.h>
13
Xiaochao Ma60227a02019-12-04 09:00:12 +080014#include <ctime>
John Wang02700402019-10-06 16:34:29 +080015#include <functional>
Sampa Misrab37be312019-07-03 02:26:41 -050016#include <map>
vkaverapa6575b82019-04-03 05:33:52 -050017#include <vector>
18
Sampa Misra032bd502019-03-06 05:03:22 -060019namespace pldm
20{
21
22namespace responder
23{
24
Deepak Kodihallibc669f12019-11-28 08:52:07 -060025namespace bios
26{
27
Deepak Kodihallibc669f12019-11-28 08:52:07 -060028class Handler : public CmdHandler
29{
30 public:
Deepak Kodihallid9fb1522019-11-28 10:06:34 -060031 Handler();
Deepak Kodihallibc669f12019-11-28 08:52:07 -060032
33 /** @brief Handler for GetDateTime
34 *
35 * @param[in] request - Request message payload
Xiaochao Ma60227a02019-12-04 09:00:12 +080036 * @return Response - PLDM Response message
Deepak Kodihallibc669f12019-11-28 08:52:07 -060037 */
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
Xiaochao Ma60227a02019-12-04 09:00:12 +080044 * @return Response - PLDM Response message
Deepak Kodihallibc669f12019-11-28 08:52:07 -060045 */
46 Response getBIOSTable(const pldm_msg* request, size_t payloadLength);
John Wang8721ed62019-12-05 14:44:43 +080047
George Liu1b180d82020-07-23 14:01:58 +080048 /** @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
John Wang8721ed62019-12-05 14:44:43 +080056 /** @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);
Xiaochao Ma60227a02019-12-04 09:00:12 +080064
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);
John Wang42174882019-12-20 14:56:59 +080072
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);
John Wang6080aae2020-02-14 09:34:25 +080081
82 private:
83 BIOSConfig biosConfig;
Deepak Kodihallibc669f12019-11-28 08:52:07 -060084};
Sampa Misrab37be312019-07-03 02:26:41 -050085
Jinu Joy Thomasf666db12019-05-29 05:22:31 -050086} // namespace bios
87
Sampa Misra032bd502019-03-06 05:03:22 -060088namespace 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 */
101void epochToBCDTime(uint64_t timeSec, uint8_t& seconds, uint8_t& minutes,
102 uint8_t& hours, uint8_t& day, uint8_t& month,
103 uint16_t& year);
Xiaochao Ma60227a02019-12-04 09:00:12 +0800104
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 */
115std::time_t timeToEpoch(uint8_t seconds, uint8_t minutes, uint8_t hours,
116 uint8_t day, uint8_t month, uint16_t year);
Sampa Misra032bd502019-03-06 05:03:22 -0600117} // namespace utils
118
119} // namespace responder
120} // namespace pldm