* Split core lib into multiple files * Refactor data encoding methods * Refactor data masking process * Improve qr code generation process * Increase minimum required node version to 0.10 * Add linter * Add tests and tests coverage * Update travis config to fix compilation issues * Add examples folder * Add missing license tag in package.json * Update build script and add sourcemap support * Publish only strictly needed files on npm * Update readme
29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
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 << 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
|
|
}
|