blob: d1661b810d54d2b451c7e3c18a5a5148c68c57c6 [file] [log] [blame]
// 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.
#pragma once
#include <zircon/compiler.h>
#include <zircon/types.h>
#include <zircon/device/usb-device.h>
__BEGIN_CDECLS;
typedef struct {
zx_status_t (*get_initial_mode)(void* ctx, usb_mode_t* out_mode);
zx_status_t (*set_mode)(void* ctx, usb_mode_t mode);
} usb_mode_switch_protocol_ops_t;
typedef struct {
usb_mode_switch_protocol_ops_t* ops;
void* ctx;
} usb_mode_switch_protocol_t;
static inline zx_status_t usb_mode_switch_get_initial_mode(usb_mode_switch_protocol_t* ums,
usb_mode_t* out_mode) {
return ums->ops->get_initial_mode(ums->ctx, out_mode);
}
static inline zx_status_t usb_mode_switch_set_mode(usb_mode_switch_protocol_t* ums,
usb_mode_t mode) {
return ums->ops->set_mode(ums->ctx, mode);
}
__END_CDECLS;