This commit is contained in:
Joel Wetzell
2026-07-13 14:09:21 -05:00
parent 4bb1e87e03
commit 466228fb4a
62 changed files with 2157 additions and 1851 deletions
+9 -6
View File
@@ -3,14 +3,17 @@ const { Decoder } = require('../dist/cjs');
const decoder = new Decoder();
const infoPacketBuffer = new Uint8Array([
0x56, 0x67, 0x34, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x01,
0x01, 0x01, 0x00, 0x0b, 0x00, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x02, 0x00, 0x11,
0x80, 0x01, 0x00, 0x0d, 0x80, 0x00, 0x00, 0x09, 0x00, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x31,
0x56, 0x67, 0x34, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x0b, 0x00, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x02, 0x00, 0x11, 0x80,
0x01, 0x00, 0x0d, 0x80, 0x00, 0x00, 0x09, 0x00, 0x54, 0x72, 0x61, 0x63, 0x6b,
0x65, 0x72, 0x20, 0x31,
]);
const dataPacketBuffer = new Uint8Array([
0x55, 0x67, 0x28, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x01,
0x01, 0x01, 0x00, 0x14, 0x80, 0x01, 0x00, 0x10, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00,
0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f,
0x55, 0x67, 0x28, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x14, 0x80, 0x01, 0x00,
0x10, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80,
0x3f, 0x00, 0x00, 0x80, 0x3f,
]);
decoder.decode(infoPacketBuffer);
+4 -4
View File
@@ -16,11 +16,11 @@ const dataPackets = encoder.getDataPackets(timestamp, trackers);
const infoPackets = encoder.getInfoPackets(timestamp, trackers);
dataPackets.forEach((dataPacket) => {
console.log('send packet somehow');
console.log(dataPacket);
console.log('send packet somehow');
console.log(dataPacket);
});
infoPackets.forEach((infoPacket) => {
console.log('send packet somehow');
console.log(infoPacket);
console.log('send packet somehow');
console.log(infoPacket);
});
+43 -33
View File
@@ -6,51 +6,61 @@ const client = dgram.createSocket('udp4');
const decoder = new Decoder();
client.on('listening', () => {
client.addMembership('236.10.10.10');
client.addMembership('236.10.10.10');
});
client.on('message', (buffer) => {
decoder.decode(buffer);
decoder.decode(buffer);
});
client.bind(56565, '0.0.0.0');
setInterval(() => {
if (decoder.system_name) {
console.log(`System Name: ${decoder.system_name}`);
}
if (Object.keys(decoder.trackers).length > 0) {
console.log(`Tracker Count: ${Object.keys(decoder.trackers).length}`);
}
if (decoder.system_name) {
console.log(`System Name: ${decoder.system_name}`);
}
if (Object.keys(decoder.trackers).length > 0) {
console.log(`Tracker Count: ${Object.keys(decoder.trackers).length}`);
}
Object.entries(decoder.trackers).forEach(([trackerId, tracker]) => {
const trackerName = decoder.trackers[trackerId]?.name;
console.log(`Tracker - id: ${trackerId} | name: ${trackerName || ''}`);
if (tracker.pos) {
console.log(`\tpos: ${tracker.pos.x}, ${tracker.pos.x}, ${tracker.pos.x}`);
}
Object.entries(decoder.trackers).forEach(([trackerId, tracker]) => {
const trackerName = decoder.trackers[trackerId]?.name;
console.log(`Tracker - id: ${trackerId} | name: ${trackerName || ''}`);
if (tracker.pos) {
console.log(
`\tpos: ${tracker.pos.x}, ${tracker.pos.x}, ${tracker.pos.x}`
);
}
if (tracker.speed) {
console.log(`\tspeed: ${tracker.speed.x}, ${tracker.speed.y}, ${tracker.speed.z}`);
}
if (tracker.speed) {
console.log(
`\tspeed: ${tracker.speed.x}, ${tracker.speed.y}, ${tracker.speed.z}`
);
}
if (tracker.ori) {
console.log(`\tori: ${tracker.ori.x}, ${tracker.ori.y}, ${tracker.ori.z}`);
}
if (tracker.ori) {
console.log(
`\tori: ${tracker.ori.x}, ${tracker.ori.y}, ${tracker.ori.z}`
);
}
if (tracker.status) {
console.log(`\tstatus: ${tracker.status.validity}`);
}
if (tracker.status) {
console.log(`\tstatus: ${tracker.status.validity}`);
}
if (tracker.accel) {
console.log(`\taccel: ${tracker.accel.x}, ${tracker.accel.y}, ${tracker.accel.z}`);
}
if (tracker.accel) {
console.log(
`\taccel: ${tracker.accel.x}, ${tracker.accel.y}, ${tracker.accel.z}`
);
}
if (tracker.trgtpos) {
console.log(`\ttrgtpos: ${tracker.trgtpos.x}, ${tracker.trgtpos.y}, ${tracker.trgtpos.z}`);
}
if (tracker.trgtpos) {
console.log(
`\ttrgtpos: ${tracker.trgtpos.x}, ${tracker.trgtpos.y}, ${tracker.trgtpos.z}`
);
}
if (tracker.timestamp) {
console.log(`\ttimestamp: ${tracker.timestamp}`);
}
});
if (tracker.timestamp) {
console.log(`\ttimestamp: ${tracker.timestamp}`);
}
});
}, 1000);
+28 -26
View File
@@ -19,38 +19,40 @@ trackers.push(new Tracker(8, 'Neptune'));
trackers.push(new Tracker(9, 'Pluto'));
const orbits = [1.0, 88.0, 224.7, 365.2, 687, 4332, 10760, 30700, 60200, 90600];
const distFromSun = [0, 0.58, 1.08, 1.5, 2.28, 7.78, 14.29, 28.71, 45.04, 59.13];
const distFromSun = [
0, 0.58, 1.08, 1.5, 2.28, 7.78, 14.29, 28.71, 45.04, 59.13,
];
let timestamp = 0;
setInterval(() => {
orbits.forEach((orbit, index) => {
const a = 1.0 / orbits[index];
const b = distFromSun[index];
const x = timestamp;
const cb = Math.cos(a * x) * b;
const sb = Math.sin(a * x) * b;
orbits.forEach((orbit, index) => {
const a = 1.0 / orbits[index];
const b = distFromSun[index];
const x = timestamp;
const cb = Math.cos(a * x) * b;
const sb = Math.sin(a * x) * b;
trackers[index].setPos(sb, 0, cb);
trackers[index].setSpeed(a * cb, 0, -a * sb);
trackers[index].setOri(0, x / 1000.0, 0);
trackers[index].setAccel(-a * a * sb, 0, -a * a * cb);
trackers[index].setTrgtPos(3, 14, 16);
trackers[index].setStatus(index / 10.0);
trackers[index].setTimestamp(timestamp);
});
trackers[index].setPos(sb, 0, cb);
trackers[index].setSpeed(a * cb, 0, -a * sb);
trackers[index].setOri(0, x / 1000.0, 0);
trackers[index].setAccel(-a * a * sb, 0, -a * a * cb);
trackers[index].setTrgtPos(3, 14, 16);
trackers[index].setStatus(index / 10.0);
trackers[index].setTimestamp(timestamp);
});
console.log(`Sending Data Packets`);
const dataPackets = encoder.getDataPackets(timestamp, trackers);
dataPackets.forEach((packet) => {
client.send(packet, 56565, '236.10.10.10');
});
timestamp += 1;
console.log(`Sending Data Packets`);
const dataPackets = encoder.getDataPackets(timestamp, trackers);
dataPackets.forEach((packet) => {
client.send(packet, 56565, '236.10.10.10');
});
timestamp += 1;
}, 5);
setInterval(() => {
console.log(`Sending Info Packets`);
const infoPackets = encoder.getInfoPackets(timestamp, trackers);
infoPackets.forEach((packet) => {
client.send(packet, 56565, '236.10.10.10');
});
console.log(`Sending Info Packets`);
const infoPackets = encoder.getInfoPackets(timestamp, trackers);
infoPackets.forEach((packet) => {
client.send(packet, 56565, '236.10.10.10');
});
}, 500);