| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- "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;
|