//
//  Values.swift
//  SIIMpaPrinterSample
//

import Foundation
import SwiftUI
import SIIMpaPrinterManager

let KEY_TYPE_ADDRESS                                 = "KEY_TYPE_ADDRESS"
let KEY_TYPE_PORTTYPE                                = "KEY_TYPE_PORTTYPE"
let KEY_TYPE_PRINTERMODEL                            = "KEY_TYPE_PRINTERMODEL"

let VALUE_TYPE_ADDRESS                               = "Not Selected"
let VALUE_TYPE_PORTTYPE                              = "Other"
let VALUE_TYPE_PRINTERMODEL                          = "Other"

let PORTTYPE_TCP_IP                                  = "TCP/IP"
let PORTTYPE_BLUETOOTH                               = "Bluetooth"
let PRINTER_MODEL_MPA40                              = "MP-A40"

let CALLBACK_ONLINE_SECTION                          = "Online"
let CALLBACK_STATUS_SECTION                          = "Printer Status"

let CALLBACK_VOLTAGE_ERROR                           = "Voltage Error"
let CALLBACK_HARDWARE_ERROR                          = "Hardware Error"
let CALLBACK_HEAD_TEMPERATURE_ERROR                  = "Head Temperature Error"
let CALLBACK_OUT_OF_PAPER_ERROR                      = "Out-Of-Paper Error"
let CALLBACK_PAPER_JAM_ERROR                         = "Paper Jam Error"
let CALLBACK_COVER_OPEN_ERROR                        = "Cover Open Error"
let CALLBACK_BATTERY_ERROR                           = "Battery Error"
let CALLBACK_FEED_SWTICH_STATE                       = "Feed Switch Error"
let CALLBACK_PAPER_FEED_STATE                        = "Paper Feed Error"
let CALLBACK_RETURN_WAITING_STATE                    = "Return-waiting Error"
let CALLBACK_FLASH_MEMORY_REWRITING                  = "FLASH memory rewriting"
let CALLBACK_BATTERY_STATE                           = "Battery State"

let KEY_TYPE_NV_MEM_CAP                              = "NV graphics memory capacity"
let KEY_TYPE_NV_MEM_REM_CAP                          = "NV graphics memory remaining capacity"
let KEY_TYPE_NV_MEM_KEYCODE_LIST                     = "NV graphics key code list"
let KEY_TYPE_REM_USER_MEM_CAP_DEFRAG                 = "Remaining user area after defragment"
let KEY_TYPE_REM_USER_MEM_CAP                        = "Remaining user area"
let KEY_TYPE_FUNC_SET_RESP                           = "Function setting response"
let KEY_TYPE_PRN_ID_MODEL                            = "Printer ID (Model ID)"
let KEY_TYPE_PRN_ID_TYPE                             = "Printer ID (Type ID)"
let KEY_TYPE_PRN_ID_ROM_VER                          = "Printer ID (ROM version ID)"
let KEY_TYPE_PRN_ID_FIRM_VER_MAIN                    = "Printer ID (Firmware version (main))"
let KEY_TYPE_PRN_ID_MFR                              = "Printer ID (Manufacturer)"
let KEY_TYPE_PRN_ID_MODEL_NAME                       = "Printer ID (Model name)"
let KEY_TYPE_PRN_ID_FIRM_VER_BOOT                    = "Printer ID (Firmware version (boot))"
let KEY_TYPE_PRN_ID_FIRM_CHECKSUM_BOOT               = "Printer ID (Firmware checksum (boot))"
let KEY_TYPE_PRN_ID_FIRM_CHECKSUM_MAIN               = "Printer ID (Firmware checksum (main))"
let KEY_TYPE_PRN_ID_FIRM_CHECKSUM                    = "Printer ID (Firmware checksum (main+boot))"
let KEY_TYPE_MAINT_NUM_FEED_LINE                     = "Maintenance counter (Paper feed)"
let KEY_TYPE_MAINT_NUM_HEAD_ACTIVE                   = "Maintenance counter (head activation)"
let KEY_TYPE_MAINT_DRIVE_TIME                        = "Maintenance counter (Drive time)"
let KEY_TYPE_MAINT_NUM_FEED_LINE_INTEGRATION         = "Maintenance counter (Paper feed (integrated))"
let KEY_TYPE_MAINT_NUM_HEAD_ACTIVE_INTEGRATION       = "Maintenance counter (head activation (integrated))"
let KEY_TYPE_MAINT_DRIVE_TIME_INTEGRATION            = "Maintenance counter (Drive time (integrated))"
let KEY_TYPE_HFONT_24_CHECKSUM                       = "1-byte 24-dot font ID (Checksum)"
let KEY_TYPE_HFONT_24_ID                             = "1-byte 24-dot font ID (ID)"
let KEY_TYPE_HFONT_24_INT_CHAR                       = "1-byte 24-dot font ID (International Character)"
let KEY_TYPE_HFONT_16_CHECKSUM                       = "1-byte 16-dot font ID (Checksum)"
let KEY_TYPE_HFONT_16_ID                             = "1-byte 16-dot font ID (ID)"
let KEY_TYPE_HFONT_16_INT_CHAR                       = "1-byte 16-dot font ID (International Character)"
let KEY_TYPE_FFONT_LANG                              = "2-byte font ID (Language)"
let KEY_TYPE_FFONT_STANDARD                          = "2-byte font ID (Standard)"
let KEY_TYPE_FFONT_COMPANY                           = "2-byte font ID (Company name)"
let KEY_TYPE_FFONT_CHECKSUM                          = "2-byte font ID (Checksum)"
let KEY_TYPE_FFONT_DATA_SIZE                         = "2-byte font ID (Data size)"
let KEY_TYPE_FFONT_ROM_ID                            = "2-byte font ID (ROMID)"

let KEY_TYPE_TEXT                                    = "KEY_TYPE_TEXT"
let KEY_TYPE_FONT                                    = "KEY_TYPE_FONT"
let KEY_TYPE_SCALE                                   = "KEY_TYPE_SCALE"
let KEY_TYPE_UNDERLINE                               = "KEY_TYPE_UNDERLINE"
let KEY_TYPE_BOLD                                    = "KEY_TYPE_BOLD"
let KEY_TYPE_REVERSE                                 = "KEY_TYPE_REVERSE"
let KEY_TYPE_ROTATION                                = "KEY_TYPE_ROTATION"

let TEXT_TEXT_SECTION                                = "Text"
let TEXT_FONT_SECTION                                = "Font"
let TEXT_SCALE_SECTION                               = "Scale"
let TEXT_UNDERLINE_SECTION                           = "Underline"
let TEXT_BOLD_SECTION                                = "Bold"
let TEXT_REVERSE_SECTION                             = "Reverse"
let TEXT_ROTATION_SECTION                            = "Rotation"

let TEXT_FONT_A                                      = "Font A"
let TEXT_FONT_B                                      = "Font B"

let TEXT_SCALE_1                                     = "1 x 1"
let TEXT_SCALE_2                                     = "2 x 2"
let TEXT_SCALE_3                                     = "3 x 3"
let TEXT_SCALE_4                                     = "4 x 4"
let TEXT_SCALE_5                                     = "5 x 5"
let TEXT_SCALE_6                                     = "6 x 6"
let TEXT_SCALE_7                                     = "7 x 7"
let TEXT_SCALE_8                                     = "8 x 8"

let TEXT_UNDERLINE_NONE                              = "None"
let TEXT_UNDERLINE_1DOT                              = "1-dot underline"
let TEXT_UNDERLINE_2DOT                              = "2-dot underline"

let TEXT_BOLD_OFF                                    = "OFF"
let TEXT_BOLD_ON                                     = "ON"

let TEXT_REVERSE_OFF                                 = "OFF"
let TEXT_REVERSE_ON                                  = "ON"

let TEXT_ROTATION_NONE                               = "None"
let TEXT_ROTATION_90_TO_RIGHT                        = "Right 90"
let TEXT_ROTATION_180                                = "Rotate 180"
let TEXT_ROTATION_90_TO_LEFT                         = "Left 90"

let KEY_TYPE_BARCODE_TYPE                            = "KEY_TYPE_BARCODE_TYPE"
let KEY_TYPE_BARCODE_DATA                            = "KEY_TYPE_BARCODE_DATA"
let KEY_TYPE_BARCODE_MODULE_WIDTH                    = "KEY_TYPE_BARCODE_MODULE_WIDTH"
let KEY_TYPE_BARCODE_HEIGHT                          = "KEY_TYPE_BARCODE_HEIGHT"
let KEY_TYPE_BARCODE_HRI_SETTING                     = "KEY_TYPE_BARCODE_HRI_SETTING"
let KEY_TYPE_BARCODE_NW_RATIO                        = "KEY_TYPE_BARCODE_NW_RATIO"

let PDF_START_INDEX_SECTION                          = "Start Index"
let PDF_END_INDEX_SECTION                            = "End Index"
let PDF_ROTATION_SECTION                             = "Rotation"
let PDF_WIDTH_SECTION                                = "Width"
let PDF_BOTTOM_MARGIN_SECTION                        = "Bottom Margin"
let PDF_DITHERING_SECTION                            = "Dithering"

let PDF_ROTATION_NONE                                = "None"
let PDF_ROTATION_180                                 = "Rotate 180"

let PDF_DITHERING_DISABLE                            = "Disabled"
let PDF_DITHERING_ERROR_DIFFUSION                    = "Error Diffusion"

let BARCODE_TYPE_SECTION                             = "Barcode Type"
let BARCODE_DATA_SECTION                             = "Data"
let BARCODE_MODULE_WIDTH_SECTION                     = "Module Width[dot]"
let BARCODE_HEIGHT_SECTION                           = "Barcode Height[dot]"
let BARCODE_HRI_SETTING_SECTION                      = "HRI Setting"
let BARCODE_NW_RATIO_SECTION                         = "N:W Ratio"

let BARCODE_TYPE_UPC_A                               = "UPC-A"
let BARCODE_TYPE_UPC_E                               = "UPC-E"
let BARCODE_TYPE_JAN13                               = "JAN13"
let BARCODE_TYPE_JAN8                                = "JAN8"
let BARCODE_TYPE_CODE39                              = "CODE39"
let BARCODE_TYPE_ITF                                 = "ITF"
let BARCODE_TYPE_CODABAR                             = "CODABAR"
let BARCODE_TYPE_CODE128                             = "CODE128"
let BARCODE_TYPE_CODE93                              = "CODE93"
let BARCODE_TYPE_JAN13_ADDON2                        = "JAN13 add-on 2"
let BARCODE_TYPE_JAN13_ADDON5                        = "JAN13 add-on 5"
let BARCODE_TYPE_GS1_OMNI_DIRECTIONAL                = "GS1 Databar Omni-directional"
let BARCODE_TYPE_GS1_TRUNCATED                       = "GS1 Databar Truncated"
let BARCODE_TYPE_GS1_LIMITED                         = "GS1 Databar Limited"
let BARCODE_TYPE_GS1_EXPANDED                        = "GS1 Databar Expanded"

let BARCODE_MODULE_WIDTH_2                           = "2"
let BARCODE_MODULE_WIDTH_3                           = "3"
let BARCODE_MODULE_WIDTH_4                           = "4"
let BARCODE_MODULE_WIDTH_5                           = "5"
let BARCODE_MODULE_WIDTH_6                           = "6"

let BARCODE_HRI_SETTING_NONE                         = "None"
let BARCODE_HRI_SETTING_TOP_FONT_A                   = "Over barcode(Font A)"
let BARCODE_HRI_SETTING_BOTTOM_FONT_A                = "Under barcode(Font A)"
let BARCODE_HRI_SETTING_FONT_A                       = "Over and Under barcode(Font A)"
let BARCODE_HRI_SETTING_TOP_FONT_B                   = "Over barcode(Font B)"
let BARCODE_HRI_SETTING_BOTTOM_FONT_B                = "Under barcode(Font B)"
let BARCODE_HRI_SETTING_FONT_B                       = "Over and Under barcode(Font B)"

let BARCODE_NW_RATIO_1TO2                            = "1:2"
let BARCODE_NW_RATIO_1TO2_5                          = "1:2.5"
let BARCODE_NW_RATIO_1TO3                            = "1:3"

let KEY_TYPE_2D_BARCODE_TYPE                         = "KEY_TYPE_2D_BARCODE_TYPE"
let KEY_TYPE_2D_BARCODE_MODE                         = "KEY_TYPE_2D_BARCODE_MODE"
let KEY_TYPE_2D_BARCODE_MODULE_SIZE                  = "KEY_TYPE_2D_BARCODE_MODULE_SIZE"
let KEY_TYPE_2D_BARCODE_ERROR_CORRECT                = "KEY_TYPE_2D_BARCODE_ERROR_CORRECT"
let KEY_TYPE_2D_BARCODE_DATA                         = "KEY_TYPE_2D_BARCODE_DATA"
let KEY_TYPE_2D_BARCODE_MODULE_HEIGHT                = "KEY_TYPE_2D_BARCODE_MODULE_HEIGHT"
let KEY_TYPE_2D_BARCODE_COLUMN                       = "KEY_TYPE_2D_BARCODE_COLUMN"
let KEY_TYPE_2D_BARCODE_ROW                          = "KEY_TYPE_2D_BARCODE_ROW"

let TWO_DIMENSION_BARCODE_TYPE_SECTION               = "2DCode Type"
let TWO_DIMENSION_BARCODE_DATA_SECTION               = "Data"
let TWO_DIMENSION_BARCODE_MODE_SECTION               = "Mode"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_SECTION        = "Module Size"
let TWO_DIMENSION_BARCODE_MODULE_HEIGHT_SECTION      = "Module Height[dot]"
let TWO_DIMENSION_BARCODE_COLUMN_SECTION             = "Column"
let TWO_DIMENSION_BARCODE_ROW_SECTION                = "Row"
let TWO_DIMENSION_BARCODE_ERROR_CORRECT_SECTION      = "Error Correct"

let TWO_DIMENSION_BARCODE_TYPE_QR_CODE               = "QR Code"
let TWO_DIMENSION_BARCODE_TYPE_PDF417                = "PDF417"
let TWO_DIMENSION_BARCODE_DATA_MATRIX                = "Data Matrix"
let TWO_DIMENSION_BARCODE_MAXI_CODE                  = "MaxiCode"
let TWO_DIMENSION_BARCODE_GS1_STACKED                = "GS1 Databar Stacked"
let TWO_DIMENSION_BARCODE_GS1_OMNI_DIRECTIONAL       = "GS1 Databar Stacked Omni-directional"
let TWO_DIMENSION_BARCODE_GS1_EXPANDED_STACKED       = "GS1 Databar Expanded Stacked"

let TWO_DIMENSION_BARCODE_QR_CODE_MODEL_1            = "Model 1"
let TWO_DIMENSION_BARCODE_QR_CODE_MODEL_2            = "Model 2"

let TWO_DIMENSION_BARCODE_PDF417_MODE_STANDARD       = "Standard"
let TWO_DIMENSION_BARCODE_PDF417_MODE_COMPACT        = "Compact"

let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_AUTO      = "Auto"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_10x10     = "10x10"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x12     = "12x12"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_14x14     = "14x14"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x16     = "16x16"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_18x18     = "18x18"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_20x20     = "20x20"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_22x22     = "22x22"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_24x24     = "24x24"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_26x26     = "26x26"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_32x32     = "32x32"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_36x36     = "36x36"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_40x40     = "40x40"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_44x44     = "44x44"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_48x48     = "48x48"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_52x52     = "52x52"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_64x64     = "64x64"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_72x72     = "72x72"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_80x80     = "80x80"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_88x88     = "88x88"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_96x96     = "96x96"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_104x104   = "104x104"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_120x120   = "120x120"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_132x132   = "132x132"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_144x144   = "144x144"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x18      = "8x18"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x32      = "8x32"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x26     = "12x26"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x36     = "12x36"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x36     = "16x36"
let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x48     = "16x48"

let TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_2           = "Mode2"
let TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_3           = "Mode3"
let TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_4           = "Mode4"
let TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_5           = "Mode5"

let TWO_DIMENSION_BARCODE_MODE_NONE                  = "None"

let TWO_DIMENSION_BARCODE_MODULE_SIZE_DEFAULT        = "Default"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_2              = "2 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_3              = "3 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_4              = "4 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_5              = "5 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_6              = "6 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_7              = "7 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_8              = "8 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_9              = "9 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_10             = "10 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_11             = "11 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_12             = "12 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_13             = "13 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_14             = "14 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_15             = "15 dot"
let TWO_DIMENSION_BARCODE_MODULE_SIZE_16             = "16 dot"

let TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_L         = "L"
let TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_M         = "M"
let TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_Q         = "Q"
let TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_H         = "H"

let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_0     = "0"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_1     = "1"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_2     = "2"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_3     = "3"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_4     = "4"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_5     = "5"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_6     = "6"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_7     = "7"
let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_8     = "8"
let TWO_DIMENSION_BARCODE_ERROR_CORRECT_NONE         = "None"

let KEY_TYPE_SOCKET_KEEP_TIME                        = "KEY_TYPE_SOCKET_KEEP_TIME"
let KEY_TYPE_WRITE_TIMEOUT                           = "KEY_TYPE_WRITE_TIMEOUT"
let KEY_TYPE_RESPONSE_TIMEOUT                        = "KEY_TYPE_RESPONSE_TIMEOUT"
let KEY_TYPE_CODEPAGE                                = "KEY_TYPE_CODEPAGE"
let KEY_TYPE_INTERNATIONAL_CHARACTER                 = "KEY_TYPE_INTERNATIONAL_CHARACTER"
let KEY_TYPE_LOG_FILE_SIZE                           = "KEY_TYPE_LOG_FILE_SIZE"

let SETTINGS_GET_VERSIOM_SECTION                     = "Version"
let SETTINGS_SOCKET_KEEP_TIME_SECTION                = "Socket Keeping time(s)"
let SETTINGS_WRITE_TIMEOUT_SECTION                   = "Write timeout(ms)"
let SETTINGS_RESPONSE_TIMEOUT_SECTION                = "Response timeout(ms)"
let SETTINGS_CODEPAGE_SECTION                        = "Code page"
let SETTINGS_INTERNATIONAL_CHARACTER_SECTION         = "International character"
let SETTINGS_LOG_FILE_SIZE_SECTION                   = "Log File Size"

let SETTINGS_INTERNATIONAL_CHARACTER_USA             = "USA"
let SETTINGS_INTERNATIONAL_CHARACTER_FRANCE          = "France"
let SETTINGS_INTERNATIONAL_CHARACTER_GERMANY         = "Germany"
let SETTINGS_INTERNATIONAL_CHARACTER_UNITED_KINGDOM  = "United Kingdom"
let SETTINGS_INTERNATIONAL_CHARACTER_DENMARK_1       = "Denmark I"
let SETTINGS_INTERNATIONAL_CHARACTER_SWEDEN          = "Sweden"
let SETTINGS_INTERNATIONAL_CHARACTER_ITALY           = "Italy"
let SETTINGS_INTERNATIONAL_CHARACTER_SPAIN_1         = "Spain I"
let SETTINGS_INTERNATIONAL_CHARACTER_JAPAN           = "Japan"
let SETTINGS_INTERNATIONAL_CHARACTER_NORWAY          = "Norway"
let SETTINGS_INTERNATIONAL_CHARACTER_DENMARK_2       = "Denmark II"
let SETTINGS_INTERNATIONAL_CHARACTER_SPAIN_2         = "Spain II"
let SETTINGS_INTERNATIONAL_CHARACTER_LATIN_AMERICA   = "Latin America"
let SETTINGS_INTERNATIONAL_CHARACTER_ARABIA          = "Arabia"

let SETTINGS_CODEPAGE_437                            = "Codepage 437"
let SETTINGS_CODEPAGE_KATAKANA                       = "Codepage Katakana"
let SETTINGS_CODEPAGE_850                            = "Codepage 850"
let SETTINGS_CODEPAGE_860                            = "Codepage 860"
let SETTINGS_CODEPAGE_863                            = "Codepage 863"
let SETTINGS_CODEPAGE_865                            = "Codepage 865"
let SETTINGS_CODEPAGE_857                            = "Codepage 857"
let SETTINGS_CODEPAGE_737                            = "Codepage 737"
let SETTINGS_CODEPAGE_1252                           = "Codepage 1252"
let SETTINGS_CODEPAGE_866                            = "Codepage 866"
let SETTINGS_CODEPAGE_852                            = "Codepage 852"
let SETTINGS_CODEPAGE_858                            = "Codepage 858"
let SETTINGS_CODEPAGE_855                            = "Codepage 855"
let SETTINGS_CODEPAGE_864                            = "Codepage 864"
let SETTINGS_CODEPAGE_1250                           = "Codepage 1250"
let SETTINGS_CODEPAGE_1251                           = "Codepage 1251"
let SETTINGS_CODEPAGE_1253                           = "Codepage 1253"
let SETTINGS_CODEPAGE_1254                           = "Codepage 1254"

let SETTINGS_LOG_FILE_SIZE_1M                        = "1M Byte"
let SETTINGS_LOG_FILE_SIZE_5M                        = "5M Byte"
let SETTINGS_LOG_FILE_SIZE_10M                       = "10M Byte"
let SETTINGS_LOG_FILE_SIZE_50M                       = "50M Byte"

let SETTING_KEY_TABLE = [
    KEY_TYPE_SOCKET_KEEP_TIME,
    KEY_TYPE_WRITE_TIMEOUT,
    KEY_TYPE_RESPONSE_TIMEOUT,
    KEY_TYPE_CODEPAGE,
    KEY_TYPE_INTERNATIONAL_CHARACTER,
    KEY_TYPE_LOG_FILE_SIZE
]
let SECTION_TITLE_TABLE = [
    SETTINGS_GET_VERSIOM_SECTION,
    SETTINGS_SOCKET_KEEP_TIME_SECTION,
    SETTINGS_WRITE_TIMEOUT_SECTION,
    SETTINGS_RESPONSE_TIMEOUT_SECTION,
    SETTINGS_CODEPAGE_SECTION,
    SETTINGS_INTERNATIONAL_CHARACTER_SECTION,
    SETTINGS_LOG_FILE_SIZE_SECTION
]

let CODEPAGE_TABLE = [
    SETTINGS_CODEPAGE_437,
    SETTINGS_CODEPAGE_KATAKANA,
    SETTINGS_CODEPAGE_850,
    SETTINGS_CODEPAGE_860,
    SETTINGS_CODEPAGE_863,
    SETTINGS_CODEPAGE_865,
    SETTINGS_CODEPAGE_857,
    SETTINGS_CODEPAGE_737,
    SETTINGS_CODEPAGE_1252,
    SETTINGS_CODEPAGE_866,
    SETTINGS_CODEPAGE_852,
    SETTINGS_CODEPAGE_858,
    SETTINGS_CODEPAGE_855,
    SETTINGS_CODEPAGE_864,
    SETTINGS_CODEPAGE_1250,
    SETTINGS_CODEPAGE_1251,
    SETTINGS_CODEPAGE_1253,
    SETTINGS_CODEPAGE_1254
]

let INTERNATIONAL_CHARACTER_TABLE = [
    SETTINGS_INTERNATIONAL_CHARACTER_USA,
    SETTINGS_INTERNATIONAL_CHARACTER_FRANCE,
    SETTINGS_INTERNATIONAL_CHARACTER_GERMANY,
    SETTINGS_INTERNATIONAL_CHARACTER_UNITED_KINGDOM,
    SETTINGS_INTERNATIONAL_CHARACTER_DENMARK_1,
    SETTINGS_INTERNATIONAL_CHARACTER_SWEDEN,
    SETTINGS_INTERNATIONAL_CHARACTER_ITALY,
    SETTINGS_INTERNATIONAL_CHARACTER_SPAIN_1,
    SETTINGS_INTERNATIONAL_CHARACTER_JAPAN,
    SETTINGS_INTERNATIONAL_CHARACTER_NORWAY,
    SETTINGS_INTERNATIONAL_CHARACTER_DENMARK_2,
    SETTINGS_INTERNATIONAL_CHARACTER_SPAIN_2,
    SETTINGS_INTERNATIONAL_CHARACTER_LATIN_AMERICA,
    SETTINGS_INTERNATIONAL_CHARACTER_ARABIA
]

let LOG_FILE_SIZE_TABLE = [
    SETTINGS_LOG_FILE_SIZE_1M,
    SETTINGS_LOG_FILE_SIZE_5M,
    SETTINGS_LOG_FILE_SIZE_10M,
    SETTINGS_LOG_FILE_SIZE_50M
]

let PRINTER_INFO_TABLE = [
    KEY_TYPE_NV_MEM_CAP,
    KEY_TYPE_NV_MEM_REM_CAP,
    KEY_TYPE_NV_MEM_KEYCODE_LIST,
    KEY_TYPE_REM_USER_MEM_CAP,
    KEY_TYPE_REM_USER_MEM_CAP_DEFRAG,
    KEY_TYPE_FUNC_SET_RESP,
    KEY_TYPE_PRN_ID_MODEL,
    KEY_TYPE_PRN_ID_TYPE,
    KEY_TYPE_PRN_ID_ROM_VER,
    KEY_TYPE_PRN_ID_FIRM_VER_MAIN,
    KEY_TYPE_PRN_ID_MFR,
    KEY_TYPE_PRN_ID_MODEL_NAME,
    KEY_TYPE_PRN_ID_FIRM_VER_BOOT,
    KEY_TYPE_PRN_ID_FIRM_CHECKSUM_BOOT,
    KEY_TYPE_PRN_ID_FIRM_CHECKSUM_MAIN,
    KEY_TYPE_PRN_ID_FIRM_CHECKSUM,
    KEY_TYPE_MAINT_NUM_FEED_LINE,
    KEY_TYPE_MAINT_NUM_HEAD_ACTIVE,
    KEY_TYPE_MAINT_DRIVE_TIME,
    KEY_TYPE_MAINT_NUM_FEED_LINE_INTEGRATION,
    KEY_TYPE_MAINT_NUM_HEAD_ACTIVE_INTEGRATION,
    KEY_TYPE_MAINT_DRIVE_TIME_INTEGRATION,
    KEY_TYPE_HFONT_24_CHECKSUM,
    KEY_TYPE_HFONT_24_ID,
    KEY_TYPE_HFONT_24_INT_CHAR,
    KEY_TYPE_HFONT_16_CHECKSUM,
    KEY_TYPE_HFONT_16_ID,
    KEY_TYPE_HFONT_16_INT_CHAR,
    KEY_TYPE_FFONT_LANG,
    KEY_TYPE_FFONT_STANDARD,
    KEY_TYPE_FFONT_COMPANY,
    KEY_TYPE_FFONT_CHECKSUM,
    KEY_TYPE_FFONT_DATA_SIZE,
    KEY_TYPE_FFONT_ROM_ID
]

let CALLBACK_STATUS_TABLE = [
    CALLBACK_VOLTAGE_ERROR,
    CALLBACK_HARDWARE_ERROR,
    CALLBACK_HEAD_TEMPERATURE_ERROR,
    CALLBACK_OUT_OF_PAPER_ERROR,
    CALLBACK_PAPER_JAM_ERROR,
    CALLBACK_COVER_OPEN_ERROR,
    CALLBACK_BATTERY_ERROR,
    CALLBACK_FEED_SWTICH_STATE,
    CALLBACK_PAPER_FEED_STATE,
    CALLBACK_RETURN_WAITING_STATE,
    CALLBACK_FLASH_MEMORY_REWRITING,
    CALLBACK_BATTERY_STATE
]

let TEXT_FONT_TABLE = [
    TEXT_FONT_A,
    TEXT_FONT_B
]

let TEXT_SCALE_TABLE = [
    TEXT_SCALE_1,
    TEXT_SCALE_2,
    TEXT_SCALE_3,
    TEXT_SCALE_4,
    TEXT_SCALE_5,
    TEXT_SCALE_6,
    TEXT_SCALE_7,
    TEXT_SCALE_8
]

let TEXT_UNDERLINE_TABLE = [
    TEXT_UNDERLINE_NONE,
    TEXT_UNDERLINE_1DOT,
    TEXT_UNDERLINE_2DOT
]

let TEXT_BOLD_TABLE = [
    TEXT_BOLD_OFF,
    TEXT_BOLD_ON
]

let TEXT_REVERSE_TABLE = [
    TEXT_REVERSE_OFF,
    TEXT_REVERSE_ON
]

let TEXT_ROTATION_TABLE = [
    TEXT_ROTATION_NONE,
    TEXT_ROTATION_90_TO_RIGHT,
    TEXT_ROTATION_180,
    TEXT_ROTATION_90_TO_LEFT
]

let PDF_ROTATION_TABLE = [
    PDF_ROTATION_NONE,
    PDF_ROTATION_180
]

let PDF_DITHERING_TABLE = [
    PDF_DITHERING_DISABLE,
    PDF_DITHERING_ERROR_DIFFUSION
]

let BARCODE_TYPE_TABLE = [
    BARCODE_TYPE_UPC_A,
    BARCODE_TYPE_UPC_E,
    BARCODE_TYPE_JAN13,
    BARCODE_TYPE_JAN8,
    BARCODE_TYPE_CODE39,
    BARCODE_TYPE_ITF,
    BARCODE_TYPE_CODABAR,
    BARCODE_TYPE_CODE128,
    BARCODE_TYPE_CODE93,
    BARCODE_TYPE_JAN13_ADDON2,
    BARCODE_TYPE_JAN13_ADDON5,
    BARCODE_TYPE_GS1_OMNI_DIRECTIONAL,
    BARCODE_TYPE_GS1_TRUNCATED,
    BARCODE_TYPE_GS1_LIMITED,
    BARCODE_TYPE_GS1_EXPANDED
]

let BARCODE_MODULE_WIDTH_TABLE = [
    BARCODE_MODULE_WIDTH_2,
    BARCODE_MODULE_WIDTH_3,
    BARCODE_MODULE_WIDTH_4,
    BARCODE_MODULE_WIDTH_5,
    BARCODE_MODULE_WIDTH_6
]

let BARCODE_HRI_SETTING_TABLE = [
    BARCODE_HRI_SETTING_NONE,
    BARCODE_HRI_SETTING_TOP_FONT_A,
    BARCODE_HRI_SETTING_BOTTOM_FONT_A,
    BARCODE_HRI_SETTING_FONT_A,
    BARCODE_HRI_SETTING_TOP_FONT_B,
    BARCODE_HRI_SETTING_BOTTOM_FONT_B,
    BARCODE_HRI_SETTING_FONT_B
]

let BARCODE_NW_RATIO_TABLE = [
    BARCODE_NW_RATIO_1TO2,
    BARCODE_NW_RATIO_1TO2_5,
    BARCODE_NW_RATIO_1TO3
]

let TWO_DIMENSION_BARCODE_TYPE_TABLE = [
    TWO_DIMENSION_BARCODE_TYPE_QR_CODE,
    TWO_DIMENSION_BARCODE_TYPE_PDF417,
    TWO_DIMENSION_BARCODE_DATA_MATRIX,
    TWO_DIMENSION_BARCODE_MAXI_CODE,
    TWO_DIMENSION_BARCODE_GS1_STACKED,
    TWO_DIMENSION_BARCODE_GS1_OMNI_DIRECTIONAL,
    TWO_DIMENSION_BARCODE_GS1_EXPANDED_STACKED
]

let TWO_DIMENSION_BARCODE_QR_CODE_MODEL_TABLE = [
    TWO_DIMENSION_BARCODE_QR_CODE_MODEL_1,
    TWO_DIMENSION_BARCODE_QR_CODE_MODEL_2
]

let TWO_DIMENSION_BARCODE_PDF417_MODE_TABLE = [
    TWO_DIMENSION_BARCODE_PDF417_MODE_STANDARD,
    TWO_DIMENSION_BARCODE_PDF417_MODE_COMPACT
]

let TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_TABLE = [
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_AUTO,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_10x10,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x12,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_14x14,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x16,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_18x18,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_20x20,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_22x22,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_24x24,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_26x26,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_32x32,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_36x36,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_40x40,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_44x44,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_48x48,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_52x52,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_64x64,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_72x72,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_80x80,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_88x88,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_96x96,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_104x104,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_120x120,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_132x132,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_144x144,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x18,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x32,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x26,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x36,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x36,
    TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x48
]

let TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_TABLE = [
    TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_2,
    TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_3,
    TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_4,
    TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_5
]

let TWO_DIMENSION_BARCODE_MODULE_SIZE_TABLE = [
    TWO_DIMENSION_BARCODE_MODULE_SIZE_DEFAULT,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_2,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_3,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_4,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_5,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_6,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_7,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_8,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_9,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_10,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_11,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_12,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_13,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_14,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_15,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_16
]

let TWO_DIMENSION_BARCODE_PDF417_MODULE_SIZE_TABLE = [
    TWO_DIMENSION_BARCODE_MODULE_SIZE_DEFAULT,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_2,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_3,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_4,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_5,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_6,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_7,
    TWO_DIMENSION_BARCODE_MODULE_SIZE_8,
]

let TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_TABLE = [
    TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_L,
    TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_M,
    TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_Q,
    TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_H
]

let TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_TABLE = [
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_0,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_1,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_2,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_3,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_4,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_5,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_6,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_7,
    TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_8
]

class ValueManager: ObservableObject {
    static func convert2DBarcodeTypeStringToEnum(type: String) -> Type2DCode {
        switch type {
        case TWO_DIMENSION_BARCODE_TYPE_QR_CODE:
            return Type2DCode.SII_MPM_TYPE_2DCODE_QR_CODE
        case TWO_DIMENSION_BARCODE_TYPE_PDF417:
            return Type2DCode.SII_MPM_TYPE_2DCODE_PDF417
        case TWO_DIMENSION_BARCODE_DATA_MATRIX:
            return Type2DCode.SII_MPM_TYPE_2DCODE_DATA_MATRIX
        case TWO_DIMENSION_BARCODE_MAXI_CODE:
            return Type2DCode.SII_MPM_TYPE_2DCODE_MAXI_CODE
        case TWO_DIMENSION_BARCODE_GS1_STACKED:
            return Type2DCode.SII_MPM_TYPE_2DCODE_GS1_STACKED
        case TWO_DIMENSION_BARCODE_GS1_OMNI_DIRECTIONAL:
            return Type2DCode.SII_MPM_TYPE_2DCODE_GS1_OMNI_DIRECTIONAL
        case TWO_DIMENSION_BARCODE_GS1_EXPANDED_STACKED:
            return Type2DCode.SII_MPM_TYPE_2DCODE_GS1_EXPANDED_STACKED
        default:
            return Type2DCode(rawValue: -1)!
        }
    }
    
    static func convert2DBarcodeModeStringToEnum(mode: String) -> Mode2Dcode {
        switch mode {
        case TWO_DIMENSION_BARCODE_QR_CODE_MODEL_1:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_QR_CODE_MODEL1
        case TWO_DIMENSION_BARCODE_QR_CODE_MODEL_2:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_QR_CODE_MODEL2
        case TWO_DIMENSION_BARCODE_PDF417_MODE_STANDARD:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_PDF417_STANDARD
        case TWO_DIMENSION_BARCODE_PDF417_MODE_COMPACT:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_PDF417_COMPACT
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_AUTO:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_AUTO
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_10x10:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_10_10
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x12:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_12_12
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_14x14:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_14_14
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x16:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_16_16
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_18x18:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_18_18
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_20x20:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_20_20
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_22x22:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_22_22
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_24x24:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_24_24
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_26x26:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_26_26
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_32x32:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_32_32
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_36x36:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_36_36
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_40x40:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_40_40
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_44x44:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_44_44
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_48x48:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_48_48
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_52x52:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_52_52
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_64x64:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_64_64
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_72x72:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_72_72
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_80x80:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_80_80
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_88x88:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_88_88
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_96x96:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_96_96
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_104x104:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_104_104
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_120x120:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_120_120
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_132x132:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_132_132
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_144x144:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_144_144
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x18:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_8_18
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_8x32:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_8_32
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x26:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_12_26
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_12x36:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_12_36
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x36:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_16_36
        case TWO_DIMENSION_BARCODE_DATA_MATRIX_MODE_16x48:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_DATA_MATRIX_16_48
        case TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_2:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_MAXI_CODE_2
        case TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_3:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_MAXI_CODE_3
        case TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_4:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_MAXI_CODE_4
        case TWO_DIMENSION_BARCODE_MAXI_CODE_MODE_5:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_MAXI_CODE_5
        case TWO_DIMENSION_BARCODE_MODE_NONE:
            return Mode2Dcode.SII_MPM_MODE_2DCODE_NONE
        default:
            return Mode2Dcode(rawValue: -1)!
        }
    }
    
    static func convert2DBarcodeModuleSizeStringToEnum(moduleSize: String) -> ModuleSize2Dcode {
        switch moduleSize {
        case TWO_DIMENSION_BARCODE_MODULE_SIZE_DEFAULT:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_DEFAULT
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_2:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_2
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_3:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_3
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_4:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_4
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_5:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_5
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_6:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_6
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_7:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_7
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_8:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_8
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_9:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_9
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_10:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_10
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_11:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_11
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_12:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_12
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_13:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_13
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_14:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_14
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_15:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_15
            case TWO_DIMENSION_BARCODE_MODULE_SIZE_16:
                return ModuleSize2Dcode.SII_MPM_MODULE_SIZE_2DCODE_16
        default:
            return ModuleSize2Dcode(rawValue: -1)!
        }
    }
    
    static func convert2DBarcodeErrorCorrectStringToEnum(errorCorrect: String) -> ErrorCorrect2Dcode {
        switch errorCorrect {
        case TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_L:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_QR_CODE_L
            case TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_M:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_QR_CODE_M
            case TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_Q:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_QR_CODE_Q
            case TWO_DIMENSION_BARCODE_QR_ERROR_CORRECT_H:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_QR_CODE_H
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_0:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_0
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_1:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_1
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_2:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_2
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_3:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_3
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_4:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_4
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_5:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_5
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_6:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_6
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_7:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_7
            case TWO_DIMENSION_BARCODE_PDF417_ERROR_CORRECT_8:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_PDF417_8
            case TWO_DIMENSION_BARCODE_ERROR_CORRECT_NONE:
                return ErrorCorrect2Dcode.SII_MPM_ERR_CORRECTION_2DCODE_NONE
        default:
            return ErrorCorrect2Dcode(rawValue: -1)!
        }
    }
    
    static func convertBarcodeTypeStringToEnum(type: String) -> TypeBarcode {
        switch type {
        case BARCODE_TYPE_UPC_A:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_UPC_A
            case BARCODE_TYPE_UPC_E:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_UPC_E
            case BARCODE_TYPE_JAN13:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_JAN13
            case BARCODE_TYPE_JAN8:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_JAN8
            case BARCODE_TYPE_CODE39:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_CODE39
            case BARCODE_TYPE_ITF:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_ITF
            case BARCODE_TYPE_CODABAR:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_CODABAR
            case BARCODE_TYPE_CODE128:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_CODE128
            case BARCODE_TYPE_CODE93:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_CODE93
            case BARCODE_TYPE_JAN13_ADDON2:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_JAN13_ADDON2
            case BARCODE_TYPE_JAN13_ADDON5:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_JAN13_ADDON5
            case BARCODE_TYPE_GS1_OMNI_DIRECTIONAL:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_GS1_OMNI_DIRECTIONAL
            case BARCODE_TYPE_GS1_TRUNCATED:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_GS1_TRUNCATED
            case BARCODE_TYPE_GS1_LIMITED:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_GS1_LIMITED
            case BARCODE_TYPE_GS1_EXPANDED:
                return TypeBarcode.SII_MPM_TYPE_BARCODE_GS1_EXPANDED
        default:
            return TypeBarcode(rawValue: -1)!
        }
    }
    
    static func convertBarcodeModuleWidthStringToEnum(width: String) -> ModuleWidthBarcode {
        switch width {
        case BARCODE_MODULE_WIDTH_2:
            return ModuleWidthBarcode.SII_MPM_MODULE_WIDTH_BARCODE_2
        case BARCODE_MODULE_WIDTH_3:
            return ModuleWidthBarcode.SII_MPM_MODULE_WIDTH_BARCODE_3
        case BARCODE_MODULE_WIDTH_4:
            return ModuleWidthBarcode.SII_MPM_MODULE_WIDTH_BARCODE_4
        case BARCODE_MODULE_WIDTH_5:
            return ModuleWidthBarcode.SII_MPM_MODULE_WIDTH_BARCODE_5
        case BARCODE_MODULE_WIDTH_6:
            return ModuleWidthBarcode.SII_MPM_MODULE_WIDTH_BARCODE_6
        default:
            return ModuleWidthBarcode(rawValue: -1)!
        }
    }

    static func convertBarcodeHriSettingStringToEnum(hri: String) -> HriPositionBarcode {
        switch hri {
        case BARCODE_HRI_SETTING_NONE:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_NONE
        case BARCODE_HRI_SETTING_TOP_FONT_A:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_TOP_FONT_A
        case BARCODE_HRI_SETTING_BOTTOM_FONT_A:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_BOTTOM_FONT_A
        case BARCODE_HRI_SETTING_FONT_A:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_FONT_A
        case BARCODE_HRI_SETTING_TOP_FONT_B:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_TOP_FONT_B
        case BARCODE_HRI_SETTING_BOTTOM_FONT_B:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_BOTTOM_FONT_B
        case BARCODE_HRI_SETTING_FONT_B:
            return HriPositionBarcode.SII_MPM_HRI_BARCODE_FONT_B
        default:
            return HriPositionBarcode(rawValue: -1)!
        }
    }

    static func convertBarcodeNwRatioStringToEnum(nwRatio: String) -> NwRatioBarcode {
        switch nwRatio {
        case BARCODE_NW_RATIO_1TO2:
            return NwRatioBarcode.SII_MPM_NWRATIO_BARCODE_1TO2
        case BARCODE_NW_RATIO_1TO2_5:
            return NwRatioBarcode.SII_MPM_NWRATIO_BARCODE_1TO2_5
        case BARCODE_NW_RATIO_1TO3:
            return NwRatioBarcode.SII_MPM_NWRATIO_BARCODE_1TO3
        default:
            return NwRatioBarcode(rawValue: -1)!
        }
    }

    static func convertFontStringToEnum(font: String) -> CharacterType {
        switch font {
        case TEXT_FONT_A:
            return CharacterType.SII_MPM_CHAR_TYPE_FONT_A
        case TEXT_FONT_B:
            return CharacterType.SII_MPM_CHAR_TYPE_FONT_B
        default:
            return CharacterType(rawValue: -1)!
        }
    }

    static func convertScaleStringToEnum(scale: String) -> CharacterScale {
        switch scale {
        case TEXT_SCALE_1:
            return CharacterScale.SII_MPM_CHAR_SCALE_X1
        case TEXT_SCALE_2:
            return CharacterScale.SII_MPM_CHAR_SCALE_X2
        case TEXT_SCALE_3:
            return CharacterScale.SII_MPM_CHAR_SCALE_X3
        case TEXT_SCALE_4:
            return CharacterScale.SII_MPM_CHAR_SCALE_X4
        case TEXT_SCALE_5:
            return CharacterScale.SII_MPM_CHAR_SCALE_X5
        case TEXT_SCALE_6:
            return CharacterScale.SII_MPM_CHAR_SCALE_X6
        case TEXT_SCALE_7:
            return CharacterScale.SII_MPM_CHAR_SCALE_X7
        case TEXT_SCALE_8:
            return CharacterScale.SII_MPM_CHAR_SCALE_X8
        default:
            return CharacterScale(rawValue: -1)!
        }
    }
    
    static func convertUnderlineStringToEnum(underline: String) -> Underline {
        switch underline {
        case TEXT_UNDERLINE_NONE:
            return Underline.SII_MPM_CHAR_UNDERLINE_NONE
        case TEXT_UNDERLINE_1DOT:
            return Underline.SII_MPM_CHAR_UNDERLINE_1DOT
        case TEXT_UNDERLINE_2DOT:
            return Underline.SII_MPM_CHAR_UNDERLINE_2DOT
        default:
            return Underline(rawValue: -1)!
        }
    }
    
    static func convertBoldStringToEnum(bold: String) -> Bold {
        switch bold {
        case TEXT_BOLD_OFF:
            return Bold.SII_MPM_CHAR_BOLD_OFF
        case TEXT_BOLD_ON:
            return Bold.SII_MPM_CHAR_BOLD_ON
        default:
            return Bold(rawValue: -1)!
        }
    }

    static func convertReverseStringToEnum(reverse: String) -> Reverse {
        switch reverse {
        case TEXT_REVERSE_OFF:
            return Reverse.SII_MPM_CHAR_REVERSE_OFF
        case TEXT_REVERSE_ON:
            return Reverse.SII_MPM_CHAR_REVERSE_ON
        default:
            return Reverse(rawValue: -1)!
        }
    }

    static func convertRotationStringToEnum(rotation: String) -> Rotate {
        switch rotation {
        case TEXT_ROTATION_NONE:
            return Rotate.SII_MPM_ROTATE_NONE
        case TEXT_ROTATION_90_TO_RIGHT:
            return Rotate.SII_MPM_ROTATE_90_TO_RIGHT
        case TEXT_ROTATION_180:
            return Rotate.SII_MPM_ROTATE_180
        case TEXT_ROTATION_90_TO_LEFT:
            return Rotate.SII_MPM_ROTATE_90_TO_LEFT
        default:
            return Rotate(rawValue: -1)!
        }
    }
    
}

struct ValueTable: Identifiable {
    var id = UUID()
    var title: String = ""
    var valueTable: [String] = []
    
    init(title: String, valueTable: [String]) {
        self.title = title
        self.valueTable = valueTable
    }
}
