blob: 00278dfd032ccd5e66f106b2f1f71ad8930833e2 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#include <fuchsia/hardware/usb/peripheral/llcpp/fidl.h>
#include <memory>
namespace llcpp {
namespace fuchsia {
namespace hardware {
namespace usb {
namespace peripheral {
namespace {
[[maybe_unused]]
constexpr uint64_t kEvents_FunctionRegistered_Ordinal = 0x48ca785200000000lu;
[[maybe_unused]]
constexpr uint64_t kEvents_FunctionRegistered_GenOrdinal = 0x191278425c4a96e8lu;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_EventsFunctionRegisteredRequestTable;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_EventsFunctionRegisteredResponseTable;
[[maybe_unused]]
constexpr uint64_t kEvents_FunctionsCleared_Ordinal = 0x24319fec00000000lu;
[[maybe_unused]]
constexpr uint64_t kEvents_FunctionsCleared_GenOrdinal = 0x6feab079055dacf1lu;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_EventsFunctionsClearedRequestTable;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_EventsFunctionsClearedResponseTable;
} // namespace
template <>
Events::ResultOf::FunctionRegistered_Impl<Events::FunctionRegisteredResponse>::FunctionRegistered_Impl(::zx::unowned_channel _client_end) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<FunctionRegisteredRequest, ::fidl::MessageDirection::kSending>();
::fidl::internal::AlignedBuffer<_kWriteAllocSize> _write_bytes_inlined;
auto& _write_bytes_array = _write_bytes_inlined;
uint8_t* _write_bytes = _write_bytes_array.view().data();
memset(_write_bytes, 0, FunctionRegisteredRequest::PrimarySize);
::fidl::BytePart _request_bytes(_write_bytes, _kWriteAllocSize, sizeof(FunctionRegisteredRequest));
::fidl::DecodedMessage<FunctionRegisteredRequest> _decoded_request(std::move(_request_bytes));
Super::SetResult(
Events::InPlace::FunctionRegistered(std::move(_client_end), Super::response_buffer()));
}
Events::ResultOf::FunctionRegistered Events::SyncClient::FunctionRegistered() {
return ResultOf::FunctionRegistered(::zx::unowned_channel(this->channel_));
}
Events::ResultOf::FunctionRegistered Events::Call::FunctionRegistered(::zx::unowned_channel _client_end) {
return ResultOf::FunctionRegistered(std::move(_client_end));
}
::fidl::DecodeResult<Events::FunctionRegisteredResponse> Events::InPlace::FunctionRegistered(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer) {
constexpr uint32_t _write_num_bytes = sizeof(FunctionRegisteredRequest);
::fidl::internal::AlignedBuffer<_write_num_bytes> _write_bytes;
::fidl::BytePart _request_buffer = _write_bytes.view();
_request_buffer.set_actual(_write_num_bytes);
::fidl::DecodedMessage<FunctionRegisteredRequest> params(std::move(_request_buffer));
Events::SetTransactionHeaderFor::FunctionRegisteredRequest(params);
auto _encode_request_result = ::fidl::Encode(std::move(params));
if (_encode_request_result.status != ZX_OK) {
return ::fidl::DecodeResult<Events::FunctionRegisteredResponse>::FromFailure(
std::move(_encode_request_result));
}
auto _call_result = ::fidl::Call<FunctionRegisteredRequest, FunctionRegisteredResponse>(
std::move(_client_end), std::move(_encode_request_result.message), std::move(response_buffer));
if (_call_result.status != ZX_OK) {
return ::fidl::DecodeResult<Events::FunctionRegisteredResponse>::FromFailure(
std::move(_call_result));
}
return ::fidl::Decode(std::move(_call_result.message));
}
Events::ResultOf::FunctionsCleared_Impl::FunctionsCleared_Impl(::zx::unowned_channel _client_end) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<FunctionsClearedRequest, ::fidl::MessageDirection::kSending>();
::fidl::internal::AlignedBuffer<_kWriteAllocSize> _write_bytes_inlined;
auto& _write_bytes_array = _write_bytes_inlined;
uint8_t* _write_bytes = _write_bytes_array.view().data();
memset(_write_bytes, 0, FunctionsClearedRequest::PrimarySize);
::fidl::BytePart _request_bytes(_write_bytes, _kWriteAllocSize, sizeof(FunctionsClearedRequest));
::fidl::DecodedMessage<FunctionsClearedRequest> _decoded_request(std::move(_request_bytes));
Super::operator=(
Events::InPlace::FunctionsCleared(std::move(_client_end)));
}
Events::ResultOf::FunctionsCleared Events::SyncClient::FunctionsCleared() {
return ResultOf::FunctionsCleared(::zx::unowned_channel(this->channel_));
}
Events::ResultOf::FunctionsCleared Events::Call::FunctionsCleared(::zx::unowned_channel _client_end) {
return ResultOf::FunctionsCleared(std::move(_client_end));
}
::fidl::internal::StatusAndError Events::InPlace::FunctionsCleared(::zx::unowned_channel _client_end) {
constexpr uint32_t _write_num_bytes = sizeof(FunctionsClearedRequest);
::fidl::internal::AlignedBuffer<_write_num_bytes> _write_bytes;
::fidl::BytePart _request_buffer = _write_bytes.view();
_request_buffer.set_actual(_write_num_bytes);
::fidl::DecodedMessage<FunctionsClearedRequest> params(std::move(_request_buffer));
Events::SetTransactionHeaderFor::FunctionsClearedRequest(params);
auto _encode_request_result = ::fidl::Encode(std::move(params));
if (_encode_request_result.status != ZX_OK) {
return ::fidl::internal::StatusAndError::FromFailure(
std::move(_encode_request_result));
}
zx_status_t _write_status =
::fidl::Write(std::move(_client_end), std::move(_encode_request_result.message));
if (_write_status != ZX_OK) {
return ::fidl::internal::StatusAndError(_write_status, ::fidl::internal::kErrorWriteFailed);
} else {
return ::fidl::internal::StatusAndError(ZX_OK, nullptr);
}
}
bool Events::TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
if (msg->num_bytes < sizeof(fidl_message_header_t)) {
zx_handle_close_many(msg->handles, msg->num_handles);
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
fidl_message_header_t* hdr = reinterpret_cast<fidl_message_header_t*>(msg->bytes);
zx_status_t status = fidl_validate_txn_header(hdr);
if (status != ZX_OK) {
txn->Close(status);
return true;
}
switch (hdr->ordinal) {
case kEvents_FunctionRegistered_Ordinal:
case kEvents_FunctionRegistered_GenOrdinal:
{
auto result = ::fidl::DecodeAs<FunctionRegisteredRequest>(msg);
if (result.status != ZX_OK) {
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
impl->FunctionRegistered(
Interface::FunctionRegisteredCompleter::Sync(txn));
return true;
}
case kEvents_FunctionsCleared_Ordinal:
case kEvents_FunctionsCleared_GenOrdinal:
{
auto result = ::fidl::DecodeAs<FunctionsClearedRequest>(msg);
if (result.status != ZX_OK) {
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
impl->FunctionsCleared(
Interface::FunctionsClearedCompleter::Sync(txn));
return true;
}
default: {
return false;
}
}
}
bool Events::Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
bool found = TryDispatch(impl, msg, txn);
if (!found) {
zx_handle_close_many(msg->handles, msg->num_handles);
txn->Close(ZX_ERR_NOT_SUPPORTED);
}
return found;
}
void Events::Interface::FunctionRegisteredCompleterBase::Reply() {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<FunctionRegisteredResponse, ::fidl::MessageDirection::kSending>();
FIDL_ALIGNDECL uint8_t _write_bytes[_kWriteAllocSize] = {};
auto& _response = *reinterpret_cast<FunctionRegisteredResponse*>(_write_bytes);
Events::SetTransactionHeaderFor::FunctionRegisteredResponse(
::fidl::DecodedMessage<FunctionRegisteredResponse>(
::fidl::BytePart(reinterpret_cast<uint8_t*>(&_response),
FunctionRegisteredResponse::PrimarySize,
FunctionRegisteredResponse::PrimarySize)));
::fidl::BytePart _response_bytes(_write_bytes, _kWriteAllocSize, sizeof(FunctionRegisteredResponse));
CompleterBase::SendReply(::fidl::DecodedMessage<FunctionRegisteredResponse>(std::move(_response_bytes)));
}
void Events::SetTransactionHeaderFor::FunctionRegisteredRequest(const ::fidl::DecodedMessage<Events::FunctionRegisteredRequest>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kEvents_FunctionRegistered_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Events::SetTransactionHeaderFor::FunctionRegisteredResponse(const ::fidl::DecodedMessage<Events::FunctionRegisteredResponse>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kEvents_FunctionRegistered_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Events::SetTransactionHeaderFor::FunctionsClearedRequest(const ::fidl::DecodedMessage<Events::FunctionsClearedRequest>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kEvents_FunctionsCleared_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void ::llcpp::fuchsia::hardware::usb::peripheral::Device_SetConfiguration_Result::SizeAndOffsetAssertionHelper() {
static_assert(sizeof(Device_SetConfiguration_Result) == sizeof(fidl_xunion_t));
static_assert(offsetof(Device_SetConfiguration_Result, ordinal_) == offsetof(fidl_xunion_t, tag));
static_assert(offsetof(Device_SetConfiguration_Result, envelope_) == offsetof(fidl_xunion_t, envelope));
}
namespace {
[[maybe_unused]]
constexpr uint64_t kDevice_SetConfiguration_Ordinal = 0x7969547500000000lu;
[[maybe_unused]]
constexpr uint64_t kDevice_SetConfiguration_GenOrdinal = 0x464bafee91a3d6delu;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceSetConfigurationRequestTable;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceSetConfigurationResponseTable;
[[maybe_unused]]
constexpr uint64_t kDevice_ClearFunctions_Ordinal = 0x4e0ef30000000000lu;
[[maybe_unused]]
constexpr uint64_t kDevice_ClearFunctions_GenOrdinal = 0x67d9d8086dfab0cblu;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceClearFunctionsRequestTable;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceClearFunctionsResponseTable;
[[maybe_unused]]
constexpr uint64_t kDevice_SetStateChangeListener_Ordinal = 0x4409dd700000000lu;
[[maybe_unused]]
constexpr uint64_t kDevice_SetStateChangeListener_GenOrdinal = 0x5575723c4674d1d9lu;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceSetStateChangeListenerRequestTable;
extern "C" const fidl_type_t v1_fuchsia_hardware_usb_peripheral_DeviceSetStateChangeListenerResponseTable;
} // namespace
template <>
Device::ResultOf::SetConfiguration_Impl<Device::SetConfigurationResponse>::SetConfiguration_Impl(::zx::unowned_channel _client_end, ::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<SetConfigurationRequest, ::fidl::MessageDirection::kSending>();
std::unique_ptr _write_bytes_boxed = std::make_unique<::fidl::internal::AlignedBuffer<_kWriteAllocSize>>();
auto& _write_bytes_array = *_write_bytes_boxed;
SetConfigurationRequest _request = {};
_request.device_desc = std::move(device_desc);
_request.function_descriptors = std::move(function_descriptors);
auto _linearize_result = ::fidl::Linearize(&_request, _write_bytes_array.view());
if (_linearize_result.status != ZX_OK) {
Super::SetFailure(std::move(_linearize_result));
return;
}
::fidl::DecodedMessage<SetConfigurationRequest> _decoded_request = std::move(_linearize_result.message);
Super::SetResult(
Device::InPlace::SetConfiguration(std::move(_client_end), std::move(_decoded_request), Super::response_buffer()));
}
Device::ResultOf::SetConfiguration Device::SyncClient::SetConfiguration(::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors) {
return ResultOf::SetConfiguration(::zx::unowned_channel(this->channel_), std::move(device_desc), std::move(function_descriptors));
}
Device::ResultOf::SetConfiguration Device::Call::SetConfiguration(::zx::unowned_channel _client_end, ::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors) {
return ResultOf::SetConfiguration(std::move(_client_end), std::move(device_desc), std::move(function_descriptors));
}
template <>
Device::UnownedResultOf::SetConfiguration_Impl<Device::SetConfigurationResponse>::SetConfiguration_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors, ::fidl::BytePart _response_buffer) {
if (_request_buffer.capacity() < SetConfigurationRequest::PrimarySize) {
Super::SetFailure(::fidl::DecodeResult<SetConfigurationResponse>(ZX_ERR_BUFFER_TOO_SMALL, ::fidl::internal::kErrorRequestBufferTooSmall));
return;
}
SetConfigurationRequest _request = {};
_request.device_desc = std::move(device_desc);
_request.function_descriptors = std::move(function_descriptors);
auto _linearize_result = ::fidl::Linearize(&_request, std::move(_request_buffer));
if (_linearize_result.status != ZX_OK) {
Super::SetFailure(std::move(_linearize_result));
return;
}
::fidl::DecodedMessage<SetConfigurationRequest> _decoded_request = std::move(_linearize_result.message);
Super::SetResult(
Device::InPlace::SetConfiguration(std::move(_client_end), std::move(_decoded_request), std::move(_response_buffer)));
}
Device::UnownedResultOf::SetConfiguration Device::SyncClient::SetConfiguration(::fidl::BytePart _request_buffer, ::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors, ::fidl::BytePart _response_buffer) {
return UnownedResultOf::SetConfiguration(::zx::unowned_channel(this->channel_), std::move(_request_buffer), std::move(device_desc), std::move(function_descriptors), std::move(_response_buffer));
}
Device::UnownedResultOf::SetConfiguration Device::Call::SetConfiguration(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::hardware::usb::peripheral::DeviceDescriptor device_desc, ::fidl::VectorView<::llcpp::fuchsia::hardware::usb::peripheral::FunctionDescriptor> function_descriptors, ::fidl::BytePart _response_buffer) {
return UnownedResultOf::SetConfiguration(std::move(_client_end), std::move(_request_buffer), std::move(device_desc), std::move(function_descriptors), std::move(_response_buffer));
}
::fidl::DecodeResult<Device::SetConfigurationResponse> Device::InPlace::SetConfiguration(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetConfigurationRequest> params, ::fidl::BytePart response_buffer) {
Device::SetTransactionHeaderFor::SetConfigurationRequest(params);
auto _encode_request_result = ::fidl::Encode(std::move(params));
if (_encode_request_result.status != ZX_OK) {
return ::fidl::DecodeResult<Device::SetConfigurationResponse>::FromFailure(
std::move(_encode_request_result));
}
auto _call_result = ::fidl::Call<SetConfigurationRequest, SetConfigurationResponse>(
std::move(_client_end), std::move(_encode_request_result.message), std::move(response_buffer));
if (_call_result.status != ZX_OK) {
return ::fidl::DecodeResult<Device::SetConfigurationResponse>::FromFailure(
std::move(_call_result));
}
return ::fidl::Decode(std::move(_call_result.message));
}
template <>
Device::ResultOf::ClearFunctions_Impl<Device::ClearFunctionsResponse>::ClearFunctions_Impl(::zx::unowned_channel _client_end) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<ClearFunctionsRequest, ::fidl::MessageDirection::kSending>();
::fidl::internal::AlignedBuffer<_kWriteAllocSize> _write_bytes_inlined;
auto& _write_bytes_array = _write_bytes_inlined;
uint8_t* _write_bytes = _write_bytes_array.view().data();
memset(_write_bytes, 0, ClearFunctionsRequest::PrimarySize);
::fidl::BytePart _request_bytes(_write_bytes, _kWriteAllocSize, sizeof(ClearFunctionsRequest));
::fidl::DecodedMessage<ClearFunctionsRequest> _decoded_request(std::move(_request_bytes));
Super::SetResult(
Device::InPlace::ClearFunctions(std::move(_client_end), Super::response_buffer()));
}
Device::ResultOf::ClearFunctions Device::SyncClient::ClearFunctions() {
return ResultOf::ClearFunctions(::zx::unowned_channel(this->channel_));
}
Device::ResultOf::ClearFunctions Device::Call::ClearFunctions(::zx::unowned_channel _client_end) {
return ResultOf::ClearFunctions(std::move(_client_end));
}
::fidl::DecodeResult<Device::ClearFunctionsResponse> Device::InPlace::ClearFunctions(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer) {
constexpr uint32_t _write_num_bytes = sizeof(ClearFunctionsRequest);
::fidl::internal::AlignedBuffer<_write_num_bytes> _write_bytes;
::fidl::BytePart _request_buffer = _write_bytes.view();
_request_buffer.set_actual(_write_num_bytes);
::fidl::DecodedMessage<ClearFunctionsRequest> params(std::move(_request_buffer));
Device::SetTransactionHeaderFor::ClearFunctionsRequest(params);
auto _encode_request_result = ::fidl::Encode(std::move(params));
if (_encode_request_result.status != ZX_OK) {
return ::fidl::DecodeResult<Device::ClearFunctionsResponse>::FromFailure(
std::move(_encode_request_result));
}
auto _call_result = ::fidl::Call<ClearFunctionsRequest, ClearFunctionsResponse>(
std::move(_client_end), std::move(_encode_request_result.message), std::move(response_buffer));
if (_call_result.status != ZX_OK) {
return ::fidl::DecodeResult<Device::ClearFunctionsResponse>::FromFailure(
std::move(_call_result));
}
return ::fidl::Decode(std::move(_call_result.message));
}
Device::ResultOf::SetStateChangeListener_Impl::SetStateChangeListener_Impl(::zx::unowned_channel _client_end, ::zx::channel listener) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<SetStateChangeListenerRequest, ::fidl::MessageDirection::kSending>();
::fidl::internal::AlignedBuffer<_kWriteAllocSize> _write_bytes_inlined;
auto& _write_bytes_array = _write_bytes_inlined;
uint8_t* _write_bytes = _write_bytes_array.view().data();
memset(_write_bytes, 0, SetStateChangeListenerRequest::PrimarySize);
auto& _request = *reinterpret_cast<SetStateChangeListenerRequest*>(_write_bytes);
_request.listener = std::move(listener);
::fidl::BytePart _request_bytes(_write_bytes, _kWriteAllocSize, sizeof(SetStateChangeListenerRequest));
::fidl::DecodedMessage<SetStateChangeListenerRequest> _decoded_request(std::move(_request_bytes));
Super::operator=(
Device::InPlace::SetStateChangeListener(std::move(_client_end), std::move(_decoded_request)));
}
Device::ResultOf::SetStateChangeListener Device::SyncClient::SetStateChangeListener(::zx::channel listener) {
return ResultOf::SetStateChangeListener(::zx::unowned_channel(this->channel_), std::move(listener));
}
Device::ResultOf::SetStateChangeListener Device::Call::SetStateChangeListener(::zx::unowned_channel _client_end, ::zx::channel listener) {
return ResultOf::SetStateChangeListener(std::move(_client_end), std::move(listener));
}
Device::UnownedResultOf::SetStateChangeListener_Impl::SetStateChangeListener_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel listener) {
if (_request_buffer.capacity() < SetStateChangeListenerRequest::PrimarySize) {
Super::status_ = ZX_ERR_BUFFER_TOO_SMALL;
Super::error_ = ::fidl::internal::kErrorRequestBufferTooSmall;
return;
}
memset(_request_buffer.data(), 0, SetStateChangeListenerRequest::PrimarySize);
auto& _request = *reinterpret_cast<SetStateChangeListenerRequest*>(_request_buffer.data());
_request.listener = std::move(listener);
_request_buffer.set_actual(sizeof(SetStateChangeListenerRequest));
::fidl::DecodedMessage<SetStateChangeListenerRequest> _decoded_request(std::move(_request_buffer));
Super::operator=(
Device::InPlace::SetStateChangeListener(std::move(_client_end), std::move(_decoded_request)));
}
Device::UnownedResultOf::SetStateChangeListener Device::SyncClient::SetStateChangeListener(::fidl::BytePart _request_buffer, ::zx::channel listener) {
return UnownedResultOf::SetStateChangeListener(::zx::unowned_channel(this->channel_), std::move(_request_buffer), std::move(listener));
}
Device::UnownedResultOf::SetStateChangeListener Device::Call::SetStateChangeListener(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::zx::channel listener) {
return UnownedResultOf::SetStateChangeListener(std::move(_client_end), std::move(_request_buffer), std::move(listener));
}
::fidl::internal::StatusAndError Device::InPlace::SetStateChangeListener(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<SetStateChangeListenerRequest> params) {
Device::SetTransactionHeaderFor::SetStateChangeListenerRequest(params);
auto _encode_request_result = ::fidl::Encode(std::move(params));
if (_encode_request_result.status != ZX_OK) {
return ::fidl::internal::StatusAndError::FromFailure(
std::move(_encode_request_result));
}
zx_status_t _write_status =
::fidl::Write(std::move(_client_end), std::move(_encode_request_result.message));
if (_write_status != ZX_OK) {
return ::fidl::internal::StatusAndError(_write_status, ::fidl::internal::kErrorWriteFailed);
} else {
return ::fidl::internal::StatusAndError(ZX_OK, nullptr);
}
}
bool Device::TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
if (msg->num_bytes < sizeof(fidl_message_header_t)) {
zx_handle_close_many(msg->handles, msg->num_handles);
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
fidl_message_header_t* hdr = reinterpret_cast<fidl_message_header_t*>(msg->bytes);
zx_status_t status = fidl_validate_txn_header(hdr);
if (status != ZX_OK) {
txn->Close(status);
return true;
}
switch (hdr->ordinal) {
case kDevice_SetConfiguration_Ordinal:
case kDevice_SetConfiguration_GenOrdinal:
{
auto result = ::fidl::DecodeAs<SetConfigurationRequest>(msg);
if (result.status != ZX_OK) {
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
auto message = result.message.message();
impl->SetConfiguration(std::move(message->device_desc), std::move(message->function_descriptors),
Interface::SetConfigurationCompleter::Sync(txn));
return true;
}
case kDevice_ClearFunctions_Ordinal:
case kDevice_ClearFunctions_GenOrdinal:
{
auto result = ::fidl::DecodeAs<ClearFunctionsRequest>(msg);
if (result.status != ZX_OK) {
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
impl->ClearFunctions(
Interface::ClearFunctionsCompleter::Sync(txn));
return true;
}
case kDevice_SetStateChangeListener_Ordinal:
case kDevice_SetStateChangeListener_GenOrdinal:
{
auto result = ::fidl::DecodeAs<SetStateChangeListenerRequest>(msg);
if (result.status != ZX_OK) {
txn->Close(ZX_ERR_INVALID_ARGS);
return true;
}
auto message = result.message.message();
impl->SetStateChangeListener(std::move(message->listener),
Interface::SetStateChangeListenerCompleter::Sync(txn));
return true;
}
default: {
return false;
}
}
}
bool Device::Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
bool found = TryDispatch(impl, msg, txn);
if (!found) {
zx_handle_close_many(msg->handles, msg->num_handles);
txn->Close(ZX_ERR_NOT_SUPPORTED);
}
return found;
}
void Device::Interface::SetConfigurationCompleterBase::Reply(::llcpp::fuchsia::hardware::usb::peripheral::Device_SetConfiguration_Result result) {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<SetConfigurationResponse, ::fidl::MessageDirection::kSending>();
FIDL_ALIGNDECL uint8_t _write_bytes[_kWriteAllocSize];
SetConfigurationResponse _response = {};
Device::SetTransactionHeaderFor::SetConfigurationResponse(
::fidl::DecodedMessage<SetConfigurationResponse>(
::fidl::BytePart(reinterpret_cast<uint8_t*>(&_response),
SetConfigurationResponse::PrimarySize,
SetConfigurationResponse::PrimarySize)));
_response.result = std::move(result);
auto _linearize_result = ::fidl::Linearize(&_response, ::fidl::BytePart(_write_bytes,
_kWriteAllocSize));
if (_linearize_result.status != ZX_OK) {
CompleterBase::Close(ZX_ERR_INTERNAL);
return;
}
CompleterBase::SendReply(std::move(_linearize_result.message));
}
void Device::Interface::SetConfigurationCompleterBase::ReplySuccess() {
Device_SetConfiguration_Response response;
Reply(Device_SetConfiguration_Result::WithResponse(&response));
}
void Device::Interface::SetConfigurationCompleterBase::ReplyError(int32_t error) {
Reply(Device_SetConfiguration_Result::WithErr(&error));
}
void Device::Interface::SetConfigurationCompleterBase::Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::hardware::usb::peripheral::Device_SetConfiguration_Result result) {
if (_buffer.capacity() < SetConfigurationResponse::PrimarySize) {
CompleterBase::Close(ZX_ERR_INTERNAL);
return;
}
SetConfigurationResponse _response = {};
Device::SetTransactionHeaderFor::SetConfigurationResponse(
::fidl::DecodedMessage<SetConfigurationResponse>(
::fidl::BytePart(reinterpret_cast<uint8_t*>(&_response),
SetConfigurationResponse::PrimarySize,
SetConfigurationResponse::PrimarySize)));
_response.result = std::move(result);
auto _linearize_result = ::fidl::Linearize(&_response, std::move(_buffer));
if (_linearize_result.status != ZX_OK) {
CompleterBase::Close(ZX_ERR_INTERNAL);
return;
}
CompleterBase::SendReply(std::move(_linearize_result.message));
}
void Device::Interface::SetConfigurationCompleterBase::ReplySuccess(::fidl::BytePart _buffer) {
Device_SetConfiguration_Response response;
Reply(std::move(_buffer), Device_SetConfiguration_Result::WithResponse(&response));
}
void Device::Interface::SetConfigurationCompleterBase::Reply(::fidl::DecodedMessage<SetConfigurationResponse> params) {
Device::SetTransactionHeaderFor::SetConfigurationResponse(params);
CompleterBase::SendReply(std::move(params));
}
void Device::Interface::ClearFunctionsCompleterBase::Reply() {
constexpr uint32_t _kWriteAllocSize = ::fidl::internal::ClampedMessageSize<ClearFunctionsResponse, ::fidl::MessageDirection::kSending>();
FIDL_ALIGNDECL uint8_t _write_bytes[_kWriteAllocSize] = {};
auto& _response = *reinterpret_cast<ClearFunctionsResponse*>(_write_bytes);
Device::SetTransactionHeaderFor::ClearFunctionsResponse(
::fidl::DecodedMessage<ClearFunctionsResponse>(
::fidl::BytePart(reinterpret_cast<uint8_t*>(&_response),
ClearFunctionsResponse::PrimarySize,
ClearFunctionsResponse::PrimarySize)));
::fidl::BytePart _response_bytes(_write_bytes, _kWriteAllocSize, sizeof(ClearFunctionsResponse));
CompleterBase::SendReply(::fidl::DecodedMessage<ClearFunctionsResponse>(std::move(_response_bytes)));
}
void Device::SetTransactionHeaderFor::SetConfigurationRequest(const ::fidl::DecodedMessage<Device::SetConfigurationRequest>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kDevice_SetConfiguration_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Device::SetTransactionHeaderFor::SetConfigurationResponse(const ::fidl::DecodedMessage<Device::SetConfigurationResponse>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kDevice_SetConfiguration_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Device::SetTransactionHeaderFor::ClearFunctionsRequest(const ::fidl::DecodedMessage<Device::ClearFunctionsRequest>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kDevice_ClearFunctions_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Device::SetTransactionHeaderFor::ClearFunctionsResponse(const ::fidl::DecodedMessage<Device::ClearFunctionsResponse>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kDevice_ClearFunctions_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
void Device::SetTransactionHeaderFor::SetStateChangeListenerRequest(const ::fidl::DecodedMessage<Device::SetStateChangeListenerRequest>& _msg) {
fidl_init_txn_header(&_msg.message()->_hdr, 0, kDevice_SetStateChangeListener_GenOrdinal);
_msg.message()->_hdr.flags[0] |= FIDL_TXN_HEADER_UNION_FROM_XUNION_FLAG;
}
} // namespace peripheral
} // namespace usb
} // namespace hardware
} // namespace fuchsia
} // namespace llcpp