From 285167b255722f52abeb0b10b4b8a5f983983ae2 Mon Sep 17 00:00:00 2001 From: Tau Date: Mon, 26 Nov 2018 21:14:59 -0500 Subject: [PATCH] Implement aimedb log message --- src/aimedb/cmd.js | 44 ++++++++++++++++++++++++++++++++++++++------ src/aimedb/index.js | 6 ++++++ 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/aimedb/cmd.js b/src/aimedb/cmd.js index 1a18b2b..af07f0b 100644 --- a/src/aimedb/cmd.js +++ b/src/aimedb/cmd.js @@ -9,17 +9,36 @@ class Decoder extends Transform { }) } - static ident(payload) { - const gameId = payload.toString('ascii', 0x000A, 0x000E) - const keychipId = payload.toString('ascii', 0x0014, 0x001F) + static ident(chunk) { + const gameId = chunk.toString('ascii', 0x000A, 0x000E) + const keychipId = chunk.toString('ascii', 0x0014, 0x001F) return { gameId, keychipId } } - static cardId(payload) { - const luid = payload.slice(0x0020, 0x002A) + static cardId(chunk) { + const luid = chunk.slice(0x0020, 0x002A) - return { luid, ...Decoder.ident(payload) } + return { luid, ...Decoder.ident(chunk) } + } + + static log(chunk) { + // idk what any of this stuff means yet + // field20 and field28 appear to be an aime id but that is all. + + const field20 = chunk.readUInt32LE(0x20) + const field24 = chunk.readUInt32LE(0x24) + const field28 = chunk.readUInt32LE(0x28) + const field2C = chunk.readUInt32LE(0x2C) + const field30 = chunk.readUInt32LE(0x30) + const field34 = chunk.readUInt32LE(0x34) + const field38 = chunk.readUInt32LE(0x38) + const field3C = chunk.readUInt32LE(0x3C) + + return { + field20, field24, field28, field2C, field30, field34, field38, field3C, + ...Decoder.ident(chunk) + } } _transform(chunk, encoding, callback) { @@ -32,6 +51,12 @@ class Decoder extends Transform { ...Decoder.cardId(chunk), }) + case 0x0009: + return callback(null, { + cmd: 'log', + ...Decoder.log(chunk), + }) + case 0x000B: return callback(null, { cmd: 'campaign', @@ -127,6 +152,13 @@ class Encoder extends Transform { break + case 'log': + buf = Encoder.init(0x0020) + buf.writeUInt16LE(0x000A, 0x0004) // cmd code + buf.writeUInt16LE(chunk.status, 0x0008) + + break + default: return callback(new Error(`Unimplemented response: ${cmd}`)) } diff --git a/src/aimedb/index.js b/src/aimedb/index.js index 5c61d75..381c13e 100644 --- a/src/aimedb/index.js +++ b/src/aimedb/index.js @@ -38,6 +38,12 @@ async function aimedb(socket) { break + case 'log': + console.log('Aimedb: Log message') + output.write({ cmd, status: 1 }) + + break + case 'goodbye': console.log('Aimedb: Goodbye')