1 /*
2 // Copyright (c) 2020 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16 
17 #pragma once
18 
19 #include <array>
20 #include <fstream>
21 #include <iostream>
22 #include <string>
23 #include <variant>
24 #include <vector>
25 
26 constexpr uint8_t maxPayloadSupported = 0x6;
27 constexpr uint8_t maxHashSize = 64;
28 constexpr uint8_t maxSeedSize = 32;
29 constexpr uint8_t maxPasswordSize = 64;
30 
31 #pragma pack(push, 1)
32 struct PayloadStartTransfer
33 {
34     uint16_t payloadVersion;
35     uint32_t payloadTotalSize;
36     uint32_t payloadTotalChecksum;
37     uint8_t payloadFlag;
38 };
39 #pragma pack(pop)
40 
41 struct PayloadInProgress
42 {
43     uint32_t payloadReservationID;
44     uint32_t payloadOffset;
45     uint32_t payloadCurrentSize;
46     uint32_t payloadCurrentChecksum;
47 };
48 
49 struct PayloadEndTransfer
50 {
51     uint32_t payloadReservationID;
52 };
53 
54 struct SetPayloadRetValue
55 {
56     uint32_t reservationToken;
57     uint32_t actualPayloadWritten;
58     uint32_t actualTotalPayloadWritten;
59 };
60 
61 struct setBIOSCapabilitiesReq
62 {
63     uint8_t OOBCapability;
64     uint8_t reserved1;
65     uint8_t reserved2;
66     uint8_t reserved3;
67 };
68 
69 struct PayloadInfo
70 {
71     uint32_t payloadReservationID;
72     uint8_t payloadType;
73     uint16_t payloadVersion;
74     uint32_t payloadTotalSize;
75     uint32_t payloadTotalChecksum;
76     uint8_t payloadStatus;
77     uint8_t payloadflag;
78     uint32_t payloadTimeStamp;
79     uint32_t payloadCurrentSize;
80     uint32_t payloadCurrentChecksum;
81     uint32_t actualTotalPayloadWritten;
82 };
83 
84 struct NVOOBdata
85 {
86     setBIOSCapabilitiesReq mBIOSCapabilities;
87     uint8_t mIsBIOSCapInitDone;
88     PayloadInfo payloadInfo[maxPayloadSupported];
89 };
90