From 80897a49b7464d55b09ea3392e80d14edfa6d045 Mon Sep 17 00:00:00 2001 From: Tau Date: Mon, 26 Nov 2018 20:54:54 -0500 Subject: [PATCH] Implement AimeDB registration cmd --- src/aimedb/cmd.js | 18 ++++++++++++++++-- src/aimedb/index.js | 8 ++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/aimedb/cmd.js b/src/aimedb/cmd.js index 9d78abf..1a18b2b 100644 --- a/src/aimedb/cmd.js +++ b/src/aimedb/cmd.js @@ -16,7 +16,7 @@ class Decoder extends Transform { return { gameId, keychipId } } - static lookup(payload) { + static cardId(payload) { const luid = payload.slice(0x0020, 0x002A) return { luid, ...Decoder.ident(payload) } @@ -26,6 +26,12 @@ class Decoder extends Transform { const cmd = chunk.readUInt16LE(0x04) switch (cmd) { + case 0x0005: + return callback(null, { + cmd: 'register', + ...Decoder.cardId(chunk), + }) + case 0x000B: return callback(null, { cmd: 'campaign', @@ -35,7 +41,7 @@ class Decoder extends Transform { case 0x000F: return callback(null, { cmd: 'lookup', - ...Decoder.lookup(chunk), + ...Decoder.cardId(chunk), }) case 0x0064: @@ -113,6 +119,14 @@ class Encoder extends Transform { break + case 'register': + buf = Encoder.init(0x0030) + buf.writeUInt16LE(0x0006, 0x0004) // cmd code + buf.writeUInt16LE(chunk.status, 0x0008) + buf.writeInt32LE(chunk.aimeId, 0x0020) + + break + default: return callback(new Error(`Unimplemented response: ${cmd}`)) } diff --git a/src/aimedb/index.js b/src/aimedb/index.js index 0007fc3..5c61d75 100644 --- a/src/aimedb/index.js +++ b/src/aimedb/index.js @@ -30,6 +30,14 @@ async function aimedb(socket) { break + case 'register': + // We get sent here if lookup does not return an aimeId + + console.log('Aimedb: Mifare register', req.luid) + output.write({ cmd, status: 1, aimeId: 12345678 }) + + break + case 'goodbye': console.log('Aimedb: Goodbye')