Merge pull request #14 from jhbruhn/fix/detect-pairing-issues

fix: Detect unpaired Bluetooth devices during connection
This commit is contained in:
Jan-Henrik Bruhn 2025-12-15 13:48:00 +01:00 committed by GitHub
commit 957241dcca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -131,12 +131,18 @@ export class BrotherPP1Service {
console.log("Connected to Brother PP1 machine"); console.log("Connected to Brother PP1 machine");
console.log("Send dummy command"); // Validate connection by sending a test command
// If the device is not paired, it won't respond properly
console.log("Validating connection with test command...");
try { try {
await this.getMachineInfo(); await this.getMachineState();
console.log("Dummy command success"); console.log("Connection validation successful - device is properly paired");
} catch (e) { } catch (e) {
console.log(e); console.log("Connection validation failed:", e);
// Disconnect to clean up
if (this.server) {
this.server.disconnect();
}
throw e; throw e;
} }
} finally { } finally {
@ -280,6 +286,23 @@ export class BrotherPP1Service {
.map((b) => b.toString(16).padStart(2, "0")) .map((b) => b.toString(16).padStart(2, "0"))
.join(" "); .join(" ");
// Detect pairing issues during initial connection - empty or invalid response
if (this.isInitialConnection) {
if (response.length === 0) {
console.log('[BrotherPP1] Empty response received - device likely not paired');
throw new BluetoothPairingError(
'Device not paired. To pair: long-press the Bluetooth button on the machine, then pair it using your operating system\'s Bluetooth settings. After pairing, try connecting again.'
);
}
// Check for invalid response (less than 3 bytes means no proper command response)
if (response.length < 3) {
console.log('[BrotherPP1] Invalid response length:', response.length);
throw new BluetoothPairingError(
'Device not paired. To pair: long-press the Bluetooth button on the machine, then pair it using your operating system\'s Bluetooth settings. After pairing, try connecting again.'
);
}
}
// Parse response // Parse response
let parsed = ""; let parsed = "";
if (response.length >= 3) { if (response.length >= 3) {