import { geliosTelemetryFieldRegistryV5 } from "../v12/telemetry-field-registry.mjs"; import { GELIOS_PROVIDER_PACKAGE_ID, GELIOS_PROVIDER_PACKAGE_VERSION, } from "./package.mjs"; const EXPOSED_SURFACES = Object.freeze([ "audit", "data_product", "analytics", "foundry", ]); const value = structuredClone(geliosTelemetryFieldRegistryV5); value.id = "gelios.units.current.telemetry.v3"; value.version = "3.0.0"; value.providerPackage = { id: GELIOS_PROVIDER_PACKAGE_ID, version: GELIOS_PROVIDER_PACKAGE_VERSION, }; value.sourceNamespace = "gelios.units.telemetry_parameter"; const existingKeys = new Set(value.entries.map((entry) => entry.sourceKey)); for (const sourceKey of inputKeys()) { if (existingKeys.has(sourceKey)) continue; value.entries.push(providerConfiguredNumber(sourceKey)); existingKeys.add(sourceKey); } for (const [sourceKey, readingId, label] of [ ["GSM_level", "sensor.param.gsm_level", "Уровень GSM"], ["call_btn", "sensor.param.call_btn", "Состояние кнопки вызова"], ["gps_mod", "sensor.param.gps_mod", "Состояние GPS-модуля"], ["gsm", "sensor.param.gsm", "Сигнал GSM"], ["gsm_st", "sensor.param.gsm_st", "Состояние GSM"], ["gyro", "sensor.param.gyro", "Состояние гироскопа"], ["ign_virt", "sensor.param.ign_virt", "Виртуальное зажигание"], ["nav_st", "sensor.param.nav_st", "Состояние навигации"], ["pwr_ext", "sensor.param.pwr_ext", "Внешнее питание"], ["pwr_int", "sensor.param.pwr_int", "Внутреннее питание"], ["sim1_st", "sensor.param.sim1_st", "Состояние SIM 1"], ["sim2_st", "sensor.param.sim2_st", "Состояние SIM 2"], ["v_in", "sensor.param.v_in", "Вход питания"], ]) { if (existingKeys.has(sourceKey)) continue; value.entries.push(registryNumber(sourceKey, readingId, label)); existingKeys.add(sourceKey); } export const geliosTelemetryFieldRegistryV6 = deepFreeze(value); function inputKeys() { return [ ...Array.from({ length: 16 }, (_, index) => `in_${index}`), ...Array.from({ length: 16 }, (_, index) => `in${index}`), ]; } function providerConfiguredNumber(sourceKey) { return { id: `gelios.sensor-parameter.${sourceKey.replaceAll("_", "-underscore-")}`, sourceKey, status: "approved", sensitivity: "operational", valueType: "number", semanticReading: { id: `sensor.param.${sourceKey}`, labelSource: "provider_configured", unitSource: "provider_configured", }, allowedSurfaces: [...EXPOSED_SURFACES], }; } function registryNumber(sourceKey, readingId, label) { return { id: `gelios.telemetry-parameter.${sourceKey.toLowerCase()}`, sourceKey, status: "approved", sensitivity: "operational", valueType: "number", semanticReading: { id: readingId, labelSource: "registry", label, unitSource: "none", }, allowedSurfaces: [...EXPOSED_SURFACES], }; } function deepFreeze(input) { if (!input || typeof input !== "object" || Object.isFrozen(input)) return input; Object.freeze(input); for (const child of Object.values(input)) deepFreeze(child); return input; }