parse packet types

This commit is contained in:
liamcottle 2025-03-09 17:15:12 +13:00
parent bc11e6a7fe
commit 5d94ba88ee
3 changed files with 104 additions and 11 deletions

View file

@ -1,4 +1,5 @@
import BufferReader from "./buffer_reader.js";
import Advert from "./advert.js";
class Packet {
@ -103,6 +104,48 @@ class Packet {
return this.header === 0xFF;
}
parsePayload() {
switch(this.getPayloadType()){
case Packet.PAYLOAD_TYPE_REQ: return this.parsePayloadTypeReq();
case Packet.PAYLOAD_TYPE_ACK: return this.parsePayloadTypeAck();
case Packet.PAYLOAD_TYPE_ADVERT: return this.parsePayloadTypeAdvert();
default: return null;
}
}
parsePayloadTypeReq() {
// parse bytes
const bufferReader = new BufferReader(this.payload);
const dest = bufferReader.readByte();
const src = bufferReader.readByte();
const encrypted = bufferReader.readRemainingBytes();
// convert to hex
const destHex = dest.toString(16);
const srcHex = src.toString(16);
const encryptedHex = Buffer.from(encrypted).toString("hex");
return {
src: srcHex,
dest: destHex,
encrypted: encryptedHex,
};
}
parsePayloadTypeAck() {
return {
ack_code: Buffer.from(this.payload).toString("hex"),
};
}
parsePayloadTypeAdvert() {
return {
advert: Advert.fromBytes(this.payload),
};
}
}
export default Packet;