/*
  События устройств (домофоны, калитки, шлагбаумы). События оповещения
*/
syntax = "proto3";

import "google/api/field_behavior.proto";
import "google/protobuf/wrappers.proto";

package keyapis.device.v1;

option java_package = "ru.keyapis.device.v1";
option java_outer_classname = "KeyapisDeviceV1Proto";
option java_multiple_files = false;
option java_string_check_utf8 = true;
option go_package = "/keyapis_device_v1";
option cc_enable_arenas = true;
option csharp_namespace = "Keyapis.Device.V1";
option objc_class_prefix = "KEYAPISDEVICEV1";
option php_namespace = "Keyapis\\Device\\V1";
option ruby_package = "Keyapis::Device::V1";
option optimize_for = LITE_RUNTIME;

// Команда на подготовку и старт проигрывания файла через домофон.
// Очередь key.device.alert.prepare_start
message PrepareStartTask {
  // Идентификатор запроса
  string request_id = 1 [(google.api.field_behavior) = REQUIRED];
  // Ссылка на звуковой файл для проигрывания.
  // Файл должен лежать на внутреннем хранилище.
  // # Диапазон: 2..100
  string sound_file_uri = 2 [(google.api.field_behavior) = REQUIRED];
  // Идентификатор устройства
  int32 device_id = 3 [(google.api.field_behavior) = REQUIRED];
  // Длительность воспроизведения такта в секундах.
  // Такт включает в себя проигрывание файла на трубках или на динамике.
  // # Диапазон: 0..65536
  int32 tact_play_duration = 4 [(google.api.field_behavior) = REQUIRED];
  // Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот.
  // # Диапазон: 0..65536
  int32 tact_repeat_count = 5 [(google.api.field_behavior) = REQUIRED];
  // Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта.
  // # Диапазон: 0..65536
  int32 play_repeat_count = 6 [(google.api.field_behavior) = REQUIRED];
  // Тип проигрывания.
  // # Тип: byte
  enum PlayType {
    // Значение не указано
    PLAY_TYPE_UNKNOWN = 0;
    // Только на аналоговые трубки
    HANDSET_ONLY = 1;
    // Только на динамик домофона
    SPEAKER_ONLY = 2;
    // Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона
    HANDSET_AND_SPEAKER = 3;
    // Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки
    SPEAKER_AND_HANDSET = 4;
  }
  // Тип проигрывания
  PlayType play_type = 7 [(google.api.field_behavior) = REQUIRED];
}

// Команда на подготовку и прекращение проигрывания файла через домофон.
// Очередь key.device.alert.prepare_stop
message PrepareStopTask {
  // Идентификатор запроса
  string request_id = 1 [(google.api.field_behavior) = REQUIRED];
  // Идентификатор устройства
  int32 device_id = 2 [(google.api.field_behavior) = REQUIRED];
}

// Команда на старт проигрывания файла через домофон.
// Очередь key.device.alert.play_start
message PlayStartTask {
  // Идентификатор запроса.
  // # Тип: Guid
  string request_id = 1 [(google.api.field_behavior) = REQUIRED];
  // Идентификатор устройства
  int32 device_id = 2 [(google.api.field_behavior) = REQUIRED];
  // Ссылка на звуковой файл для проигрывания.
  // Файл должен лежать на внутреннем хранилище.
  // # Диапазон: 7..100
  string sound_file_uri = 3 [(google.api.field_behavior) = REQUIRED];
  // Сетевой адрес.
  // # Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
  string ip_address = 4 [(google.api.field_behavior) = REQUIRED];
  // Сетевой порт.
  // # Диапазон: 0..65535
  google.protobuf.Int32Value port = 5;
  // Модель устройства.
  // # Диапазон: 2..100
  string model = 6 [(google.api.field_behavior) = REQUIRED];
  // Длительность воспроизведения такта в секундах.
  // Такт включает в себя проигрывание файла на трубках или на динамике.
  // # Диапазон: 0..65536
  int32 tact_play_duration = 7 [(google.api.field_behavior) = REQUIRED];
  // Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот.
  // # Диапазон: 0..65536
  int32 tact_repeat_count = 8 [(google.api.field_behavior) = REQUIRED];
  // Количество повторов заданного количества тактов, где умолчание=0 - это один повтор.
  // # Диапазон: 0..65536
  int32 play_repeat_count = 9 [(google.api.field_behavior) = REQUIRED];
  // Тип проигрывания.
  // # Тип: byte
  enum PlayType {
    // Значение не указано
    PLAY_TYPE_UNKNOWN = 0;
    // Только на аналоговые трубки
    HANDSET_ONLY = 1;
    // Только на динамик домофона
    SPEAKER_ONLY = 2;
    // Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона
    HANDSET_AND_SPEAKER = 3;
    // Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки
    SPEAKER_AND_HANDSET = 4;
  }
  // Тип проигрывания
  PlayType play_type = 10 [(google.api.field_behavior) = REQUIRED];
  // Логин.
  // # Диапазон: 0..100
  google.protobuf.StringValue login = 11;
  // Пароль.
  // # Диапазон: 0..100
  google.protobuf.StringValue password = 12;
}

// Команда на прекращение проигрывания файла через домофон.
// Очередь key.device.alert.play_stop
message PlayStopTask {
  // Идентификатор запроса.
  // # Тип: Guid
  string request_id = 1 [(google.api.field_behavior) = REQUIRED];
  // Идентификатор устройства
  int32 device_id = 2 [(google.api.field_behavior) = REQUIRED];
  // Сетевой адрес.
  // # Паттерн: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
  string ip_address = 3 [(google.api.field_behavior) = REQUIRED];
  // Сетевой порт.
  // # Диапазон: 0..65535
  google.protobuf.Int32Value port = 4;
  // Модель устройства.
  // # Диапазон: 2..100
  string model = 5 [(google.api.field_behavior) = REQUIRED];
  // Логин.
  // # Диапазон: 0..100
  google.protobuf.StringValue login = 6;
  // Пароль.
  // # Диапазон: 0..100
  google.protobuf.StringValue password = 7;
}