16d6dc7adSKuiying Wang /*
26d6dc7adSKuiying Wang // Copyright (c) 2020 Intel Corporation
36d6dc7adSKuiying Wang //
46d6dc7adSKuiying Wang // Licensed under the Apache License, Version 2.0 (the "License");
56d6dc7adSKuiying Wang // you may not use this file except in compliance with the License.
66d6dc7adSKuiying Wang // You may obtain a copy of the License at
76d6dc7adSKuiying Wang //
86d6dc7adSKuiying Wang //      http://www.apache.org/licenses/LICENSE-2.0
96d6dc7adSKuiying Wang //
106d6dc7adSKuiying Wang // Unless required by applicable law or agreed to in writing, software
116d6dc7adSKuiying Wang // distributed under the License is distributed on an "AS IS" BASIS,
126d6dc7adSKuiying Wang // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136d6dc7adSKuiying Wang // See the License for the specific language governing permissions and
146d6dc7adSKuiying Wang // limitations under the License.
156d6dc7adSKuiying Wang */
166d6dc7adSKuiying Wang 
176d6dc7adSKuiying Wang #pragma once
186d6dc7adSKuiying Wang 
196d6dc7adSKuiying Wang #include <array>
206d6dc7adSKuiying Wang #include <fstream>
216d6dc7adSKuiying Wang #include <iostream>
226d6dc7adSKuiying Wang #include <string>
236d6dc7adSKuiying Wang #include <variant>
246d6dc7adSKuiying Wang #include <vector>
256d6dc7adSKuiying Wang 
266d6dc7adSKuiying Wang constexpr uint8_t maxPayloadSupported = 0x6;
276d6dc7adSKuiying Wang constexpr uint8_t maxHashSize = 64;
28*32381877SAyushi Smriti constexpr uint8_t maxSeedSize = 32;
296d6dc7adSKuiying Wang constexpr uint8_t maxPasswordSize = 64;
306d6dc7adSKuiying Wang 
316d6dc7adSKuiying Wang #pragma pack(push, 1)
326d6dc7adSKuiying Wang struct PayloadStartTransfer
336d6dc7adSKuiying Wang {
346d6dc7adSKuiying Wang     uint16_t payloadVersion;
356d6dc7adSKuiying Wang     uint32_t payloadTotalSize;
366d6dc7adSKuiying Wang     uint32_t payloadTotalChecksum;
376d6dc7adSKuiying Wang     uint8_t payloadFlag;
386d6dc7adSKuiying Wang };
396d6dc7adSKuiying Wang #pragma pack(pop)
406d6dc7adSKuiying Wang 
416d6dc7adSKuiying Wang struct PayloadInProgress
426d6dc7adSKuiying Wang {
436d6dc7adSKuiying Wang     uint32_t payloadReservationID;
446d6dc7adSKuiying Wang     uint32_t payloadOffset;
456d6dc7adSKuiying Wang     uint32_t payloadCurrentSize;
466d6dc7adSKuiying Wang     uint32_t payloadCurrentChecksum;
476d6dc7adSKuiying Wang };
486d6dc7adSKuiying Wang 
496d6dc7adSKuiying Wang struct PayloadEndTransfer
506d6dc7adSKuiying Wang {
516d6dc7adSKuiying Wang     uint32_t payloadReservationID;
526d6dc7adSKuiying Wang };
536d6dc7adSKuiying Wang 
546d6dc7adSKuiying Wang struct SetPayloadRetValue
556d6dc7adSKuiying Wang {
566d6dc7adSKuiying Wang     uint32_t reservationToken;
576d6dc7adSKuiying Wang     uint32_t actualPayloadWritten;
586d6dc7adSKuiying Wang     uint32_t actualTotalPayloadWritten;
596d6dc7adSKuiying Wang };
606d6dc7adSKuiying Wang 
616d6dc7adSKuiying Wang struct setBIOSCapabilitiesReq
626d6dc7adSKuiying Wang {
636d6dc7adSKuiying Wang     uint8_t OOBCapability;
646d6dc7adSKuiying Wang     uint8_t reserved1;
656d6dc7adSKuiying Wang     uint8_t reserved2;
666d6dc7adSKuiying Wang     uint8_t reserved3;
676d6dc7adSKuiying Wang };
686d6dc7adSKuiying Wang 
696d6dc7adSKuiying Wang struct PayloadInfo
706d6dc7adSKuiying Wang {
716d6dc7adSKuiying Wang     uint32_t payloadReservationID;
726d6dc7adSKuiying Wang     uint8_t payloadType;
736d6dc7adSKuiying Wang     uint16_t payloadVersion;
746d6dc7adSKuiying Wang     uint32_t payloadTotalSize;
756d6dc7adSKuiying Wang     uint32_t payloadTotalChecksum;
766d6dc7adSKuiying Wang     uint8_t payloadStatus;
776d6dc7adSKuiying Wang     uint8_t payloadflag;
786d6dc7adSKuiying Wang     uint32_t payloadTimeStamp;
796d6dc7adSKuiying Wang     uint32_t payloadCurrentSize;
806d6dc7adSKuiying Wang     uint32_t payloadCurrentChecksum;
816d6dc7adSKuiying Wang     uint32_t actualTotalPayloadWritten;
826d6dc7adSKuiying Wang };
836d6dc7adSKuiying Wang 
846d6dc7adSKuiying Wang struct NVOOBdata
856d6dc7adSKuiying Wang {
866d6dc7adSKuiying Wang     setBIOSCapabilitiesReq mBIOSCapabilities;
876d6dc7adSKuiying Wang     uint8_t mIsBIOSCapInitDone;
886d6dc7adSKuiying Wang     PayloadInfo payloadInfo[maxPayloadSupported];
896d6dc7adSKuiying Wang };
90