From 31baea241557fbbfc3ae63cd3aae073f79f7d393 Mon Sep 17 00:00:00 2001 From: Adriano Cunha <35786489+adrcunha@users.noreply.github.com> Date: Fri, 26 Apr 2024 08:42:42 -0700 Subject: [PATCH 1/2] Trigger debug output in handlers.ts according to --debug --- handlers.ts | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/handlers.ts b/handlers.ts index b4db639..44523be 100644 --- a/handlers.ts +++ b/handlers.ts @@ -5,10 +5,12 @@ import { create_P2pRdy, SendListWifi, SendUsrChk, DevSerial } from "./impl.js"; import { Session } from "./session.js"; import { u16_swap, u32_swap } from "./utils.js"; -export const notImpl = (_: Session, dv: DataView) => { +export const notImpl = (session: Session, dv: DataView) => { const raw = dv.readU16(); const cmd = CommandsByValue[raw]; - console.log(`^^ ${cmd} (${raw.toString(16)}) and it's not implemented yet`); + if (session.options.debug) { + console.log(`^^ ${cmd} (${raw.toString(16)}) and it's not implemented yet`); + } }; export const noop = (_: Session, __: DataView) => {}; @@ -51,8 +53,10 @@ export const createResponseForControlCommand = (session: Session, dv: DataView): if (payload_len > rotate_chr) { // 20 = 16 (header) + 4 (??) XqBytesDec(dv.add(20), payload_len - 4, rotate_chr); - console.log("Decrypted"); - console.log(hexdump(dv)); + if (session.options.debug) { + console.log("Decrypted"); + console.log(hexdump(dv)); + } } if (cmd_id == ControlCommands.ConnectUserAck) { @@ -96,10 +100,14 @@ export const createResponseForControlCommand = (session: Session, dv: DataView): if (cmd_id == ControlCommands.ListWifiAck) { let startat = 0x10; let msg_len = 91; - console.log("payload len", payload_len); + if (session.options.debug) { + console.log("payload len", payload_len); + } let msg_count = (payload_len - 9) / msg_len; let remote_msg_count = dv.add(startat).readU32LE(); - console.log("should get messages:", msg_count, "in payload: ", remote_msg_count); + if (session.options.debug) { + console.log("should get messages:", msg_count, "in payload: ", remote_msg_count); + } startat += 4; let items = []; for (let i = 0; i < msg_count; i++) { @@ -115,7 +123,9 @@ export const createResponseForControlCommand = (session: Session, dv: DataView): }; console.log(`Wifi Item: ${JSON.stringify(wifiListItem, null, 2)}`); startat += msg_len; - console.log("ended at", startat); + if (session.options.debug) { + console.log("ended at", startat); + } items.push(wifiListItem); } } From e9487f96039e077730507538601cbb687eb43a14 Mon Sep 17 00:00:00 2001 From: Adriano Cunha <35786489+adrcunha@users.noreply.github.com> Date: Fri, 26 Apr 2024 08:51:06 -0700 Subject: [PATCH 2/2] Add a few user-friendly messages to pair.ts for first-timers Also fix the session handling, allowing a camera to be reconnected and recognized again. --- pair.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pair.ts b/pair.ts index 088a852..c589125 100644 --- a/pair.ts +++ b/pair.ts @@ -14,18 +14,23 @@ export const pair = ({ opts, ssid, password }: { opts: opt; ssid: string; passwo throw new Error("You must set a non-zero-length password"); } - const onLogin = configureWifi(ssid, password); + const onLogin = (s: Session) => { + configureWifi(ssid, password); + console.log(`WiFi config for camera ${s.devName} is done`); + } devEv.on("discover", (rinfo: RemoteInfo, dev: DevSerial) => { - if (dev.devId in sessions) { + if (dev.devId in sessions && sessions[dev.devId] != undefined) { + console.log(`Camera ${dev.devId} at ${rinfo.address} already discovered, ignoring`); console.log(`ignoring ${dev.devId} - ${rinfo.address}`); return; } - console.log(`discovered ${dev.devId} - ${rinfo.address}`); + console.log(`Discovered camera ${dev.devId} at ${rinfo.address}`); const s = makeSession(Handlers, dev, rinfo, onLogin, opts); s.eventEmitter.on("disconnect", () => { - console.log("deleting from sessions"); + console.log(`Camera ${dev.devId} disconnected`); + console.log("Press CONTROL+C if you're done setting up your cameras"); delete sessions[dev.devId]; }); sessions[dev.devId] = s;