<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: keyapis/telemetry_metric/v1/keyapis_telemetry_metric_measurement_v1.proto

namespace Keyapis\TelemetryMetric\V1\Measurement;

use UnexpectedValueException;

/**
 * Справочник типов устройств
 *
 * Protobuf type <code>keyapis.telemetry_metric.v1.Measurement.DeviceType</code>
 */
class DeviceType
{
    /**
     * Значение не указано
     *
     * Generated from protobuf enum <code>DEVICE_TYPE_UNKNOWN = 0;</code>
     */
    const DEVICE_TYPE_UNKNOWN = 0;
    /**
     * Коммуникационный модуль
     *
     * Generated from protobuf enum <code>HUB = 1;</code>
     */
    const HUB = 1;
    /**
     * Счетчик импульсов - регистратор
     *
     * Generated from protobuf enum <code>PULSE_COUNTER_RECORDER = 2;</code>
     */
    const PULSE_COUNTER_RECORDER = 2;
    /**
     * Счетчик импульсов - регистратор LoRaWAN
     *
     * Generated from protobuf enum <code>PULSE_COUNTER_RECORDER_LR = 3;</code>
     */
    const PULSE_COUNTER_RECORDER_LR = 3;
    /**
     * Прибор учета расхода коммунальных услуг
     *
     * Generated from protobuf enum <code>METERING_DEVICE = 4;</code>
     */
    const METERING_DEVICE = 4;
    /**
     * Конвертер интерфейсов
     *
     * Generated from protobuf enum <code>INTERFACE_CONVERTER = 5;</code>
     */
    const INTERFACE_CONVERTER = 5;
    /**
     * M-BUS концентратор
     *
     * Generated from protobuf enum <code>M_BUS_HUB = 6;</code>
     */
    const M_BUS_HUB = 6;
    /**
     * Модуль связи LoRaWAN
     *
     * Generated from protobuf enum <code>COMMUNICATION_MODULE_LR = 7;</code>
     */
    const COMMUNICATION_MODULE_LR = 7;
    /**
     * Базовая станция LoRaWAN
     *
     * Generated from protobuf enum <code>BASE_LR = 8;</code>
     */
    const BASE_LR = 8;

    private static $valueToName = [
        self::DEVICE_TYPE_UNKNOWN => 'DEVICE_TYPE_UNKNOWN',
        self::HUB => 'HUB',
        self::PULSE_COUNTER_RECORDER => 'PULSE_COUNTER_RECORDER',
        self::PULSE_COUNTER_RECORDER_LR => 'PULSE_COUNTER_RECORDER_LR',
        self::METERING_DEVICE => 'METERING_DEVICE',
        self::INTERFACE_CONVERTER => 'INTERFACE_CONVERTER',
        self::M_BUS_HUB => 'M_BUS_HUB',
        self::COMMUNICATION_MODULE_LR => 'COMMUNICATION_MODULE_LR',
        self::BASE_LR => 'BASE_LR',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}

// Adding a class alias for backwards compatibility with the previous class name.
class_alias(DeviceType::class, \Keyapis\TelemetryMetric\V1\Measurement_DeviceType::class);

