/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MatterDefinition } from "../MatterDefinition.js";
import {
  ClusterElement as Cluster,
  AttributeElement as Attribute,
  DatatypeElement as Datatype,
  FieldElement as Field
} from "../../elements/index.js";
const IlluminanceMeasurement = Cluster({
  name: "IlluminanceMeasurement",
  id: 1024,
  classification: "application",
  pics: "ILL",
  details: "The Illuminance Measurement cluster provides an interface to illuminance measurement functionality, including configuration and provision of notifications of illuminance measurements.",
  xref: { document: "cluster", section: "2.2" },
  children: [
    Attribute({ name: "ClusterRevision", id: 65533, type: "ClusterRevision", default: 3 }),
    Attribute({
      name: "MeasuredValue",
      id: 0,
      type: "uint16",
      access: "R V",
      conformance: "M",
      constraint: "0, minMeasuredValue to maxMeasuredValue",
      default: 0,
      quality: "X P",
      details: "The MeasuredValue attribute represents the illuminance in Lux (symbol lx) as follows:\n  \u2022 MeasuredValue = 10,000 x log10(illuminance) + 1,\nwhere 1 lx <= illuminance <= 3.576 Mlx, corresponding to a MeasuredValue in the range 1 to 0xFFFE. The MeasuredValue attribute can take the following values:\n  \u2022 0 indicates a value of illuminance that is too low to be measured,\n  \u2022 MinMeasuredValue <= MeasuredValue <= MaxMeasuredValue under normal circumstances,\n  \u2022 null indicates that the illuminance measurement is invalid.\nThe MeasuredValue attribute is updated continuously as new measurements are made.",
      xref: { document: "cluster", section: "2.2.5.1" }
    }),
    Attribute({
      name: "MinMeasuredValue",
      id: 1,
      type: "uint16",
      access: "R V",
      conformance: "M",
      constraint: "1 to maxMeasuredValue1",
      quality: "X",
      details: "The MinMeasuredValue attribute indicates the minimum value of MeasuredValue that can be measured. A value of null indicates that this attribute is not defined. See Measured Value for more details.",
      xref: { document: "cluster", section: "2.2.5.2" }
    }),
    Attribute({
      name: "MaxMeasuredValue",
      id: 2,
      type: "uint16",
      access: "R V",
      conformance: "M",
      constraint: "minMeasuredValue1 to 65534",
      quality: "X",
      details: "The MaxMeasuredValue attribute indicates the maximum value of MeasuredValue that can be measured. A value of null indicates that this attribute is not defined. See Measured Value for more details.",
      xref: { document: "cluster", section: "2.2.5.3" }
    }),
    Attribute({
      name: "Tolerance",
      id: 3,
      type: "uint16",
      access: "R V",
      conformance: "O",
      constraint: "0 to 2048",
      details: "See Measured Value.",
      xref: { document: "cluster", section: "2.2.5.4" }
    }),
    Attribute({
      name: "LightSensorType",
      id: 4,
      type: "uint8",
      access: "R V",
      conformance: "O",
      default: null,
      quality: "X",
      details: "The LightSensorType attribute specifies the electronic type of the light sensor. This attribute shall be set to one of the non-reserved values listed in LightSensorTypeEnum or null in case the sensor type is unknown.",
      xref: { document: "cluster", section: "2.2.5.5" }
    }),
    Datatype({
      name: "LightSensorTypeEnum",
      type: "enum8",
      xref: { document: "cluster", section: "2.2.4.1" },
      children: [
        Field({ name: "Photodiode", id: 0, conformance: "M", description: "Indicates photodiode sensor type" }),
        Field({ name: "Cmos", id: 1, conformance: "M", description: "Indicates CMOS sensor type" })
      ]
    })
  ]
});
MatterDefinition.children.push(IlluminanceMeasurement);
export {
  IlluminanceMeasurement
};
//# sourceMappingURL=IlluminanceMeasurement.js.map
