From 5bb0038d9b2df864a2a8a1b86db395f3658d5049 Mon Sep 17 00:00:00 2001 From: David Ventura Date: Tue, 30 Apr 2024 23:16:24 +0200 Subject: [PATCH] send P2PAlive immediately after P2pRdy --- handlers.ts | 5 +++-- session.ts | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/handlers.ts b/handlers.ts index fb97ade..8e7823d 100644 --- a/handlers.ts +++ b/handlers.ts @@ -27,11 +27,12 @@ export const handle_P2PAlive = (session: Session, _: DataView) => { }; export const handle_P2PRdy = (session: Session, _: DataView) => { + // TODO - config const b = SendUsrChk(session, "admin", "admin"); session.send(b); }; -export const makePunchPkt = (dev: DevSerial): DataView => { +export const makeP2pRdy = (dev: DevSerial): DataView => { const len = dev.prefix.length + dev.suffix.length + 8; const outbuf = new DataView(new Uint8Array(0x14).buffer); // 8 = serial u64 outbuf.add(0).writeString(dev.prefix); @@ -73,7 +74,7 @@ export const createResponseForControlCommand = (session: Session, dv: DataView): let dbm = dv.add(0x24).readU8() - 0x100; // 0xbf - 0x100 = -65dbm .. constant?? // > -50 = excellent, -50 to -60 good, -60 to -70 fair, <-70 weak - console.log(`Camera ${session.devName}: ${charging}charging, battery at ${power/1000}V, Wifi ${dbm} dBm`); + console.log(`Camera ${session.devName}: ${charging}charging, battery at ${power / 1000}V, Wifi ${dbm} dBm`); } if (cmd_id == ControlCommands.WifiSettingsAck) { diff --git a/session.ts b/session.ts index c9b43c6..178fc57 100644 --- a/session.ts +++ b/session.ts @@ -2,7 +2,7 @@ import { createSocket, RemoteInfo } from "node:dgram"; import EventEmitter from "node:events"; import { Commands, CommandsByValue } from "./datatypes.js"; -import { handle_Drw, handle_P2PAlive, handle_P2PRdy, makePunchPkt, noop, notImpl } from "./handlers.js"; +import { handle_Drw, handle_P2PAlive, handle_P2PRdy, makeP2pRdy, noop, notImpl } from "./handlers.js"; import { hexdump } from "./hexdump.js"; import { create_P2pAlive, DevSerial, SendStartVideo, SendVideoResolution, SendWifiDetails } from "./impl.js"; import { opt } from "./options.js"; @@ -62,8 +62,11 @@ export const makeSession = ( sock.on("message", (msg, rinfo) => handleIncoming(session, handlers, msg, rinfo)); sock.on("listening", () => { - const buf = makePunchPkt(dev); + const buf = makeP2pRdy(dev); session.send(buf); + // The YsxLite sends a P2PAlive message immediately after P2PRdy + const alive_buf = create_P2pAlive(); + session.send(alive_buf); }); const SEND_PORT = 32108;