// Copyright 2017 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.

#ifndef GARNET_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_
#define GARNET_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_

#include <ddk/usb/usb.h>
#include <zircon/hw/usb-video.h>

__BEGIN_CDECLS

// The probe stage of the stream negotiation process.
//   usb: the device protocol.
//   vs_interface_num: the number of the interface to direct the request to.
//   proposal: the desired streaming parameters, such as which format to use.
//   out_result: the new negotiated streaming parameters returned from the
//   device.
zx_status_t usb_video_negotiate_probe(
    usb_protocol_t* usb, uint8_t vs_interface_num,
    usb_video_vc_probe_and_commit_controls* proposal,
    usb_video_vc_probe_and_commit_controls* out_result);

// The commit state of the stream negotiation process.
//   usb: the device protocol.
//   vs_interface_num: the number of the interface to direct the request to.
//   ctrls: used to configure the hardware, should be the result of
//          usb_video_negotiate_probe.
zx_status_t usb_video_negotiate_commit(
    usb_protocol_t* usb, uint8_t vs_interface_num,
    usb_video_vc_probe_and_commit_controls* ctrls);

__END_CDECLS

#endif  // GARNET_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_
