/*
 * Copyright (c)  2018-present Facebook. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

enum fb_app_cmds
{
    CMD_APP_GET_SELFTEST_RESULTS = 0x04,
    CMD_APP_MFR_TEST_ON = 0x05,
    CMD_APP_SET_ACPI = 0x06,
    CMD_APP_GET_ACPI = 0x07,
    CMD_APP_GET_DEV_GUID = 0x08,
    CMD_APP_SET_GLOBAL_ENABLES = 0x2E,
    CMD_APP_GET_GLOBAL_ENABLES = 0x2F,
    CMD_APP_CLEAR_MESSAGE_FLAGS = 0x30,
    CMD_APP_GET_SYS_GUID = 0x37,
    CMD_APP_SET_SYS_INFO_PARAMS = 0x58,
    CMD_APP_GET_SYS_INFO_PARAMS = 0x59,

};

#define SIZE_SYSFW_VER 17
#define SIZE_SYS_NAME 17
#define SIZE_OS_NAME 17
#define SIZE_OS_VER 17
#define SIZE_BMC_URL 17
#define SIZE_OS_HV_URL 17
#define SIZE_BIOS_CURRENT_BOOT_LIST 250
#define SIZE_BIOS_FIXED_BOOT_DEVICE 1
#define SIZE_BIOS_RSTR_DFLT_SETTING 1
#define SIZE_LAST_BOOT_TIME 4
#define SIZE_PCIE_PORT_CONFIG 2

#define JSON_DATA_FILE "/etc/appData.json"
#define KEY_SYSFW_VER "sysfw_ver_server"
#define KEY_BIOS_BOOT_LEN "bios_boot_list_len"

// System Info Parameters (IPMI/Table 22-16c)
enum SysInfoParams
{
    SYS_INFO_PARAM_SET_IN_PROG,
    SYS_INFO_PARAM_SYSFW_VER,
    SYS_INFO_PARAM_SYS_NAME,
    SYS_INFO_PARAM_PRI_OS_NAME,
    SYS_INFO_PARAM_PRESENT_OS_NAME,
    SYS_INFO_PARAM_PRESENT_OS_VER,
    SYS_INFO_PARAM_BMC_URL,
    SYS_INFO_PARAM_OS_HV_URL,
    SYS_INFO_PARAM_BIOS_CURRENT_BOOT_LIST = 0xC1,
    SYS_INFO_PARAM_BIOS_FIXED_BOOT_DEVICE = 0xC2,
    SYS_INFO_PARAM_BIOS_RSTR_DFLT_SETTING = 0xC3,
    SYS_INFO_PARAM_LAST_BOOT_TIME = 0xC4,
};

// Structure for System Info Params (IPMI/Section 22.14a)
struct SysInfoParam
{
    uint8_t set_in_prog;
    uint8_t sysfw_ver[SIZE_SYSFW_VER];
    uint8_t sys_name[SIZE_SYS_NAME];
    uint8_t pri_os_name[SIZE_OS_NAME];
    uint8_t present_os_name[SIZE_OS_NAME];
    uint8_t present_os_ver[SIZE_OS_VER];
    uint8_t bmc_url[SIZE_BMC_URL];
    uint8_t os_hv_url[SIZE_OS_HV_URL];
    uint8_t bios_current_boot_list[SIZE_BIOS_CURRENT_BOOT_LIST];
    uint8_t bios_fixed_boot_device[SIZE_BIOS_FIXED_BOOT_DEVICE];
    uint8_t bios_rstr_dflt_setting[SIZE_BIOS_RSTR_DFLT_SETTING];
    uint8_t last_boot_time[SIZE_LAST_BOOT_TIME];

} __attribute__((packed));
