Implement AimeDB registration cmd

This commit is contained in:
Tau 2018-11-26 20:54:54 -05:00
parent 2e8d6997ee
commit 80897a49b7
2 changed files with 24 additions and 2 deletions

View File

@ -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}`))
}

View File

@ -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')