/** @file
  Define IFR NVData structures used by the WiFi Connection Manager.

  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _WIFI_NVDATASTRUC_H_
#define _WIFI_NVDATASTRUC_H_

#include <Guid/WifiConnectionManagerConfigHii.h>
#include "WifiConnectionMgrConfigHii.h"

#define MANAGER_VARSTORE_ID  0x0802

#define WIFI_STR_MAX_SIZE            224
#define WIFI_FILENAME_STR_MAX_SIZE   224
#define WIFI_MGR_MAX_MAC_STRING_LEN  96

#define SSID_MIN_LEN       1
#define SSID_MAX_LEN       32
#define SSID_STORAGE_SIZE  33

#define PASSWORD_MIN_LEN       8
#define PASSWORD_MAX_LEN       63
#define PASSWORD_STORAGE_SIZE  65

#define EAP_IDENTITY_LEN   63
#define EAP_IDENTITY_SIZE  64

#define FORMID_NONE_FORM            0
#define FORMID_MAC_SELECTION        1
#define FORMID_WIFI_MAINPAGE        2
#define FORMID_NETWORK_LIST         3
#define FORMID_CONNECT_NETWORK      4
#define FORMID_ENROLL_CERT          5
#define FORMID_CA_LIST              6
#define FORMID_ENROLL_PRIVATE_KEY   7
#define FORMID_PRIVATE_KEY_LIST     8
#define FORMID_WIFI_SETTINGS        9
#define FORMID_HIDDEN_NETWORK_LIST  10

//
// Mac List Form Key
//
#define KEY_MAC_LIST  0x100

//
// Main Form Key
//
#define KEY_REFRESH_TITLE_CONNECTION_STATUS  0x101

//
// Network List Form Key
//
#define KEY_NETWORK_LIST          0x102
#define KEY_REFRESH_NETWORK_LIST  0x103
#define KEY_WIFI_SETTINGS         0x104

//
// Connect Network Form Key
//
#define KEY_PASSWORD_CONNECT_NETWORK            0x201
#define KEY_CONNECT_ACTION                      0x202
#define KEY_REFRESH_CONNECT_CONFIGURATION       0x203
#define KEY_EAP_AUTH_METHOD_CONNECT_NETWORK     0x204
#define KEY_EAP_SEAUTH_METHOD_CONNECT_NETWORK   0x205
#define KEY_ENROLL_CA_CERT_CONNECT_NETWORK      0x206
#define KEY_ENROLL_CLIENT_CERT_CONNECT_NETWORK  0x207
#define KEY_ENROLL_PRIVATE_KEY_CONNECT_NETWORK  0x208
#define KEY_EAP_IDENTITY_CONNECT_NETWORK        0x209
#define KEY_EAP_PASSWORD_CONNECT_NETWORK        0x210

//
// Cert Form And Private Key Form
//
#define KEY_EAP_ENROLL_CERT_FROM_FILE         0x301
#define KEY_EAP_ENROLL_PRIVATE_KEY_FROM_FILE  0x302
#define KEY_SAVE_CERT_TO_MEM                  0x303
#define KEY_NO_SAVE_CERT_TO_MEM               0x304
#define KEY_SAVE_PRIVATE_KEY_TO_MEM           0x305
#define KEY_NO_SAVE_PRIVATE_KEY_TO_MEM        0x306
#define KEY_PRIVATE_KEY_PASSWORD              0x307
#define KEY_ENROLLED_CERT_NAME                0x308
#define KEY_ENROLLED_PRIVATE_KEY_NAME         0x309

//
// Hidden Network Configuration Form
//
#define KEY_HIDDEN_NETWORK         0x401
#define KEY_ADD_HIDDEN_NETWORK     0x402
#define KEY_REMOVE_HIDDEN_NETWORK  0x403

//
// Dynamic Lists
//
#define MAC_LIST_COUNT_MAX  255
#define LABEL_MAC_ENTRY     0x1000
#define KEY_MAC_ENTRY_BASE  0x1100

#define NETWORK_LIST_COUNT_MAX            4095
#define LABEL_NETWORK_LIST_ENTRY          0x2000
#define KEY_AVAILABLE_NETWORK_ENTRY_BASE  0x3000

#define HIDDEN_NETWORK_LIST_COUNT_MAX  255
#define LABEL_HIDDEN_NETWORK_ENTRY     0x4000
#define KEY_HIDDEN_NETWORK_ENTRY_BASE  0x4100

#define LABEL_END  0xffff

//
// Network Security Type
//
#define SECURITY_TYPE_NONE             0
#define SECURITY_TYPE_WPA_ENTERPRISE   1
#define SECURITY_TYPE_WPA2_ENTERPRISE  2
#define SECURITY_TYPE_WPA_PERSONAL     3
#define SECURITY_TYPE_WPA2_PERSONAL    4
#define SECURITY_TYPE_WEP              5
#define SECURITY_TYPE_WPA3_PERSONAL    6
#define SECURITY_TYPE_WPA3_ENTERPRISE  7
#define SECURITY_TYPE_UNKNOWN          8
#define SECURITY_TYPE_MAX              9

#define EAP_AUTH_METHOD_TTLS  0
#define EAP_AUTH_METHOD_PEAP  1
#define EAP_AUTH_METHOD_TLS   2
#define EAP_AUTH_METHOD_MAX   3

#define EAP_SEAUTH_METHOD_MSCHAPV2  0
#define EAP_SEAUTH_METHOD_MAX       1

#define HIDDEN_NETWORK_LIST_VAR_OFFSET  ((UINT16) OFFSET_OF (WIFI_MANAGER_IFR_NVDATA, HiddenNetworkList))

#pragma pack(1)
typedef struct _WIFI_MANAGER_IFR_NVDATA {
  UINT32    ProfileCount;
  CHAR16    SSId[SSID_STORAGE_SIZE];
  CHAR16    Password[PASSWORD_STORAGE_SIZE];
  CHAR16    PrivateKeyPassword[PASSWORD_STORAGE_SIZE];
  CHAR16    EapIdentity[EAP_IDENTITY_SIZE];
  CHAR16    EapPassword[PASSWORD_STORAGE_SIZE];
  UINT8     SecurityType;
  UINT8     EapAuthMethod;
  UINT8     EapSecondAuthMethod;
  UINT8     HiddenNetworkList[HIDDEN_NETWORK_LIST_COUNT_MAX];
} WIFI_MANAGER_IFR_NVDATA;
#pragma pack()

#endif
