// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.media.audio;

type UpdateEffectError = strict enum {
    INVALID_CONFIG = 1;
    NOT_FOUND = 2;
};

const MAX_EFFECT_NAME_LENGTH uint32 = 128;

@discoverable
closed protocol EffectsController {
    /// Sends the `config` message to an audio effect named `effect_name`. If the
    /// server closes the `EffectsController` connection for any reason, that
    /// indicates that the effects have been reset and any state associated with
    /// previous `UpdateEffect` messages have been lost. Clients who wish to re-apply
    /// state should respond by reconnecting and resending any needed `UpdateEffect`
    /// messages. If a client closes the connection, no state will be lost but the
    /// client will also be unable to determine if and when any state associated with
    /// previous messages have been lost.
    ///
    /// Returns success (empty response) if the message was accepted by an
    /// effect named `effect_name`.
    ///
    /// Returns `UpdateEffectError.INVALID_CONFIG` if an effect with the name
    /// `effect_name` was found, but the `config` message was rejected.
    ///
    /// Returns `UpdateEffectError.NOT_FOUND` if no effect with name `effect_name`
    /// could be located.
    strict UpdateEffect(struct {
        effect_name string:MAX_EFFECT_NAME_LENGTH;
        config string:MAX;
    }) -> () error UpdateEffectError;
};
