fix(hal): simplify Puloon error handling to match lamassu-machine

Align dispenser error handling with lamassu-machine's proven approach:
close port on error, set error name, let caller decide when to re-init.
Also configure live ISO for Douro/GTQ with serialport native modules.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-02-22 21:22:34 -05:00
commit 94a9f03e2e
2 changed files with 45 additions and 17 deletions

View file

@ -47,23 +47,15 @@ export class PuloonDispenser implements BillDispenser {
}
async dispense(notes: number[]): Promise<{ value: DispenseResult[]; error?: Error }> {
try {
const { bills, error } = await this.device.dispense(notes)
const { bills, error } = await this.device.dispense(notes)
if (error) {
this.close()
;(error as Error & { name: string; statusCode: number }).name = 'PuloonDispenseError'
;(error as Error & { statusCode: number }).statusCode = 570
}
return { value: bills, error }
} catch (err) {
if (error) {
this.close()
const error = err as Error
;(error as Error & { name: string; statusCode: number }).name = 'PuloonDispenseError'
;(error as Error & { statusCode: number }).statusCode = 570
return { value: [], error }
error.name = 'PuloonDispenseError'
console.log('PULOON | dispense error', error)
}
return { value: bills, error }
}
close(): void {