add logging on unhandled command acks

This commit is contained in:
David Ventura
2024-05-03 11:38:55 +02:00
parent 1edb7370cf
commit 2a3d047f48
+17 -8
View File
@@ -4,6 +4,7 @@ import { create_P2pRdy, SendListWifi, SendUsrChk, DevSerial } from "./impl.js";
import { Session } from "./session.js"; import { Session } from "./session.js";
import { u16_swap, u32_swap } from "./utils.js"; import { u16_swap, u32_swap } from "./utils.js";
import { logger } from "./logger.js"; import { logger } from "./logger.js";
import { hexdump } from "./hexdump.js";
export const notImpl = (session: Session, dv: DataView) => { export const notImpl = (session: Session, dv: DataView) => {
const raw = dv.readU16(); const raw = dv.readU16();
@@ -54,14 +55,14 @@ export const createResponseForControlCommand = (session: Session, dv: DataView):
XqBytesDec(dv.add(20), payload_len - 4, rotate_chr); XqBytesDec(dv.add(20), payload_len - 4, rotate_chr);
} }
if (cmd_id == ControlCommands.ConnectUserAck) { switch (cmd_id) {
case ControlCommands.ConnectUserAck:
let c = new Uint8Array(dv.add(0x18).readByteArray(4).buffer); let c = new Uint8Array(dv.add(0x18).readByteArray(4).buffer);
session.ticket = [...c]; session.ticket = [...c];
session.eventEmitter.emit("login"); session.eventEmitter.emit("login");
return []; return [];
}
if (cmd_id == ControlCommands.DevStatusAck) { case ControlCommands.DevStatusAck:
// ParseDevStatus -> offset relevant? // ParseDevStatus -> offset relevant?
let charging = u32_swap(dv.add(0x28).readU32()) & 1 ? "" : "not "; // 0x14000101 v 0x14000100 let charging = u32_swap(dv.add(0x28).readU32()) & 1 ? "" : "not "; // 0x14000101 v 0x14000100
let power = u16_swap(dv.add(0x18).readU16()); // '3730' or '3765', milliVolts let power = u16_swap(dv.add(0x18).readU16()); // '3730' or '3765', milliVolts
@@ -69,9 +70,9 @@ export const createResponseForControlCommand = (session: Session, dv: DataView):
// > -50 = excellent, -50 to -60 good, -60 to -70 fair, <-70 weak // > -50 = excellent, -50 to -60 good, -60 to -70 fair, <-70 weak
logger.info(`Camera ${session.devName}: ${charging}charging, battery at ${power / 1000}V, Wifi ${dbm} dBm`); logger.info(`Camera ${session.devName}: ${charging}charging, battery at ${power / 1000}V, Wifi ${dbm} dBm`);
} return [];
if (cmd_id == ControlCommands.WifiSettingsAck) { case ControlCommands.WifiSettingsAck:
const wifiSettings = { const wifiSettings = {
enable: dv.add(0x14).readU32(), enable: dv.add(0x14).readU32(),
status: dv.add(0x18).readU32(), status: dv.add(0x18).readU32(),
@@ -90,15 +91,14 @@ export const createResponseForControlCommand = (session: Session, dv: DataView):
const buf = SendListWifi(session); const buf = SendListWifi(session);
logger.info(`Current Wifi settings: ${JSON.stringify(wifiSettings, null, 2)}`); logger.info(`Current Wifi settings: ${JSON.stringify(wifiSettings, null, 2)}`);
return [buf]; return [buf];
}
if (cmd_id == ControlCommands.ListWifiAck) { case ControlCommands.ListWifiAck:
let startat = 0x10; let startat = 0x10;
let msg_len = 91; let msg_len = 91;
logger.debug("payload len", payload_len); logger.debug("payload len", payload_len);
let msg_count = (payload_len - 9) / msg_len; let msg_count = (payload_len - 9) / msg_len;
let remote_msg_count = dv.add(startat).readU32LE(); let remote_msg_count = dv.add(startat).readU32LE();
logger.debug("should get messages:", msg_count, "in payload: ", remote_msg_count); logger.debug(`should get messages: ${msg_count} in payload: ${remote_msg_count}`);
startat += 4; startat += 4;
let items = []; let items = [];
for (let i = 0; i < msg_count; i++) { for (let i = 0; i < msg_count; i++) {
@@ -117,6 +117,15 @@ export const createResponseForControlCommand = (session: Session, dv: DataView):
logger.debug("ended at", startat); logger.debug("ended at", startat);
items.push(wifiListItem); items.push(wifiListItem);
} }
return [];
case ControlCommands.StartVideoAck:
logger.debug("Start video ack");
return [];
case ControlCommands.VideoParamSetAck:
logger.debug("Video param set ack");
return [];
default:
logger.info(`Unhandled control command: 0x${cmd_id.toString(16)}`);
} }
return []; return [];
}; };