mirror of
https://github.com/meshcore-dev/meshcore.js.git
synced 2026-04-20 22:13:49 +00:00
parse extra packet types
This commit is contained in:
parent
1d88787c92
commit
26888c8fcf
4 changed files with 81 additions and 6 deletions
|
|
@ -1,4 +1,3 @@
|
||||||
import {ed25519} from "@noble/curves/ed25519";
|
|
||||||
import BufferReader from "./buffer_reader.js";
|
import BufferReader from "./buffer_reader.js";
|
||||||
import BufferWriter from "./buffer_writer.js";
|
import BufferWriter from "./buffer_writer.js";
|
||||||
|
|
||||||
|
|
@ -41,14 +40,16 @@ class Advert {
|
||||||
|
|
||||||
getTypeString() {
|
getTypeString() {
|
||||||
const flags = this.getFlags();
|
const flags = this.getFlags();
|
||||||
if(flags & Advert.ADV_TYPE_NONE) return "ADV_TYPE_NONE";
|
if(flags & Advert.ADV_TYPE_NONE) return "NONE";
|
||||||
if(flags & Advert.ADV_TYPE_CHAT) return "ADV_TYPE_CHAT";
|
if(flags & Advert.ADV_TYPE_CHAT) return "CHAT";
|
||||||
if(flags & Advert.ADV_TYPE_REPEATER) return "ADV_TYPE_REPEATER";
|
if(flags & Advert.ADV_TYPE_REPEATER) return "REPEATER";
|
||||||
if(flags & Advert.ADV_TYPE_ROOM) return "ADV_TYPE_ROOM";
|
if(flags & Advert.ADV_TYPE_ROOM) return "ROOM";
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
isVerified() {
|
async isVerified() {
|
||||||
|
|
||||||
|
const ed25519 = await import("@noble/curves/ed25519");
|
||||||
|
|
||||||
// build signed data
|
// build signed data
|
||||||
const bufferWriter = new BufferWriter();
|
const bufferWriter = new BufferWriter();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
class BufferUtils {
|
class BufferUtils {
|
||||||
|
|
||||||
|
static bytesToHex(uint8Array) {
|
||||||
|
return Array.from(uint8Array).map(byte => {
|
||||||
|
return byte.toString(16).padStart(2, '0');
|
||||||
|
}).join('');
|
||||||
|
}
|
||||||
|
|
||||||
static areBuffersEqual(byteArray1, byteArray2) {
|
static areBuffersEqual(byteArray1, byteArray2) {
|
||||||
|
|
||||||
// ensure length is the same
|
// ensure length is the same
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@ import BleConnection from "./connection/ble_connection.js";
|
||||||
import SerialConnection from "./connection/serial_connection.js";
|
import SerialConnection from "./connection/serial_connection.js";
|
||||||
import TCPConnection from "./connection/tcp_connection.js";
|
import TCPConnection from "./connection/tcp_connection.js";
|
||||||
import Constants from "./constants.js";
|
import Constants from "./constants.js";
|
||||||
|
import Advert from "./advert.js";
|
||||||
import Packet from "./packet.js";
|
import Packet from "./packet.js";
|
||||||
|
import BufferUtils from "./buffer_utils.js";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Connection,
|
Connection,
|
||||||
|
|
@ -11,5 +13,7 @@ export {
|
||||||
SerialConnection,
|
SerialConnection,
|
||||||
TCPConnection,
|
TCPConnection,
|
||||||
Constants,
|
Constants,
|
||||||
|
Advert,
|
||||||
Packet,
|
Packet,
|
||||||
|
BufferUtils,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -105,12 +105,31 @@ class Packet {
|
||||||
|
|
||||||
parsePayload() {
|
parsePayload() {
|
||||||
switch(this.getPayloadType()){
|
switch(this.getPayloadType()){
|
||||||
|
case Packet.PAYLOAD_TYPE_PATH: return this.parsePayloadTypePath();
|
||||||
case Packet.PAYLOAD_TYPE_REQ: return this.parsePayloadTypeReq();
|
case Packet.PAYLOAD_TYPE_REQ: return this.parsePayloadTypeReq();
|
||||||
|
case Packet.PAYLOAD_TYPE_RESPONSE: return this.parsePayloadTypeResponse();
|
||||||
|
case Packet.PAYLOAD_TYPE_TXT_MSG: return this.parsePayloadTypeTxtMsg();
|
||||||
case Packet.PAYLOAD_TYPE_ACK: return this.parsePayloadTypeAck();
|
case Packet.PAYLOAD_TYPE_ACK: return this.parsePayloadTypeAck();
|
||||||
|
case Packet.PAYLOAD_TYPE_ANON_REQ: return this.parsePayloadTypeAnonReq();
|
||||||
default: return null;
|
default: return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parsePayloadTypePath() {
|
||||||
|
|
||||||
|
// parse bytes
|
||||||
|
const bufferReader = new BufferReader(this.payload);
|
||||||
|
const dest = bufferReader.readByte();
|
||||||
|
const src = bufferReader.readByte();
|
||||||
|
// todo other fields
|
||||||
|
|
||||||
|
return {
|
||||||
|
src: src,
|
||||||
|
dest: dest,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
parsePayloadTypeReq() {
|
parsePayloadTypeReq() {
|
||||||
|
|
||||||
// parse bytes
|
// parse bytes
|
||||||
|
|
@ -127,12 +146,57 @@ class Packet {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parsePayloadTypeResponse() {
|
||||||
|
|
||||||
|
// parse bytes
|
||||||
|
const bufferReader = new BufferReader(this.payload);
|
||||||
|
const dest = bufferReader.readByte();
|
||||||
|
const src = bufferReader.readByte();
|
||||||
|
// todo other fields
|
||||||
|
|
||||||
|
return {
|
||||||
|
src: src,
|
||||||
|
dest: dest,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
parsePayloadTypeTxtMsg() {
|
||||||
|
|
||||||
|
// parse bytes
|
||||||
|
const bufferReader = new BufferReader(this.payload);
|
||||||
|
const dest = bufferReader.readByte();
|
||||||
|
const src = bufferReader.readByte();
|
||||||
|
// todo other fields
|
||||||
|
|
||||||
|
return {
|
||||||
|
src: src,
|
||||||
|
dest: dest,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
parsePayloadTypeAck() {
|
parsePayloadTypeAck() {
|
||||||
return {
|
return {
|
||||||
ack_code: this.payload,
|
ack_code: this.payload,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parsePayloadTypeAnonReq() {
|
||||||
|
|
||||||
|
// parse bytes
|
||||||
|
const bufferReader = new BufferReader(this.payload);
|
||||||
|
const dest = bufferReader.readByte();
|
||||||
|
const srcPublicKey = bufferReader.readBytes(32);
|
||||||
|
// todo other fields
|
||||||
|
|
||||||
|
return {
|
||||||
|
src: srcPublicKey,
|
||||||
|
dest: dest,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Packet;
|
export default Packet;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue