From 244ff572c41f4702d321df66cc4b1f6e2e6100cc Mon Sep 17 00:00:00 2001 From: legop3 Date: Fri, 1 May 2026 18:05:42 -0400 Subject: [PATCH] bolobob --- .../src/services/neatoService/lidarRuntime.js | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/server/src/services/neatoService/lidarRuntime.js b/server/src/services/neatoService/lidarRuntime.js index 0a951a30..b299fc51 100644 --- a/server/src/services/neatoService/lidarRuntime.js +++ b/server/src/services/neatoService/lidarRuntime.js @@ -15,14 +15,24 @@ function parsePayloadLine(line) { const raw = sanitizeLogText(line).trim(); if (!raw) return null; const quotedMatch = raw.match(/<<< "(.*)"$/); - if (quotedMatch) return quotedMatch[1]; - if (raw.includes('AngleInDegrees,DistInMM,Intensity,ErrorCodeHEX')) { - return 'AngleInDegrees,DistInMM,Intensity,ErrorCodeHEX'; + if (!quotedMatch) return null; + const payload = quotedMatch[1]; + if (!payload) return null; + + // Ignore the duplicated multiline blob form and trust the clean one-message stream. + if (payload.includes('\\r\\n') || payload.includes('\r') || payload.includes('\n')) { + return null; + } + + if (payload === 'AngleInDegrees,DistInMM,Intensity,ErrorCodeHEX') { + return payload; + } + if (/^ROTATION_SPEED,[0-9.]+$/.test(payload)) { + return payload; + } + if (/^\d+,\d+,\d+,[0-9A-Fa-f]+$/.test(payload)) { + return payload; } - const rotationMatch = raw.match(/ROTATION_SPEED,[0-9.]+/); - if (rotationMatch) return rotationMatch[0]; - const pointMatch = raw.match(/\b\d+,\d+,\d+,[0-9A-Fa-f]+\b/); - if (pointMatch) return pointMatch[0]; return null; }