You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
2.5 KiB
JavaScript
129 lines
2.5 KiB
JavaScript
2 years ago
|
"use strict";
|
||
|
|
||
|
const { B } = require("../unit-bytes-iec");
|
||
|
|
||
|
const thirdFourthByteMask = parseInt("11111111111111110000000000000000", 2);
|
||
|
const secondByteMask = parseInt("00000000000000001111111100000000", 2);
|
||
|
const firstByteMask = parseInt("00000000000000000000000011111111", 2);
|
||
|
|
||
2 years ago
|
module.exports = {
|
||
2 years ago
|
vid: "vendorID",
|
||
|
ssvi: "subsystemVendorID",
|
||
|
sn: { name: "serialNumber", transform: (string) => string.trim() },
|
||
|
mn: { name: "modelNumber", transform: (string) => string.trim() },
|
||
|
fr: "firmwareRevision",
|
||
|
rab: { name: "recommendedArbitrationBurst", transform: (value) => 2 ** value }, // FIXME: Is this correct?
|
||
|
ieee: "ouiIdentifier",
|
||
|
cmic: { name: "cmicCapabilities", transform: (bitField) => {
|
||
|
return {
|
||
|
anar: bitField & 8,
|
||
|
virtualFunction: bitField & 4,
|
||
|
multipleControllers: bitField & 2,
|
||
|
multipleSubsystemPorts: bitField & 1
|
||
|
};
|
||
|
}},
|
||
|
mdts: { name: "maximumDataTransferSize", transform: (value) => {
|
||
|
if (value === 0) {
|
||
|
return null;
|
||
|
} else {
|
||
|
// Note: counted in multiples of the minimum memory page size
|
||
|
// TODO: Can we grab this from somewhere and return the value in bytes instead?
|
||
|
return 2 ** value;
|
||
|
}
|
||
|
}},
|
||
|
cntlid: "controllerID",
|
||
|
ver: { name: "protocolVersion", transform: (value) => {
|
||
|
return {
|
||
|
major: value & thirdFourthByteMask,
|
||
|
minor: value & secondByteMask,
|
||
|
tertiary: value & firstByteMask
|
||
|
};
|
||
|
}},
|
||
|
// MARKER
|
||
|
rtd3r: { name: "rtd3ResumeLatency", transform: (value) => {
|
||
|
if (value === 0) {
|
||
|
return null;
|
||
|
} else {
|
||
|
// TODO: Unit?
|
||
|
return value;
|
||
|
}
|
||
|
}},
|
||
|
rtd3e: { name: "rtd3EntryLatency", transform: (value) => {
|
||
|
if (value === 0) {
|
||
|
return null;
|
||
|
} else {
|
||
|
// TODO: Unit?
|
||
|
return value;
|
||
|
}
|
||
|
}},
|
||
|
// TODO:
|
||
|
// oaes,
|
||
|
// ctratt,
|
||
|
// rrls,
|
||
|
// crdt1,
|
||
|
// crdt2,
|
||
|
// crdt3,
|
||
|
// nvmsr,
|
||
|
// vwci,
|
||
|
// mec,
|
||
|
// oacs,
|
||
|
// acl,
|
||
|
// aerl,
|
||
|
// frmw,
|
||
|
// lpa,
|
||
|
// elpe,
|
||
|
// npss,
|
||
|
// avscc,
|
||
|
// apsta,
|
||
|
// wctemp,
|
||
|
// cctemp,
|
||
|
// mtfa,
|
||
|
// hmpre,
|
||
|
// hmmin,
|
||
2 years ago
|
tnvmcap: { name: "totalSpace", transform: (value) => B(value) },
|
||
|
unvmcap: { name: "freeSpace", transform: (value) => B(value) },
|
||
2 years ago
|
// TOOD:
|
||
|
// rpmbs,
|
||
|
// edstt,
|
||
|
// dsto,
|
||
|
// fwug,
|
||
|
// kas,
|
||
|
// hctma,
|
||
|
// mntmt,
|
||
|
// mxtmt,
|
||
|
// sanicap,
|
||
|
// hmminds,
|
||
|
// hmmaxd,
|
||
|
// nsetidmax,
|
||
|
// anatt,
|
||
|
// anacap,
|
||
|
// anagrpmax,
|
||
|
// nanagrpid,
|
||
|
// domainid,
|
||
|
// megcap,
|
||
|
// sqes,
|
||
|
// cqes,
|
||
|
// maxcmd,
|
||
|
// nn,
|
||
|
// oncs,
|
||
|
// fuses,
|
||
|
// fna,
|
||
|
// vwc,
|
||
|
// awun,
|
||
|
// awupf,
|
||
|
// icsvscc,
|
||
|
// nwpc,
|
||
|
// acwu,
|
||
|
// ocfs,
|
||
|
// sgls,
|
||
|
// maxdna,
|
||
|
// maxcna,
|
||
|
// ioccsz,
|
||
|
// iorcsz,
|
||
|
// icdoff,
|
||
|
// fcatt,
|
||
|
// msdbd,
|
||
|
// ofcs,
|
||
|
// psds
|
||
|
};
|