1bae44755Sopenharmony_ci/*
2bae44755Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3bae44755Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4bae44755Sopenharmony_ci * you may not use this file except in compliance with the License.
5bae44755Sopenharmony_ci * You may obtain a copy of the License at
6bae44755Sopenharmony_ci *
7bae44755Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8bae44755Sopenharmony_ci *
9bae44755Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10bae44755Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11bae44755Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12bae44755Sopenharmony_ci * See the License for the specific language governing permissions and
13bae44755Sopenharmony_ci * limitations under the License.
14bae44755Sopenharmony_ci */
15bae44755Sopenharmony_ci
16bae44755Sopenharmony_ci#ifndef CREATE_PCID_H
17bae44755Sopenharmony_ci#define CREATE_PCID_H
18bae44755Sopenharmony_ci
19bae44755Sopenharmony_ci#include <stdint.h>
20bae44755Sopenharmony_ci
21bae44755Sopenharmony_ci#define OS_SYSCAP_BYTES 120
22bae44755Sopenharmony_ci
23bae44755Sopenharmony_citypedef struct ProductCompatibilityID {
24bae44755Sopenharmony_ci    uint16_t apiVersion : 15;
25bae44755Sopenharmony_ci    uint16_t apiVersionType : 1;
26bae44755Sopenharmony_ci    uint16_t systemType : 3;
27bae44755Sopenharmony_ci    uint16_t reserved : 13;
28bae44755Sopenharmony_ci    uint32_t manufacturerID;
29bae44755Sopenharmony_ci    uint8_t osSyscap[OS_SYSCAP_BYTES];
30bae44755Sopenharmony_ci} PCIDMain;
31bae44755Sopenharmony_ci
32bae44755Sopenharmony_citypedef struct PcidHeader {
33bae44755Sopenharmony_ci    uint16_t apiVersion : 15;
34bae44755Sopenharmony_ci    uint16_t apiVersionType : 1;
35bae44755Sopenharmony_ci    uint16_t systemType : 3;
36bae44755Sopenharmony_ci    uint16_t reserved : 13;
37bae44755Sopenharmony_ci    uint32_t manufacturerID;
38bae44755Sopenharmony_ci} PCIDHeader;
39bae44755Sopenharmony_ci
40bae44755Sopenharmony_ciint32_t CreatePCID(char *inputFile, char *outDirPath);
41bae44755Sopenharmony_ciint32_t DecodePCID(char *inputFile, char *outDirPath);
42bae44755Sopenharmony_ciint32_t DecodeStringPCIDToJson(char *input, char *outDirPath);
43bae44755Sopenharmony_ciint32_t EncodePcidscToString(char *inputFile, char *outDirPath);
44bae44755Sopenharmony_ci#endif