1234567891011121314151617181920212223242526272829 |
- var Utils = require('./utils')
- var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)
- var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)
- var G15_BCH = Utils.getBCHDigit(G15)
- /**
- * Returns format information with relative error correction bits
- *
- * The format information is a 15-bit sequence containing 5 data bits,
- * with 10 error correction bits calculated using the (15, 5) BCH code.
- *
- * @param {Number} errorCorrectionLevel Error correction level
- * @param {Number} mask Mask pattern
- * @return {Number} Encoded format information bits
- */
- exports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {
- var data = ((errorCorrectionLevel.bit << 3) | mask)
- var d = data << 10
- while (Utils.getBCHDigit(d) - G15_BCH >= 0) {
- d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))
- }
- // xor final data with mask pattern in order to ensure that
- // no combination of Error Correction Level and data mask pattern
- // will result in an all-zero data string
- return ((data << 10) | d) ^ G15_MASK
- }
|