memory(), chassis() optimized for raspberry

This commit is contained in:
Sebastian Hildebrandt 2025-01-09 15:53:28 +01:00
parent 0be9e22f4c
commit daa8419057

View File

@ -885,214 +885,213 @@ function decodePiCpuinfo(lines) {
} else if (lines === null) {
lines = _rpi_cpuinfo;
}
}
// https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md
// https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md
const oldRevisionCodes = {
'0002': {
type: 'B',
revision: '1.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0003': {
type: 'B',
revision: '1.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0004': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0005': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Qisda',
processor: 'BCM2835'
},
'0006': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0007': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0008': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0009': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Qisda',
processor: 'BCM2835'
},
'000d': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'000e': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'000f': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0010': {
type: 'B+',
revision: '1.2',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0011': {
type: 'CM1',
revision: '1.0',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0012': {
type: 'A+',
revision: '1.1',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0013': {
type: 'B+',
revision: '1.2',
memory: 512,
manufacturer: 'Embest',
processor: 'BCM2835'
},
'0014': {
type: 'CM1',
revision: '1.0',
memory: 512,
manufacturer: 'Embest',
processor: 'BCM2835'
},
'0015': {
type: 'A+',
revision: '1.1',
memory: 256,
manufacturer: '512MB Embest',
processor: 'BCM2835'
const oldRevisionCodes = {
'0002': {
type: 'B',
revision: '1.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0003': {
type: 'B',
revision: '1.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0004': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0005': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Qisda',
processor: 'BCM2835'
},
'0006': {
type: 'B',
revision: '2.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0007': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0008': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0009': {
type: 'A',
revision: '2.0',
memory: 256,
manufacturer: 'Qisda',
processor: 'BCM2835'
},
'000d': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'000e': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'000f': {
type: 'B',
revision: '2.0',
memory: 512,
manufacturer: 'Egoman',
processor: 'BCM2835'
},
'0010': {
type: 'B+',
revision: '1.2',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0011': {
type: 'CM1',
revision: '1.0',
memory: 512,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0012': {
type: 'A+',
revision: '1.1',
memory: 256,
manufacturer: 'Sony UK',
processor: 'BCM2835'
},
'0013': {
type: 'B+',
revision: '1.2',
memory: 512,
manufacturer: 'Embest',
processor: 'BCM2835'
},
'0014': {
type: 'CM1',
revision: '1.0',
memory: 512,
manufacturer: 'Embest',
processor: 'BCM2835'
},
'0015': {
type: 'A+',
revision: '1.1',
memory: 256,
manufacturer: '512MB Embest',
processor: 'BCM2835'
}
};
const processorList = [
'BCM2835',
'BCM2836',
'BCM2837',
'BCM2711',
'BCM2712',
];
const manufacturerList = [
'Sony UK',
'Egoman',
'Embest',
'Sony Japan',
'Embest',
'Stadium'
];
const typeList = {
'00': 'A',
'01': 'B',
'02': 'A+',
'03': 'B+',
'04': '2B',
'05': 'Alpha (early prototype)',
'06': 'CM1',
'08': '3B',
'09': 'Zero',
'0a': 'CM3',
'0c': 'Zero W',
'0d': '3B+',
'0e': '3A+',
'0f': 'Internal use only',
'10': 'CM3+',
'11': '4B',
'12': 'Zero 2 W',
'13': '400',
'14': 'CM4',
'15': 'CM4S',
'16': 'Internal use only',
'17': '5',
'18': 'CM5',
'19': '500',
'1a': 'CM5 Lite',
};
const revisionCode = getValue(lines, 'revision', ':', true);
const model = getValue(lines, 'model:', ':', true);
const serial = getValue(lines, 'serial', ':', true);
let result = {};
if ({}.hasOwnProperty.call(oldRevisionCodes, revisionCode)) {
// old revision codes
result = {
model,
serial,
revisionCode,
memory: oldRevisionCodes[revisionCode].memory,
manufacturer: oldRevisionCodes[revisionCode].manufacturer,
processor: oldRevisionCodes[revisionCode].processor,
type: oldRevisionCodes[revisionCode].type,
revision: oldRevisionCodes[revisionCode].revision,
};
} else {
// new revision code
const revision = ('00000000' + getValue(lines, 'revision', ':', true).toLowerCase()).substr(-8);
const memSizeCode = parseInt(hex2bin(revision.substr(2, 1)).substr(5, 3), 2) || 0;
const manufacturer = manufacturerList[parseInt(revision.substr(3, 1), 10)];
const processor = processorList[parseInt(revision.substr(4, 1), 10)];
const typeCode = revision.substr(5, 2);
result = {
model,
serial,
revisionCode,
memory: 256 * Math.pow(2, memSizeCode),
manufacturer,
processor,
type: {}.hasOwnProperty.call(typeList, typeCode) ? typeList[typeCode] : '',
revision: '1.' + revision.substr(7, 1),
};
}
};
const processorList = [
'BCM2835',
'BCM2836',
'BCM2837',
'BCM2711',
'BCM2712',
];
const manufacturerList = [
'Sony UK',
'Egoman',
'Embest',
'Sony Japan',
'Embest',
'Stadium'
];
const typeList = {
'00': 'A',
'01': 'B',
'02': 'A+',
'03': 'B+',
'04': '2B',
'05': 'Alpha (early prototype)',
'06': 'CM1',
'08': '3B',
'09': 'Zero',
'0a': 'CM3',
'0c': 'Zero W',
'0d': '3B+',
'0e': '3A+',
'0f': 'Internal use only',
'10': 'CM3+',
'11': '4B',
'12': 'Zero 2 W',
'13': '400',
'14': 'CM4',
'15': 'CM4S',
'16': 'Internal use only',
'17': '5',
'18': 'CM5',
'19': '500',
'1a': 'CM5 Lite',
};
const revisionCode = getValue(lines, 'revision', ':', true);
const model = getValue(lines, 'model:', ':', true);
const serial = getValue(lines, 'serial', ':', true);
let result = {};
if ({}.hasOwnProperty.call(oldRevisionCodes, revisionCode)) {
// old revision codes
result = {
model,
serial,
revisionCode,
memory: oldRevisionCodes[revisionCode].memory,
manufacturer: oldRevisionCodes[revisionCode].manufacturer,
processor: oldRevisionCodes[revisionCode].processor,
type: oldRevisionCodes[revisionCode].type,
revision: oldRevisionCodes[revisionCode].revision,
};
} else {
// new revision code
const revision = ('00000000' + getValue(lines, 'revision', ':', true).toLowerCase()).substr(-8);
const memSizeCode = parseInt(hex2bin(revision.substr(2, 1)).substr(5, 3), 2) || 0;
const manufacturer = manufacturerList[parseInt(revision.substr(3, 1), 10)];
const processor = processorList[parseInt(revision.substr(4, 1), 10)];
const typeCode = revision.substr(5, 2);
result = {
model,
serial,
revisionCode,
memory: 256 * Math.pow(2, memSizeCode),
manufacturer,
processor,
type: {}.hasOwnProperty.call(typeList, typeCode) ? typeList[typeCode] : '',
revision: '1.' + revision.substr(7, 1),
};
}
return result;
return result;
}
function getRpiGpu() {