# Copyright 2018 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.
#
# WARNING: This file is machine generated by fidlgen.

include <fuchsia/scpi/c/fidl.h>

fuchsia_scpi_DvfsOppHandles {
	void	void
} [packed]

fuchsia_scpi_SystemStatusHandles {
	void	void
} [packed]

fuchsia_scpi_SystemControllerGetDvfsInfoRequest {
	hdr		fidl_message_header[1206135815]
	power_domain	int32
} [packed]

fuchsia_scpi_SystemControllerGetDvfsInfoRequestHandles {
	void	void
} [packed]

fuchsia_scpi_SystemControllerGetDvfsInfoResponseHandles {
	opps	array[fuchsia_scpi_DvfsOppHandles]
} [packed]

fuchsia_scpi_SystemControllerGetSystemStatusRequest {
	hdr	fidl_message_header[1847022830]
} [packed]

fuchsia_scpi_SystemControllerGetSystemStatusRequestHandles {
	void	void
} [packed]

fuchsia_scpi_SystemControllerGetSystemStatusResponseHandles {
	sys_status	fuchsia_scpi_SystemStatusHandles
} [packed]

resource zx_chan_fuchsia_scpi_SystemController_client[zx_chan]
resource zx_chan_fuchsia_scpi_SystemController_server[zx_chan]

zx_channel_create$fuchsia_scpi_SystemController(options const[0], out0 ptr[out, zx_chan_fuchsia_scpi_SystemController_client], out1 ptr[out, zx_chan_fuchsia_scpi_SystemController_server])
fdio_service_connect$fuchsia_scpi_SystemController(path ptr[in, string["/svc/fuchsia.scpi.SystemController"]], handle zx_chan_fuchsia_scpi_SystemController_server)
zx_channel_call$fuchsia_scpi_SystemControllerGetDvfsInfo(handle zx_chan_fuchsia_scpi_SystemController_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fuchsia_scpi_SystemControllerGetDvfsInfoRequest, fuchsia_scpi_SystemControllerGetDvfsInfoRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fuchsia_scpi_SystemControllerGetDvfsInfoResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
zx_channel_call$fuchsia_scpi_SystemControllerGetSystemStatus(handle zx_chan_fuchsia_scpi_SystemController_client, options const[0], deadline zx_time, args ptr[in, fidl_call_args[fuchsia_scpi_SystemControllerGetSystemStatusRequest, fuchsia_scpi_SystemControllerGetSystemStatusRequestHandles, array[int8, ZX_CHANNEL_MAX_MSG_BYTES], fuchsia_scpi_SystemControllerGetSystemStatusResponseHandles]], actual_bytes ptr[out, int32], actual_handles ptr[out, int32])
