Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save sobiodarlington/1de944e84e5cd272d032b5434a333523 to your computer and use it in GitHub Desktop.

Select an option

Save sobiodarlington/1de944e84e5cd272d032b5434a333523 to your computer and use it in GitHub Desktop.
let accessBits = {
byte6: {
idx: {
C23: 0, C22: 1, C21: 2, C20: 3, C13: 4, C12: 5, C11: 6, C10: 7
},
bits: [],
},
byte7: {
idx: {
C13: 0, C12: 1, C11: 2, C10: 3, C33: 4, C32: 5, C31: 6, C30: 7
},
bits: [],
},
byte8: {
idx: {
C33: 0, C32: 1, C31: 2, C30: 3, C23: 4, C22: 5, C21: 6, C20: 7
},
bits: [],
},
};
let trailerBlockAc = {
accessBitsHeader: ['C1', 'C2', 'C3'],
byteGroup: ['KEYA', 'Access bits', 'KEYB', 'Remark'],
condHeader: ['read', 'write'],
'000': ['never', 'key A', 'key A', 'never', 'key A', 'key A', 'Key B may be read'],
'010': ['never', 'never', 'key A', 'never', 'key A', 'never', 'Key B may be read',],
'100': ['never', 'key B', 'key A|B', 'never', 'never', 'key B',],
'110': ['never', 'never', 'key A| B', 'never', 'never', 'never',],
'001': ['never', 'key A', 'key A', 'key A', 'key A', 'key A', 'Key B may be read, transport configuration'],
'011': ['never', 'key B', 'key A|B', 'key B', 'never', 'key B'],
'101': ['never', 'never', 'key A|B', 'key B', 'never', 'never'],
'111': ['never', 'never', 'key A|B', 'never', 'never', 'never']
};
let dataBlockAc = {
headers: ['Access bits', 'Access condition for', 'Application'],
condHeader: ['read', 'write', 'increment', 'decrement, transfer, restore'],
data: {
'000': ['key A|B', 'key A|B', 'key A|B', 'key A|B', 'transport configuratio'],
'010': ['key A | B', 'never', 'never', 'never', 'read/write block'],
'100': ['key A| B', 'key B', 'never', 'never', 'read/write block'],
'110': ['key A| B', 'key B', 'key B', 'key A| B', 'value block'],
'001': ['key A | B', 'never', 'never', 'key A | B', 'value block'],
'011': ['key B', 'key B', 'never', 'never', 'read/write block'],
'101': ['key B', 'never', 'never', 'never', 'read/write block'],
'111': ['never', 'never', 'never', 'never', 'read/write block']
}
}
let defaultAccessBin = hex2bin('FF0780');
function setCurrentAccessBitsState(binStr) {
let binStrLen = binStr.length - 1;
accessBits.byte6.bits = binStr.substr(0, 8).split('');
accessBits.byte7.bits = binStr.substr(8, 8).split('');
accessBits.byte8.bits = binStr.substr(15, 8).split('');
}
function hex2bin(hex) {
return (parseInt(hex, 16).toString(2)).padStart(8, '0');
}
function bin2Hex(bin) {
return (parseInt(bin, 2).toString(16)).padStart(6, '0');;
}
function setBlockAccessBits(sectorBlock, acBitStr) {
let acBits = acBitStr.split('');
let C1 = acBits[0];
let C2 = acBits[1];
let C3 = acBits[2];
accessBits.byte6.bits[accessBits.byte6.idx[`C2${sectorBlock}`]] = invertBit(C2);
accessBits.byte6.bits[accessBits.byte6.idx[`C1${sectorBlock}`]] = invertBit(C1);
accessBits.byte7.bits[accessBits.byte7.idx[`C1${sectorBlock}`]] = C1;
accessBits.byte7.bits[accessBits.byte7.idx[`C3${sectorBlock}`]] = invertBit(C3);
accessBits.byte8.bits[accessBits.byte8.idx[`C3${sectorBlock}`]] = C3;
accessBits.byte8.bits[accessBits.byte8.idx[`C2${sectorBlock}`]] = C2;
}
function invertBit(bit) {
return bit ^ 1;
}
function getAccessBitsInHex() {
let byte6 = accessBits.byte6.bits.join('');
let byte7 = accessBits.byte7.bits.join('');
let byte8 = accessBits.byte8.bits.join('');
//console.log(`${byte6}-${byte7}-${byte8}`);
return bin2Hex(`${byte6}${byte7}${byte8}`).toUpperCase();
}
function log(str) {
console.log(str);
}
// setCurrentAccessBitsState(defaultAccessBin);
setBlockAccessBits(0, '110');
setBlockAccessBits(1, '110');
setBlockAccessBits(2, '110');
setBlockAccessBits(3, '011');
console.log(getAccessBitsInHex()); // 08778F
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment