marklife / node/src / MarklifeDiscovery
Class: MarklifeDiscovery
PrinterDiscovery implementation for marklife printers.
Every chassis speaks Bluetooth; the P12 and P15 also expose a USB Printer-class interface, and none speaks TCP. The discovery surface is therefore:
- Classic-BT SPP (the bulk of the catalogue) —
openBluetoothSppaccepts an OS-paired RFCOMM device path (/dev/rfcomm0,/dev/tty.<Name>-SPPDev,COMx) plus adeviceKey. The user pairs at the OS level;SerialTransport.openopens the path. - BLE GATT — deferred. Node BLE (
noble) is rough; for v1,openBluetoothGattthrows. Browser hosts use the web package'srequestPrinterBluetoothfactory.
listPrinters() returns an empty list because none of the supported transports are auto-enumerable to a specific marklife model from Node — Classic-BT pairing is OS-managed and BLE is deferred.
Implements
Constructors
Constructor
new MarklifeDiscovery():
MarklifeDiscovery
Returns
MarklifeDiscovery
Properties
family
readonlyfamily:"marklife"='marklife'
Driver family identifier — matches DeviceEntry.family.
Implementation of
PrinterDiscovery.family
Methods
listPrinters()
listPrinters():
Promise<DiscoveredPrinter[]>
Returns an empty list — no auto-enumeration in v1.
Classic-BT SPP printers don't surface a model identifier on their RFCOMM channel, so we can't bind a registry entry without a user-provided deviceKey. BLE enumeration is deferred until a Node BLE backend is wired in.
Returns
Promise<DiscoveredPrinter[]>
Implementation of
PrinterDiscovery.listPrinters
openBluetoothGatt()
openBluetoothGatt(
_options):Promise<MarklifePrinter>
Open a BLE printer.
Deferred in v1 — Node BLE backends (noble) are rough and the BLE Profile A / B / C dispatch layer is non-trivial. Browser hosts use @thermal-label/marklife-web's requestPrinterBluetooth(modelKey) factory, which surfaces the Web Bluetooth picker with the right service UUID.
Parameters
_options
deviceKey
Returns
Promise<MarklifePrinter>
Throws
always.
openBluetoothSpp()
openBluetoothSpp(
options):Promise<MarklifePrinter>
Open a Bluetooth-SPP printer by OS-paired RFCOMM path.
On Linux: /dev/rfcomm0 (after rfcomm bind or rfcomm connect). On macOS: /dev/tty.<Name>-SPPDev (after Bluetooth pairing). On Windows: COMx (after pairing in the Bluetooth settings). The deviceKey is required because RFCOMM carries no protocol-binding information.
Parameters
options
baudRate?
number
deviceKey
serialPath
string
Returns
Promise<MarklifePrinter>
openPrinter()
openPrinter(
options?):Promise<MarklifePrinter>
Open a printer.
serialPath+deviceKey→ opens an OS-paired Bluetooth-SPP port viaSerialTransport.host→ throws (no TCP transport in this catalogue).vid+pid→ throws (no USB transport).
Use openBluetoothSpp / openBluetoothGatt directly for the marklife-specific surface.
Parameters
options?
OpenOptions = {}
Returns
Promise<MarklifePrinter>
Implementation of
PrinterDiscovery.openPrinter