36 lines
890 B
JavaScript
36 lines
890 B
JavaScript
import { parseDeviceInfo, parseEd713Radar, parseEd719Radar, parseStateCode } from './commonParser'
|
|
import { DEVICE_PROFILE } from '../protocols/profiles'
|
|
|
|
export { parseDeviceInfo, parseStateCode }
|
|
|
|
/**
|
|
* 雷达数据统一解析入口:
|
|
* 优先按已识别 profile 解析,未知时再根据签名字节推断。
|
|
*/
|
|
export function parseRadarData(payload, profileId = DEVICE_PROFILE.UNKNOWN) {
|
|
if (profileId === DEVICE_PROFILE.ED713) {
|
|
return parseEd713Radar(payload)
|
|
}
|
|
|
|
if (profileId === DEVICE_PROFILE.ED719) {
|
|
return parseEd719Radar(payload)
|
|
}
|
|
|
|
const bytes = payload instanceof Uint8Array ? payload : new Uint8Array(payload)
|
|
|
|
if (bytes[3] === 0x7C) {
|
|
return parseEd713Radar(bytes)
|
|
}
|
|
|
|
if (bytes[3] === 0x67) {
|
|
return parseEd719Radar(bytes)
|
|
}
|
|
|
|
return {
|
|
type: 'UNKNOWN',
|
|
valid: false,
|
|
reason: 'UNKNOWN_SIGNATURE',
|
|
raw: bytes
|
|
}
|
|
}
|