Зависимость функций (dependencies)
Структура используется при описании моделей устройств и определяет зависимость функций. Зависимость — это когда одна функция доступна, только если другая находится в определенном состоянии.
Например, цветные лампы некоторых моделей обычно могут работать в двух режимах: цветном и режиме белого света. В зависимости от того, какой режим выбрал пользователь, должен меняться и состав доступных функций:
- Если выбран цветной режим — должна стать доступной функция смены цвета лампы.
- Если выбран режим белого света — функция выбора цвета должна заблокироваться.
| Поле | Тип | Обязательное? | Описание | 
| dependencies | map<string, object> | ✔︎ | Содержит пары значений: зависимая функция и функция, определяющая ее доступность | 
| func_name | string | ✔︎ | Зависимая функция устройства — функция, доступность которой меняется в зависимости от состояния другой функции. Список функций см. в разделе Функции устройств | 
| key | string | ✔︎ | Функция, определяющая доступность зависимой функции. Список функций см. в разделе Функции устройств | 
| values | object | ✔︎ | Значения функции key, при которых зависимая функцияdependenciesстановится доступной (см. Значение функции устройства (value)) | 
{
    "dependencies": {
        "func_name": {
            "key": string,
            "values": [
                {
                    "type": string,
                    "type_value": object
                },
                {
                    // ...
                }
            ]
        },
        {
            // ...
        }
    }
}
Пример описания зависимости функции
В примере описана зависимость функции light_colour (цвет освещения) от функции light_mode (режим работы): менять цвет устройства можно, только если оно переключено в цветной режим работы.
{
    "dependencies": {
        "light_colour": {
        "key": "light_mode",
            "values": [
                {
                    "type": "ENUM",
                    "enum_value": "colour"
                }
            ]
        }
    }
}