Initial commit
This commit is contained in:
44
node_modules/@serialport/parser-spacepacket/dist/utils.js
generated
vendored
Normal file
44
node_modules/@serialport/parser-spacepacket/dist/utils.js
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.convertHeaderBufferToObj = exports.HEADER_LENGTH = void 0;
|
||||
exports.HEADER_LENGTH = 6;
|
||||
/**
|
||||
* For numbers less than 255, will ensure that their string representation is at least 8 characters long.
|
||||
*/
|
||||
const toOctetStr = (num) => {
|
||||
let str = Number(num).toString(2);
|
||||
while (str.length < 8) {
|
||||
str = `0${str}`;
|
||||
}
|
||||
return str;
|
||||
};
|
||||
/**
|
||||
* Converts a Buffer of any length to an Object representation of a Space Packet header, provided
|
||||
* the received data is in the correct format.
|
||||
* @param buf - The buffer containing the Space Packet Header Data
|
||||
*/
|
||||
const convertHeaderBufferToObj = (buf) => {
|
||||
const headerStr = Array.from(buf.slice(0, exports.HEADER_LENGTH)).reduce((accum, curr) => `${accum}${toOctetStr(curr)}`, '');
|
||||
const isVersion1 = headerStr.slice(0, 3) === '000';
|
||||
const versionNumber = isVersion1 ? 1 : 'UNKNOWN_VERSION';
|
||||
const type = Number(headerStr[3]);
|
||||
const secondaryHeader = Number(headerStr[4]);
|
||||
const apid = parseInt(headerStr.slice(5, 16), 2);
|
||||
const sequenceFlags = parseInt(headerStr.slice(16, 18), 2);
|
||||
const packetName = parseInt(headerStr.slice(18, 32), 2);
|
||||
const dataLength = parseInt(headerStr.slice(-16), 2) + 1;
|
||||
return {
|
||||
versionNumber,
|
||||
identification: {
|
||||
apid,
|
||||
secondaryHeader,
|
||||
type,
|
||||
},
|
||||
sequenceControl: {
|
||||
packetName,
|
||||
sequenceFlags,
|
||||
},
|
||||
dataLength,
|
||||
};
|
||||
};
|
||||
exports.convertHeaderBufferToObj = convertHeaderBufferToObj;
|
||||
Reference in New Issue
Block a user