master
Henry Jameson 2 years ago
parent daedc49e6b
commit 723837353b
  1. 51
      index.js
  2. 40
      statuslogger.js

@ -3,7 +3,7 @@ import fetch from 'node-fetch'
import fs from 'fs' import fs from 'fs'
import { Feedback } from './statuslogger.js' import { Feedback } from './statuslogger.js'
const CARDS_LOCATION = '/home/snufkin/Repos/apps/YACards/' const CARDS_LOCATION = '/home/dietpi/YACards/'
const logger = Feedback() const logger = Feedback()
logger.initLCD() logger.initLCD()
@ -25,27 +25,33 @@ nfc.on('error', err => {
logger.error('[PCSC]:', err); logger.error('[PCSC]:', err);
}); });
nfc.on('reader', reader => { nfc.on('reader', reader => {
logger.info(reader)
reader.on('card', card => { reader.on('card', card => {
logger.info(`[PCSC] Card ${card.uid} scanned`) logger.info(`[PCSC] Card ${card.uid} scanned`)
logger.lcd3('Card:' + card.uid.slice(0, 20 - 5)) logger.lcd3('Card:' + card.uid.slice(0, 20 - 5))
if (status.card === null && !status.guestPlay) { if (status.card === null && !status.guestPlay) {
status.card = card.uid
status.confirmed = false
status.countdown = 5
status.newCard = !fs.existsSync(CARDS_LOCATION + card.uid + '.track_0')
logger.info(`[YACE] Telling YACE to insert ${card.uid}`)
if (status.newCard) { if (status.newCard) {
logger.info(`[EABU] New card!`) if (status.readyCard) {
logger.lcd2(' New card! ') status.card = card.uid
status.newCardRegistration = true status.confirmed = false
status.countdown = 600 // seconds status.countdown = 5
fetch('http://localhost:8082/api/v1/loadedCard?cardname=' + card.uid, { method: 'POST' }) status.newCard = !fs.existsSync(CARDS_LOCATION + card.uid + '.track_0')
logger.info(`[YACE] Telling YACE to insert ${card.uid}`)
logger.info(`[EABU] New card!`)
logger.lcd2(' New card! ')
status.newCardRegistration = true
status.countdown = 600 // seconds
fetch('http://127.0.0.1:8082/api/v1/loadedCard?cardname=' + card.uid, { method: 'POST' })
} else {
logger.lcd2('Scan card only when ')
logger.lcd3('game asks for it !! ')
}
} else { } else {
logger.info(`[EABU] Existing card!`) logger.info(`[EABU] Existing card!`)
logger.lcd2(' Welcome back! ') logger.lcd2(' Welcome back! ')
if (status.readyCard) { if (status.readyCard) {
logger.info(`[EABU] Inserting...`) logger.info(`[EABU] Inserting...`)
fetch('http://localhost:8082/api/v1/insertedCard?cardname=' + card.uid, { method: 'POST' }) fetch('http://127.0.0.1:8082/api/v1/insertedCard?cardname=' + card.uid, { method: 'POST' })
} else { } else {
logger.info(`[EABU] Not inserting as game isn't ready for it...`) logger.info(`[EABU] Not inserting as game isn't ready for it...`)
logger.lcd2('Scan card only when ') logger.lcd2('Scan card only when ')
@ -69,7 +75,7 @@ nfc.on('reader', reader => {
const pollYACE = () => { const pollYACE = () => {
if (status.card !== null) { if (status.card !== null) {
fetch('http://localhost:8082/api/v1/hasCard') fetch('http://127.0.0.1:8082/api/v1/hasCard')
.then(res => res.json()) .then(res => res.json())
.then(bool => { .then(bool => {
if (status.countdown > 0) { if (status.countdown > 0) {
@ -86,7 +92,7 @@ const pollYACE = () => {
logger.lcd1('FAILED??????????????') logger.lcd1('FAILED??????????????')
logger.error('[YACE] Could not confirm card presence with emulator!') logger.error('[YACE] Could not confirm card presence with emulator!')
logger.error('[YACE] Telling YACE to load dummy just in case') logger.error('[YACE] Telling YACE to load dummy just in case')
fetch('http://localhost:8082/api/v1/loadedCard?cardname=dummy', { method: 'POST' }) fetch('http://127.0.0.1:8082/api/v1/loadedCard?cardname=dummy', { method: 'POST' })
setTimeout(pollYACE, 1000) setTimeout(pollYACE, 1000)
} else { } else {
// insertion confirmed! waiting for ejection // insertion confirmed! waiting for ejection
@ -100,7 +106,7 @@ const pollYACE = () => {
status.newCard = false status.newCard = false
status.renewPossible = false status.renewPossible = false
logger.info('[YACE] Telling YACE to load dummy') logger.info('[YACE] Telling YACE to load dummy')
fetch('http://localhost:8082/api/v1/loadedCard?cardname=dummy', { method: 'POST' }) fetch('http://127.0.0.1:8082/api/v1/loadedCard?cardname=dummy', { method: 'POST' })
} else { } else {
logger.lcd1(' Card renewed! ') logger.lcd1(' Card renewed! ')
status.newCard = false status.newCard = false
@ -114,7 +120,7 @@ const pollYACE = () => {
setTimeout(pollYACE, 2000) setTimeout(pollYACE, 2000)
}) })
} else { } else {
fetch('http://localhost:8082/api/v1/hasCard') fetch('http://127.0.0.1:8082/api/v1/hasCard')
.then(res => res.json()) .then(res => res.json())
.then(bool => { .then(bool => {
if (status.guestPlay) { if (status.guestPlay) {
@ -131,27 +137,32 @@ const pollYACE = () => {
setTimeout(pollYACE, 200) setTimeout(pollYACE, 200)
}) })
.catch(err => { .catch(err => {
logger.error('[EABU] Failure polling YACE') logger.error('[EABU] Failure polling YACE', err)
setTimeout(pollYACE, 2000) setTimeout(pollYACE, 2000)
}) })
} }
} }
const pollYACE2 = () => { const pollYACE2 = () => {
fetch('http://localhost:8082/api/v1/readyCard') fetch('http://127.0.0.1:8082/api/v1/readyCard')
.then(res => res.json()) .then(res => res.json())
.then(bool => { .then(bool => {
status.readyCard = bool status.readyCard = bool
if (status.readyCard) { if (status.readyCard) {
logger.lcd0('Wangan Maxi3DX+ ')
logger.lcd1('!SCAN YOUR CARD NOW!') logger.lcd1('!SCAN YOUR CARD NOW!')
} else { } else {
logger.lcd0('Wangan Maxi3DX+ ')
logger.lcd1('Waiting for game... ') logger.lcd1('Waiting for game... ')
} }
setTimeout(pollYACE2, 500) setTimeout(pollYACE2, 500)
}) })
.catch(err => { .catch(err => {
logger.error('[EABU] Failure polling YACE (loop2)') logger.error('[EABU] Failure polling YACE (loop2)', err)
setTimeout(pollYACE2, 2000)})} setTimeout(pollYACE2, 2000)
logger.lcd0('/!\ Emulator offline')
})
}
pollYACE() pollYACE()
pollYACE2() pollYACE2()

@ -14,40 +14,44 @@ export const Feedback = () => {
spinner: spinner[0] spinner: spinner[0]
} }
return { return {
warn(string) { warn(...string) {
console.warn(wrn('[!]') + ' ' + string) console.warn(wrn('[!]') + ' ' + string.join(' '))
}, },
info(string) { info(...string) {
console.info(inf('[ ]') + ' ' + string) console.info(inf('[ ]') + ' ' + string.join(' '))
}, },
error(string) { error(...string) {
console.error(err('[!]') + ' ' + string) console.error(err('[!]') + ' ' + string.join(' '))
}, },
lcd0(string) { lcd0(string) {
lcd.printLineSync(0, string) if (!status.hasLCD) return
status.lcd.printLineSync(0, string)
}, },
lcd1(string) { lcd1(string) {
lcd.printLineSync(1, string) if (!status.hasLCD) return
status.lcd.printLineSync(1, string)
}, },
lcd2(string) { lcd2(string) {
lcd.printLineSync(2, string) if (!status.hasLCD) return
status.lcd.printLineSync(2, string)
}, },
lcd3(string) { lcd3(string) {
lcd.printLineSync(3, string) if (!status.hasLCD) return
status.lcd.printLineSync(3, string)
}, },
initLCD() { initLCD() {
this.info('Initializing LCD...') this.info('Initializing LCD...')
let lcd = new LCD( 1, 0x27, 16, 2 ); status.lcd = new LCD( 1, 0x27, 20, 4 );
return lcd return status.lcd
.begin() .begin()
.then(() => { .then(() => {
status.hasLCD = tru status.hasLCD = true
this.info('LCD Initialized!') this.info('LCD Initialized!')
lcd.clearSync() status.lcd.clearSync()
lcd.printLineSync(0, 'Wangan Midnight ') status.lcd.printLineSync(0, 'Wangan Midnight ')
lcd.printLineSync(1, ' Maximum Tune 3DX+') status.lcd.printLineSync(1, ' Maximum Tune 3DX+')
lcd.printLineSync(2, ' IC card support ') status.lcd.printLineSync(2, ' IC card support ')
lcd.printLineSync(3, ' by HJ (and GXTX)') status.lcd.printLineSync(3, ' by HJ (and GXTX)')
}) })
.catch((e) => { .catch((e) => {
status.hasLCD = false status.hasLCD = false

Loading…
Cancel
Save