// utils/blePresenceStore.js
const STICKY_MS = 45000;
function markSeen(deviceId) {
s.lastSeen = Date.now();
s.missCount = 0;
s.explicitOffline = false;
}
function markGattDisconnected(deviceId, inRtcGrace) {
if (inRtcGrace || isHarmonyOS()) {
s.rtcGraceUntil = Date.now() + 8000;
return;
}
s.explicitOffline = true;
}
function applyScanResults(deviceList, scannedDevices, matchFn, btBizId, btConnected, opts) {
const didScan = !opts.scanSkipped;
const map = matchFn(deviceList, scannedDevices, btBizId, btConnected);
deviceList.forEach((device) => {
const row = map[device.deviceId];
if (row.connected || row.discovered) {
markSeen(device.deviceId);
} else if (didScan) {
recordScanMiss(device.deviceId); // 鸿蒙 threshold=3 次漏扫后 explicitOffline
}
row.present = row.connected || row.discovered
? true
: (isExplicitOffline(device.deviceId) ? false : !!isStickyOnline(device.deviceId));
});
}
这是状态机的代码 问题出在哪里呢
