// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.media.videoanalyzer.edge.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Remote device adapter properties. */
@Fluent
public final class RemoteDeviceAdapterProperties {
    /*
     * An optional description for the remote device adapter.
     */
    @JsonProperty(value = "description")
    private String description;

    /*
     * The IoT device to which this remote device will connect.
     */
    @JsonProperty(value = "target", required = true)
    private RemoteDeviceAdapterTarget target;

    /*
     * Information that enables communication between the IoT Hub and the IoT
     * device - allowing this edge module to act as a transparent gateway
     * between the two.
     */
    @JsonProperty(value = "iotHubDeviceConnection", required = true)
    private IotHubDeviceConnection iotHubDeviceConnection;

    /**
     * Creates an instance of RemoteDeviceAdapterProperties class.
     *
     * @param target the target value to set.
     * @param iotHubDeviceConnection the iotHubDeviceConnection value to set.
     */
    @JsonCreator
    public RemoteDeviceAdapterProperties(
            @JsonProperty(value = "target", required = true) RemoteDeviceAdapterTarget target,
            @JsonProperty(value = "iotHubDeviceConnection", required = true)
                    IotHubDeviceConnection iotHubDeviceConnection) {
        this.target = target;
        this.iotHubDeviceConnection = iotHubDeviceConnection;
    }

    /**
     * Get the description property: An optional description for the remote device adapter.
     *
     * @return the description value.
     */
    public String getDescription() {
        return this.description;
    }

    /**
     * Set the description property: An optional description for the remote device adapter.
     *
     * @param description the description value to set.
     * @return the RemoteDeviceAdapterProperties object itself.
     */
    public RemoteDeviceAdapterProperties setDescription(String description) {
        this.description = description;
        return this;
    }

    /**
     * Get the target property: The IoT device to which this remote device will connect.
     *
     * @return the target value.
     */
    public RemoteDeviceAdapterTarget getTarget() {
        return this.target;
    }

    /**
     * Get the iotHubDeviceConnection property: Information that enables communication between the IoT Hub and the IoT
     * device - allowing this edge module to act as a transparent gateway between the two.
     *
     * @return the iotHubDeviceConnection value.
     */
    public IotHubDeviceConnection getIotHubDeviceConnection() {
        return this.iotHubDeviceConnection;
    }
}
