/**
* @file CipherLab specific APIs for use with Airlock Browser.
* @version 2.3.5
* @copyright Outcoder Sàrl 2022. All Rights Reserved.
*/
/**
* Airlock Browser's root namespace.
* @namespace
* @see <a href="../../Airlock/airlock.html">airlock</a>
*/
airlock = airlock || {};
/**
* Contains device SDK specific APIs.
* @namespace
*/
airlock.sdks = airlock.sdks || {};
/**
* The root namespace for CipherLab specific APIs.
* @namespace
*/
airlock.sdks.cipherLab = airlock.sdks.cipherLab || {};
/**
* @typedef airlock.sdks.cipherLab.CipherLabDeviceConfiguration
* @property {number} ledDuration=0 Valid values are [0, 5000].
* @property {number} readerBeep=0 Valid values are 0 (Default), 1 (Mute), 2 (Alarm2), 3 (Alarm3), 4 (Hwandsw), 5 (LowBattery), 6 (MenuPopup), 7 (MessageBox), 8 (Notify), 9 (VoiceBeep).
* @property {boolean} clearPreviousData=false
* @property {boolean} showCodeType=false
* @property {boolean} showCodeLen=false
* @property {number} szCharsetName=0 Valid values are 0 (utf8), 1 (windows1250), 2 (windows1251), 3 (windows1252), 4 (windows1253), 5 (windows1254), 6 (windows1255), 7 (windows1256), 8 (windows1257), 9 (windows1258), 10 (big5), 11 (shift_JIS), 12 (gbk).
* @property {string} szPrefixCode
* @property {string} szSuffixCode
* @property {string} useDelim
* @property {number} addonSecurityLevel=10 Valid values are [2, 30].
* @property {number} laserOnTime=3000 Valid values are [500, 9900].
* @property {boolean} decodingAimingPattern=true
* A value that specifies whether to project the aiming pattern on every barcode capture.
* @property {boolean} decodingIllumination=true
* @property {boolean} displayMode=false
* @property {number} decodingIlluminationPowerLevel=10 Valid values are [0, 10].
* @property {number} interCharGapSize=6
* A value that specifies the intercharacter gap size for Code 39 and Codabar,
* which is typically quite small. Due to various barcode printing technologies,
* this gap can grow larger than the maximum size allowed and prevent the scan engine
* from decoding a barcode. If this problem occurs, set it to "Large Intercharacter Gaps"
* to tolerate these out-of-specification barcodes.
* Valid values are 6 (Normal), 10 (Large).
* @property {number} negativeBarcodes=0 Valid values are 0 (RegularOnly), 1 (InverseOnly), 2 (AutoDetect).
* @property {boolean} pickListMode=false
* @property {number} timeoutPresentationMode=900000
* A value that specifies the minimum time interval between reading two identical barcodes.
* This helps prevent the scanner from accidentally reading the same barcode twice.
* This parameter applies to Continuous and Presentation modes.
* Valid values are [60000, 1800000].
* @property {number} redundancyLevel=1
* A value that specifies decode redundancy. Higher redundancy levels
* should be selected for deteriorated barcode quality.
* Valid values are 1 (Level1), 2 (Level2), 3 (Level3), 4 (Level4).
* @property {number} scanAngle=0 Valid values are 0 (Wide), 1 (Narrow).
* @property {number} securityLevel=0 Valid values are [0, 3].
* @property {number} timeoutBetweenSameSymbology=1000
* A value that specifies the minimum time interval in milliseconds
* between reading two identical barcodes. This helps prevent the scanner
* from accidentally reading the same barcode twice. This parameter applies
* to Continuous and Presentation modes.
* 0 ~ 9900 *1000 (millisecond) 0 ~ 2550 *300 (millisecond) for the EX25 scan engine only
* Valid values are [0, 9900].
* @property {number} aimerMode=0 Valid values are 0 (Typical), 1 (OnePullAimAndRead), 2 (OnePullAimSecondPullRead).
* @property {boolean} centerDecoding=true
* @property {number} centerDecodingTolerance=0 Valid values are [0, 100].
* @property {number} transmitCodeIdChar=0 Valid values are 0 (None), 1 (AimCodeId).
* @property {number} triggerMode=0 Valid values are 0 (LevelMode), 1 (ContinuousMode), 2 (PresentationMode), 3 (AutoAimMode).
* @property {boolean} triggerPresentationMode=false
* @property {boolean} notifyBarcodeReadSuccessful=true
* @property {boolean} notifyBarcodeReadFailed=false
* @property {boolean} barcodeVibrate=true
* @property {number} barcodeSuccessVibrateMS=true Valid values are [1, 1500].
*/
/**
* CipherLab Barcode Decoders
* @namespace
*/
airlock.sdks.cipherLab.decoders = airlock.sdks.cipherLab.decoders || {};
/**
* @typedef airlock.sdks.cipherLab.decoders.AustralianPostal
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Aztec
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Chinese2Of5
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Codabar
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {boolean} clsiEditing=false
* A value specifying whether to edit CLSI.
* @property {number} notisEditingType=0
* A value specifying whether to transform it to NOTIS editing format (Start/Stop characters)
* and the way it is transformed.
* Valid values are 0 (None), 1 (ABCDUpper), 2 (AbcdLower).
* @property {boolean} notisEditing=true
* Reserved.
* @property {boolean} transmitCheckDigit=true
* A value specifying whether to transmit check digit.
* @property {number} verifyCheckDigit=0
* A value specifying whether and how to verify check digit. *None Modulo_16 Modulo_7DR Modulo_Both
* Note: For Modulo_7DR, the total number of digits in a codabar cannot be greater than '19';
* and the first digit in a codabar must be equal to or less than '8'.
* Valid values are 0 (None), 1 (Modulo16), 2 (Modulo7DR), 3 (ModuloBoth).
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Code11
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} numberOfCheckDigits=0
* A value specifying whether and how to verify check digit.
* Valid values are 0 (None), 1 (One), 2 (Two).
* @property {boolean} transmitCheckDigit=false
* A value specifying whether to transmit check digit.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Code128
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} securityLevel=0
* A value that specifies the decode security level while reading Code128.
* Valid values are [0, 55].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Code39
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {boolean} convertToCode32=false
* A value that specifies whether to convert Code 39 to Code 32 (= Italian Pharmacode).
* @property {boolean} convertToCode32Prefix=false
* A value that specifies whether to transmit prefix for Code 32 data.
* @property {boolean} fullASCII=false
* A value that specifies whether to support Code 39 Full ASCII.
* @property {boolean} checkDigitVerification=false
* A value that specifies whether to verify check digit.
* @property {boolean} transmitCheckDigit=false
* A value that specifies whether to transmit check digit.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Code93
* @property {number} length1=4 Valid values are [0, 55].
* @property {number} length2=55 Valid values are [0, 55].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Composite
* @property {boolean} enableCc_C=true
* @property {boolean} enableCc_AB=false
* @property {boolean} enableTlc39=false
* @property {number} enableUpcMode=1 Valid values are 0 (UpcNeverLinked), 1 (UpcAlwaysLinked), 2 (AutoDiscriminate).
* @property {boolean} enableEmulationMode=false
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.UccCoupon
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.DataMatrix
* @property {string} fieldSeparator
* A value that specifies whether to apply a field separator of ASCII ranging from 0 to 127.
* It's set to zero by default.
* @property {number} mirrorImage=0
* A value that specifies whether to decode mirror image Data Matrix barcodes.
* Valid values are 0 (Never), 1 (Always), 2 (Auto).
* @property {string} applicationIdentifierMark1
* @property {string} applicationIdentifierMark2
* @property {boolean} enableApplicationIdentifier=false
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.DutchPostal
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Ean13
* @property {number} addon2=1
* A value that specifies the way processing addon2.
* Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} addon5=1
* A value that specifies the way processing addon5.
* Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} booklandISBNFormat=0
* If you enabled Bookland EAN, select one of the following formats for Bookland data.
* Valid values are 0 (Isbn10), 1 (Isbn13).
* @property {boolean} convertToISBN=false
* A value that specifies whether to convert EAN-13 to ISBN.
* @property {boolean} convertToISSN=false
* A value that specifies whether to convert EAN-13 to ISSN.
* @property {boolean} transmitCheckDigit=true
* A value that specifies whether to transmit check digit.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Ean8
* @property {number} addon2=1
* A value that specifies the way processing addon2.
* Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} addon5=1
* A value that specifies the way processing addon5.
* Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {boolean} convertToEan13=false
* A value that specifies whether to convert EAN-8 to EAN-13.
* @property {boolean} transmitCheckDigit=true
* A value that specifies whether to transmit check digit.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Industrial2Of5
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.JapanPostal
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.UKPostal
* @property {boolean} transmitCheckDigit=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Upce1
* @property {number} addon2=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} addon5=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {boolean} convertToUpcA=false
* @property {number} transmitSystemNumber=1 Valid values are 0 (None), 1 (SystemCharacter), 2 (SystemCharacterAndCtyCode).
* @property {boolean} transmitCheckDigit=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.GS1128
* @property {string} applicationIdentifierMark1
* @property {string} applicationIdentifierMark2
* @property {boolean} enableApplicationIdentifier=false
* A value that specifies whether to enable the application identifier.
* @property {string} fieldSeparator
* A value that specifies whether to apply a field separator of ASCII ranging from 0 to 127.
* It's set to zero by default.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.GS1DataBar14
* @property {boolean} convertToUpcEan=false
* A value that specifies whether to convert RSS to UPC/EAN barcodes.
* @property {number} securityLevel=1
* A value that specifies the decode security level while reading GS1 DataBar 14. *1 (0 ~ 3)
* Valid values are [0, 3].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.GS1DataBarExpanded
* @property {number} securityLevel=1
* A value that specifies the decode security level while reading GS1 DataBar Expanded. *1 (0 ~ 3)
* Valid values are [0, 3].
* @property {string} fieldSeparator
* A value that specifies whether to apply a field separator of ASCII ranging from 0 to 127.
* It's set to zero by default.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.GS1DataBarLimited
* @property {boolean} convertToUpcEan=false
* A value that specifies whether to convert RSS to UPC/EAN barcodes.
* @property {number} securityLevel=3
* A value that specifies the decode security level while reading GS1 DataBar Limited. *3 (1 ~ 4)
* Valid values are [1, 4].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Interleaved2Of5
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} checkDigitVerification=0
* A value that specifies whether and how to verify check digit.
* Valid values are 0 (Disable), 1 (Uss), 2 (Opcc).
* @property {boolean} convertToEan13=false
* A value that specifies whether to convert Interleaved 25 to EAN-13.
* @property {boolean} transmitCheckDigit=false
* A value that specifies whether to transmit check digit.
* It is available only when I20f5CheckDigitVerification is not disabled.
* @property {number} securityLevel=1
* A value that specifies the decode security level while reading.
* Valid values are [0, 3].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Isbt128
* @property {number} concatenation=2
* A value that specifies whether to decode and concatenate pairs of ISBT barcodes.
* Valid values are 0 (Disable), 1 (Enable), 2 (Auto).
* @property {number} concatenationRedundancy=10
* A value that specifies concatenation redundancy (2~20 times) when auto-discriminate
* of ISBT concatenation is enabled. By default, it is set to 10 times.
* Valid values are [2, 20].
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Korean3Of5
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Matrix2Of5
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {boolean} checkDigitVerification=false
* @property {boolean} transmitCheckDigit=false
* @property {boolean} redundancy=false
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.MaxiCode
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.MicroPdf417
* @property {boolean} code128Emulation=true
* A value that specifies whether to enable Code 128 Emulation for certain MicroPDF417 barcodes.
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.MicroQR
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Msi
* @property {number} length1=4
* Length qualification *4 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *55 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} checkDigitAlgorithm=1 Valid values are 1 (Modulo1011), 2 (DoubleModulo10).
* @property {number} checkDigitOption=1 Valid values are 1 (OneDigit), 2 (TwoDigits).
* @property {boolean} transmitCheckDigit=false
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Pdf417
* @property {number} transmitMode=0
* A value that specifies how to handle decoding.
* Valid values are 0 (PassThroughAllSymbols), 1 (BufferAllSymbols), 2 (TransmitAnySymbolInSet).
* @property {boolean} escapeCharacter=true
* A value that specifies whether to use the escape character.
* @property {boolean} transmitControlHeader=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Plessey
* @property {number} length1=4
* Length qualification *0 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *0 (0 ~ 55)
* Valid values are [0, 55].
* @property {boolean} transmitCheckDigit=true
* A value that specifies whether to transmit check digit.
* @property {boolean} unconventionalStop=true
* A value that specifies whether to enable Plessey unconventional stop.
* When this function is enabled, Plessey bar codes can be decoded
* with a stop which is a variation of a standard one (bars are narrower or wider).
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.QRCode
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Telepen
* @property {number} length1=4
* Length qualification *0 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} length2=55
* Length qualification *0 (0 ~ 55)
* Valid values are [0, 55].
* @property {number} format=0
* A value that sets output format. "0" represents ASCII, while "1" represents Numeric.
* Valid values are 0 (Ascii), 1 (Numeric).
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.TriopticCode39
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Upca
* @property {number} addon2=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} addon5=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {boolean} convertToEan13=false
* @property {number} transmitSystemNumber=1 Valid values are 0 (None), 1 (SystemCharacter), 2 (SystemCharacterAndCtyCode).
* @property {boolean} transmitCheckDigit=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.Upce0
* @property {number} addon2=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {number} addon5=1 Valid values are 1 (IgnoresAddon), 2 (AutoDiscriminate).
* @property {boolean} convertToUpcA=false
* @property {number} transmitSystemNumber=1 Valid values are 0 (None), 1 (SystemCharacter), 2 (SystemCharacterAndCtyCode).
* @property {boolean} transmitCheckDigit=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.UpuFicsPostal
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.USPostal
* @property {boolean} enablePlanet=true
* @property {boolean} enablePostnet=true
* @property {boolean} transmitCheckDigit=true
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/
/**
* @typedef airlock.sdks.cipherLab.decoders.UspsPostal
* @property {boolean} enabled=true
* Gets or sets a value indicating if the decoder is used to interpret barcodes.
*/