blob: 3273f8f70628341f1a8d92dada33faa02281f341 [file] [log] [blame]
// Copyright 2016 The Chromium 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 SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_SHARED_H_
#define SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_SHARED_H_
#include <stdint.h>
#include <functional>
#include <ostream>
#include <type_traits>
#include <utility>
#include "base/compiler_specific.h"
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/interface_data_view.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "services/device/public/interfaces/serial.mojom-shared-internal.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/bindings/native_enum.h"
#include "mojo/public/cpp/bindings/lib/native_struct_serialization.h"
namespace device {
namespace mojom {
class SerialDeviceInfoDataView;
class SerialConnectionOptionsDataView;
class SerialConnectionInfoDataView;
class SerialHostControlSignalsDataView;
class SerialDeviceControlSignalsDataView;
} // namespace mojom
} // namespace device
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::device::mojom::SerialDeviceInfoDataView> {
using Data = ::device::mojom::internal::SerialDeviceInfo_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
template <>
struct MojomTypeTraits<::device::mojom::SerialConnectionOptionsDataView> {
using Data = ::device::mojom::internal::SerialConnectionOptions_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
template <>
struct MojomTypeTraits<::device::mojom::SerialConnectionInfoDataView> {
using Data = ::device::mojom::internal::SerialConnectionInfo_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
template <>
struct MojomTypeTraits<::device::mojom::SerialHostControlSignalsDataView> {
using Data = ::device::mojom::internal::SerialHostControlSignals_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
template <>
struct MojomTypeTraits<::device::mojom::SerialDeviceControlSignalsDataView> {
using Data = ::device::mojom::internal::SerialDeviceControlSignals_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
} // namespace internal
} // namespace mojo
namespace device {
namespace mojom {
enum class SerialSendError : int32_t {
NONE,
DISCONNECTED,
PENDING,
TIMEOUT,
SYSTEM_ERROR,
};
inline std::ostream& operator<<(std::ostream& os, SerialSendError value) {
switch(value) {
case SerialSendError::NONE:
return os << "SerialSendError::NONE";
case SerialSendError::DISCONNECTED:
return os << "SerialSendError::DISCONNECTED";
case SerialSendError::PENDING:
return os << "SerialSendError::PENDING";
case SerialSendError::TIMEOUT:
return os << "SerialSendError::TIMEOUT";
case SerialSendError::SYSTEM_ERROR:
return os << "SerialSendError::SYSTEM_ERROR";
default:
return os << "Unknown SerialSendError value: " << static_cast<int32_t>(value);
}
}
inline bool IsKnownEnumValue(SerialSendError value) {
return internal::SerialSendError_Data::IsKnownValue(
static_cast<int32_t>(value));
}
enum class SerialReceiveError : int32_t {
NONE,
DISCONNECTED,
TIMEOUT,
DEVICE_LOST,
BREAK,
FRAME_ERROR,
OVERRUN,
BUFFER_OVERFLOW,
PARITY_ERROR,
SYSTEM_ERROR,
};
inline std::ostream& operator<<(std::ostream& os, SerialReceiveError value) {
switch(value) {
case SerialReceiveError::NONE:
return os << "SerialReceiveError::NONE";
case SerialReceiveError::DISCONNECTED:
return os << "SerialReceiveError::DISCONNECTED";
case SerialReceiveError::TIMEOUT:
return os << "SerialReceiveError::TIMEOUT";
case SerialReceiveError::DEVICE_LOST:
return os << "SerialReceiveError::DEVICE_LOST";
case SerialReceiveError::BREAK:
return os << "SerialReceiveError::BREAK";
case SerialReceiveError::FRAME_ERROR:
return os << "SerialReceiveError::FRAME_ERROR";
case SerialReceiveError::OVERRUN:
return os << "SerialReceiveError::OVERRUN";
case SerialReceiveError::BUFFER_OVERFLOW:
return os << "SerialReceiveError::BUFFER_OVERFLOW";
case SerialReceiveError::PARITY_ERROR:
return os << "SerialReceiveError::PARITY_ERROR";
case SerialReceiveError::SYSTEM_ERROR:
return os << "SerialReceiveError::SYSTEM_ERROR";
default:
return os << "Unknown SerialReceiveError value: " << static_cast<int32_t>(value);
}
}
inline bool IsKnownEnumValue(SerialReceiveError value) {
return internal::SerialReceiveError_Data::IsKnownValue(
static_cast<int32_t>(value));
}
enum class SerialDataBits : int32_t {
NONE,
SEVEN,
EIGHT,
};
inline std::ostream& operator<<(std::ostream& os, SerialDataBits value) {
switch(value) {
case SerialDataBits::NONE:
return os << "SerialDataBits::NONE";
case SerialDataBits::SEVEN:
return os << "SerialDataBits::SEVEN";
case SerialDataBits::EIGHT:
return os << "SerialDataBits::EIGHT";
default:
return os << "Unknown SerialDataBits value: " << static_cast<int32_t>(value);
}
}
inline bool IsKnownEnumValue(SerialDataBits value) {
return internal::SerialDataBits_Data::IsKnownValue(
static_cast<int32_t>(value));
}
enum class SerialParityBit : int32_t {
NONE,
NO_PARITY,
ODD,
EVEN,
};
inline std::ostream& operator<<(std::ostream& os, SerialParityBit value) {
switch(value) {
case SerialParityBit::NONE:
return os << "SerialParityBit::NONE";
case SerialParityBit::NO_PARITY:
return os << "SerialParityBit::NO_PARITY";
case SerialParityBit::ODD:
return os << "SerialParityBit::ODD";
case SerialParityBit::EVEN:
return os << "SerialParityBit::EVEN";
default:
return os << "Unknown SerialParityBit value: " << static_cast<int32_t>(value);
}
}
inline bool IsKnownEnumValue(SerialParityBit value) {
return internal::SerialParityBit_Data::IsKnownValue(
static_cast<int32_t>(value));
}
enum class SerialStopBits : int32_t {
NONE,
ONE,
TWO,
};
inline std::ostream& operator<<(std::ostream& os, SerialStopBits value) {
switch(value) {
case SerialStopBits::NONE:
return os << "SerialStopBits::NONE";
case SerialStopBits::ONE:
return os << "SerialStopBits::ONE";
case SerialStopBits::TWO:
return os << "SerialStopBits::TWO";
default:
return os << "Unknown SerialStopBits value: " << static_cast<int32_t>(value);
}
}
inline bool IsKnownEnumValue(SerialStopBits value) {
return internal::SerialStopBits_Data::IsKnownValue(
static_cast<int32_t>(value));
}
// Interface base classes. They are used for type safety check.
class SerialDeviceEnumeratorInterfaceBase {};
using SerialDeviceEnumeratorPtrDataView =
mojo::InterfacePtrDataView<SerialDeviceEnumeratorInterfaceBase>;
using SerialDeviceEnumeratorRequestDataView =
mojo::InterfaceRequestDataView<SerialDeviceEnumeratorInterfaceBase>;
using SerialDeviceEnumeratorAssociatedPtrInfoDataView =
mojo::AssociatedInterfacePtrInfoDataView<SerialDeviceEnumeratorInterfaceBase>;
using SerialDeviceEnumeratorAssociatedRequestDataView =
mojo::AssociatedInterfaceRequestDataView<SerialDeviceEnumeratorInterfaceBase>;
class SerialIoHandlerInterfaceBase {};
using SerialIoHandlerPtrDataView =
mojo::InterfacePtrDataView<SerialIoHandlerInterfaceBase>;
using SerialIoHandlerRequestDataView =
mojo::InterfaceRequestDataView<SerialIoHandlerInterfaceBase>;
using SerialIoHandlerAssociatedPtrInfoDataView =
mojo::AssociatedInterfacePtrInfoDataView<SerialIoHandlerInterfaceBase>;
using SerialIoHandlerAssociatedRequestDataView =
mojo::AssociatedInterfaceRequestDataView<SerialIoHandlerInterfaceBase>;
class SerialDeviceInfoDataView {
public:
SerialDeviceInfoDataView() {}
SerialDeviceInfoDataView(
internal::SerialDeviceInfo_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetPathDataView(
mojo::StringDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadPath(UserType* output) {
auto* pointer = data_->path.Get();
return mojo::internal::Deserialize<mojo::StringDataView>(
pointer, output, context_);
}
uint16_t vendor_id() const {
return data_->vendor_id;
}
bool has_vendor_id() const {
return data_->has_vendor_id;
}
uint16_t product_id() const {
return data_->product_id;
}
bool has_product_id() const {
return data_->has_product_id;
}
inline void GetDisplayNameDataView(
mojo::StringDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadDisplayName(UserType* output) {
auto* pointer = data_->display_name.Get();
return mojo::internal::Deserialize<mojo::StringDataView>(
pointer, output, context_);
}
private:
internal::SerialDeviceInfo_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialConnectionOptionsDataView {
public:
SerialConnectionOptionsDataView() {}
SerialConnectionOptionsDataView(
internal::SerialConnectionOptions_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
uint32_t bitrate() const {
return data_->bitrate;
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadDataBits(UserType* output) const {
auto data_value = data_->data_bits;
return mojo::internal::Deserialize<::device::mojom::SerialDataBits>(
data_value, output);
}
SerialDataBits data_bits() const {
return static_cast<SerialDataBits>(data_->data_bits);
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadParityBit(UserType* output) const {
auto data_value = data_->parity_bit;
return mojo::internal::Deserialize<::device::mojom::SerialParityBit>(
data_value, output);
}
SerialParityBit parity_bit() const {
return static_cast<SerialParityBit>(data_->parity_bit);
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadStopBits(UserType* output) const {
auto data_value = data_->stop_bits;
return mojo::internal::Deserialize<::device::mojom::SerialStopBits>(
data_value, output);
}
SerialStopBits stop_bits() const {
return static_cast<SerialStopBits>(data_->stop_bits);
}
bool cts_flow_control() const {
return data_->cts_flow_control;
}
bool has_cts_flow_control() const {
return data_->has_cts_flow_control;
}
private:
internal::SerialConnectionOptions_Data* data_ = nullptr;
};
class SerialConnectionInfoDataView {
public:
SerialConnectionInfoDataView() {}
SerialConnectionInfoDataView(
internal::SerialConnectionInfo_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
uint32_t bitrate() const {
return data_->bitrate;
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadDataBits(UserType* output) const {
auto data_value = data_->data_bits;
return mojo::internal::Deserialize<::device::mojom::SerialDataBits>(
data_value, output);
}
SerialDataBits data_bits() const {
return static_cast<SerialDataBits>(data_->data_bits);
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadParityBit(UserType* output) const {
auto data_value = data_->parity_bit;
return mojo::internal::Deserialize<::device::mojom::SerialParityBit>(
data_value, output);
}
SerialParityBit parity_bit() const {
return static_cast<SerialParityBit>(data_->parity_bit);
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadStopBits(UserType* output) const {
auto data_value = data_->stop_bits;
return mojo::internal::Deserialize<::device::mojom::SerialStopBits>(
data_value, output);
}
SerialStopBits stop_bits() const {
return static_cast<SerialStopBits>(data_->stop_bits);
}
bool cts_flow_control() const {
return data_->cts_flow_control;
}
private:
internal::SerialConnectionInfo_Data* data_ = nullptr;
};
class SerialHostControlSignalsDataView {
public:
SerialHostControlSignalsDataView() {}
SerialHostControlSignalsDataView(
internal::SerialHostControlSignals_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool dtr() const {
return data_->dtr;
}
bool has_dtr() const {
return data_->has_dtr;
}
bool rts() const {
return data_->rts;
}
bool has_rts() const {
return data_->has_rts;
}
private:
internal::SerialHostControlSignals_Data* data_ = nullptr;
};
class SerialDeviceControlSignalsDataView {
public:
SerialDeviceControlSignalsDataView() {}
SerialDeviceControlSignalsDataView(
internal::SerialDeviceControlSignals_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool dcd() const {
return data_->dcd;
}
bool cts() const {
return data_->cts;
}
bool ri() const {
return data_->ri;
}
bool dsr() const {
return data_->dsr;
}
private:
internal::SerialDeviceControlSignals_Data* data_ = nullptr;
};
class SerialDeviceEnumerator_GetDevices_ParamsDataView {
public:
SerialDeviceEnumerator_GetDevices_ParamsDataView() {}
SerialDeviceEnumerator_GetDevices_ParamsDataView(
internal::SerialDeviceEnumerator_GetDevices_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialDeviceEnumerator_GetDevices_Params_Data* data_ = nullptr;
};
class SerialDeviceEnumerator_GetDevices_ResponseParamsDataView {
public:
SerialDeviceEnumerator_GetDevices_ResponseParamsDataView() {}
SerialDeviceEnumerator_GetDevices_ResponseParamsDataView(
internal::SerialDeviceEnumerator_GetDevices_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetDevicesDataView(
mojo::ArrayDataView<SerialDeviceInfoDataView>* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadDevices(UserType* output) {
auto* pointer = data_->devices.Get();
return mojo::internal::Deserialize<mojo::ArrayDataView<::device::mojom::SerialDeviceInfoDataView>>(
pointer, output, context_);
}
private:
internal::SerialDeviceEnumerator_GetDevices_ResponseParams_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_Open_ParamsDataView {
public:
SerialIoHandler_Open_ParamsDataView() {}
SerialIoHandler_Open_ParamsDataView(
internal::SerialIoHandler_Open_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetPortDataView(
mojo::StringDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadPort(UserType* output) {
auto* pointer = data_->port.Get();
return mojo::internal::Deserialize<mojo::StringDataView>(
pointer, output, context_);
}
inline void GetOptionsDataView(
SerialConnectionOptionsDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadOptions(UserType* output) {
auto* pointer = data_->options.Get();
return mojo::internal::Deserialize<::device::mojom::SerialConnectionOptionsDataView>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_Open_Params_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_Open_ResponseParamsDataView {
public:
SerialIoHandler_Open_ResponseParamsDataView() {}
SerialIoHandler_Open_ResponseParamsDataView(
internal::SerialIoHandler_Open_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_Open_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_Read_ParamsDataView {
public:
SerialIoHandler_Read_ParamsDataView() {}
SerialIoHandler_Read_ParamsDataView(
internal::SerialIoHandler_Read_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
uint32_t bytes() const {
return data_->bytes;
}
private:
internal::SerialIoHandler_Read_Params_Data* data_ = nullptr;
};
class SerialIoHandler_Read_ResponseParamsDataView {
public:
SerialIoHandler_Read_ResponseParamsDataView() {}
SerialIoHandler_Read_ResponseParamsDataView(
internal::SerialIoHandler_Read_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetDataDataView(
mojo::ArrayDataView<uint8_t>* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadData(UserType* output) {
auto* pointer = data_->data.Get();
return mojo::internal::Deserialize<mojo::ArrayDataView<uint8_t>>(
pointer, output, context_);
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadError(UserType* output) const {
auto data_value = data_->error;
return mojo::internal::Deserialize<::device::mojom::SerialReceiveError>(
data_value, output);
}
SerialReceiveError error() const {
return static_cast<SerialReceiveError>(data_->error);
}
private:
internal::SerialIoHandler_Read_ResponseParams_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_Write_ParamsDataView {
public:
SerialIoHandler_Write_ParamsDataView() {}
SerialIoHandler_Write_ParamsDataView(
internal::SerialIoHandler_Write_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetDataDataView(
mojo::ArrayDataView<uint8_t>* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadData(UserType* output) {
auto* pointer = data_->data.Get();
return mojo::internal::Deserialize<mojo::ArrayDataView<uint8_t>>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_Write_Params_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_Write_ResponseParamsDataView {
public:
SerialIoHandler_Write_ResponseParamsDataView() {}
SerialIoHandler_Write_ResponseParamsDataView(
internal::SerialIoHandler_Write_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
uint32_t bytes_written() const {
return data_->bytes_written;
}
template <typename UserType>
WARN_UNUSED_RESULT bool ReadError(UserType* output) const {
auto data_value = data_->error;
return mojo::internal::Deserialize<::device::mojom::SerialSendError>(
data_value, output);
}
SerialSendError error() const {
return static_cast<SerialSendError>(data_->error);
}
private:
internal::SerialIoHandler_Write_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_CancelRead_ParamsDataView {
public:
SerialIoHandler_CancelRead_ParamsDataView() {}
SerialIoHandler_CancelRead_ParamsDataView(
internal::SerialIoHandler_CancelRead_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
template <typename UserType>
WARN_UNUSED_RESULT bool ReadReason(UserType* output) const {
auto data_value = data_->reason;
return mojo::internal::Deserialize<::device::mojom::SerialReceiveError>(
data_value, output);
}
SerialReceiveError reason() const {
return static_cast<SerialReceiveError>(data_->reason);
}
private:
internal::SerialIoHandler_CancelRead_Params_Data* data_ = nullptr;
};
class SerialIoHandler_CancelWrite_ParamsDataView {
public:
SerialIoHandler_CancelWrite_ParamsDataView() {}
SerialIoHandler_CancelWrite_ParamsDataView(
internal::SerialIoHandler_CancelWrite_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
template <typename UserType>
WARN_UNUSED_RESULT bool ReadReason(UserType* output) const {
auto data_value = data_->reason;
return mojo::internal::Deserialize<::device::mojom::SerialSendError>(
data_value, output);
}
SerialSendError reason() const {
return static_cast<SerialSendError>(data_->reason);
}
private:
internal::SerialIoHandler_CancelWrite_Params_Data* data_ = nullptr;
};
class SerialIoHandler_Flush_ParamsDataView {
public:
SerialIoHandler_Flush_ParamsDataView() {}
SerialIoHandler_Flush_ParamsDataView(
internal::SerialIoHandler_Flush_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialIoHandler_Flush_Params_Data* data_ = nullptr;
};
class SerialIoHandler_Flush_ResponseParamsDataView {
public:
SerialIoHandler_Flush_ResponseParamsDataView() {}
SerialIoHandler_Flush_ResponseParamsDataView(
internal::SerialIoHandler_Flush_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_Flush_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_GetControlSignals_ParamsDataView {
public:
SerialIoHandler_GetControlSignals_ParamsDataView() {}
SerialIoHandler_GetControlSignals_ParamsDataView(
internal::SerialIoHandler_GetControlSignals_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialIoHandler_GetControlSignals_Params_Data* data_ = nullptr;
};
class SerialIoHandler_GetControlSignals_ResponseParamsDataView {
public:
SerialIoHandler_GetControlSignals_ResponseParamsDataView() {}
SerialIoHandler_GetControlSignals_ResponseParamsDataView(
internal::SerialIoHandler_GetControlSignals_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetSignalsDataView(
SerialDeviceControlSignalsDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadSignals(UserType* output) {
auto* pointer = data_->signals.Get();
return mojo::internal::Deserialize<::device::mojom::SerialDeviceControlSignalsDataView>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_GetControlSignals_ResponseParams_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_SetControlSignals_ParamsDataView {
public:
SerialIoHandler_SetControlSignals_ParamsDataView() {}
SerialIoHandler_SetControlSignals_ParamsDataView(
internal::SerialIoHandler_SetControlSignals_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetSignalsDataView(
SerialHostControlSignalsDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadSignals(UserType* output) {
auto* pointer = data_->signals.Get();
return mojo::internal::Deserialize<::device::mojom::SerialHostControlSignalsDataView>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_SetControlSignals_Params_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_SetControlSignals_ResponseParamsDataView {
public:
SerialIoHandler_SetControlSignals_ResponseParamsDataView() {}
SerialIoHandler_SetControlSignals_ResponseParamsDataView(
internal::SerialIoHandler_SetControlSignals_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_SetControlSignals_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_ConfigurePort_ParamsDataView {
public:
SerialIoHandler_ConfigurePort_ParamsDataView() {}
SerialIoHandler_ConfigurePort_ParamsDataView(
internal::SerialIoHandler_ConfigurePort_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetOptionsDataView(
SerialConnectionOptionsDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadOptions(UserType* output) {
auto* pointer = data_->options.Get();
return mojo::internal::Deserialize<::device::mojom::SerialConnectionOptionsDataView>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_ConfigurePort_Params_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_ConfigurePort_ResponseParamsDataView {
public:
SerialIoHandler_ConfigurePort_ResponseParamsDataView() {}
SerialIoHandler_ConfigurePort_ResponseParamsDataView(
internal::SerialIoHandler_ConfigurePort_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_ConfigurePort_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_GetPortInfo_ParamsDataView {
public:
SerialIoHandler_GetPortInfo_ParamsDataView() {}
SerialIoHandler_GetPortInfo_ParamsDataView(
internal::SerialIoHandler_GetPortInfo_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialIoHandler_GetPortInfo_Params_Data* data_ = nullptr;
};
class SerialIoHandler_GetPortInfo_ResponseParamsDataView {
public:
SerialIoHandler_GetPortInfo_ResponseParamsDataView() {}
SerialIoHandler_GetPortInfo_ResponseParamsDataView(
internal::SerialIoHandler_GetPortInfo_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data), context_(context) {}
bool is_null() const { return !data_; }
inline void GetInfoDataView(
SerialConnectionInfoDataView* output);
template <typename UserType>
WARN_UNUSED_RESULT bool ReadInfo(UserType* output) {
auto* pointer = data_->info.Get();
return mojo::internal::Deserialize<::device::mojom::SerialConnectionInfoDataView>(
pointer, output, context_);
}
private:
internal::SerialIoHandler_GetPortInfo_ResponseParams_Data* data_ = nullptr;
mojo::internal::SerializationContext* context_ = nullptr;
};
class SerialIoHandler_SetBreak_ParamsDataView {
public:
SerialIoHandler_SetBreak_ParamsDataView() {}
SerialIoHandler_SetBreak_ParamsDataView(
internal::SerialIoHandler_SetBreak_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialIoHandler_SetBreak_Params_Data* data_ = nullptr;
};
class SerialIoHandler_SetBreak_ResponseParamsDataView {
public:
SerialIoHandler_SetBreak_ResponseParamsDataView() {}
SerialIoHandler_SetBreak_ResponseParamsDataView(
internal::SerialIoHandler_SetBreak_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_SetBreak_ResponseParams_Data* data_ = nullptr;
};
class SerialIoHandler_ClearBreak_ParamsDataView {
public:
SerialIoHandler_ClearBreak_ParamsDataView() {}
SerialIoHandler_ClearBreak_ParamsDataView(
internal::SerialIoHandler_ClearBreak_Params_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
private:
internal::SerialIoHandler_ClearBreak_Params_Data* data_ = nullptr;
};
class SerialIoHandler_ClearBreak_ResponseParamsDataView {
public:
SerialIoHandler_ClearBreak_ResponseParamsDataView() {}
SerialIoHandler_ClearBreak_ResponseParamsDataView(
internal::SerialIoHandler_ClearBreak_ResponseParams_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
bool success() const {
return data_->success;
}
private:
internal::SerialIoHandler_ClearBreak_ResponseParams_Data* data_ = nullptr;
};
} // namespace mojom
} // namespace device
namespace std {
template <>
struct hash<::device::mojom::SerialSendError>
: public mojo::internal::EnumHashImpl<::device::mojom::SerialSendError> {};
template <>
struct hash<::device::mojom::SerialReceiveError>
: public mojo::internal::EnumHashImpl<::device::mojom::SerialReceiveError> {};
template <>
struct hash<::device::mojom::SerialDataBits>
: public mojo::internal::EnumHashImpl<::device::mojom::SerialDataBits> {};
template <>
struct hash<::device::mojom::SerialParityBit>
: public mojo::internal::EnumHashImpl<::device::mojom::SerialParityBit> {};
template <>
struct hash<::device::mojom::SerialStopBits>
: public mojo::internal::EnumHashImpl<::device::mojom::SerialStopBits> {};
} // namespace std
namespace mojo {
template <>
struct EnumTraits<::device::mojom::SerialSendError, ::device::mojom::SerialSendError> {
static ::device::mojom::SerialSendError ToMojom(::device::mojom::SerialSendError input) { return input; }
static bool FromMojom(::device::mojom::SerialSendError input, ::device::mojom::SerialSendError* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialSendError, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SerialSendError, UserType>;
static void Serialize(UserType input, int32_t* output) {
*output = static_cast<int32_t>(Traits::ToMojom(input));
}
static bool Deserialize(int32_t input, UserType* output) {
return Traits::FromMojom(static_cast<::device::mojom::SerialSendError>(input), output);
}
};
} // namespace internal
template <>
struct EnumTraits<::device::mojom::SerialReceiveError, ::device::mojom::SerialReceiveError> {
static ::device::mojom::SerialReceiveError ToMojom(::device::mojom::SerialReceiveError input) { return input; }
static bool FromMojom(::device::mojom::SerialReceiveError input, ::device::mojom::SerialReceiveError* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialReceiveError, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SerialReceiveError, UserType>;
static void Serialize(UserType input, int32_t* output) {
*output = static_cast<int32_t>(Traits::ToMojom(input));
}
static bool Deserialize(int32_t input, UserType* output) {
return Traits::FromMojom(static_cast<::device::mojom::SerialReceiveError>(input), output);
}
};
} // namespace internal
template <>
struct EnumTraits<::device::mojom::SerialDataBits, ::device::mojom::SerialDataBits> {
static ::device::mojom::SerialDataBits ToMojom(::device::mojom::SerialDataBits input) { return input; }
static bool FromMojom(::device::mojom::SerialDataBits input, ::device::mojom::SerialDataBits* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialDataBits, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SerialDataBits, UserType>;
static void Serialize(UserType input, int32_t* output) {
*output = static_cast<int32_t>(Traits::ToMojom(input));
}
static bool Deserialize(int32_t input, UserType* output) {
return Traits::FromMojom(static_cast<::device::mojom::SerialDataBits>(input), output);
}
};
} // namespace internal
template <>
struct EnumTraits<::device::mojom::SerialParityBit, ::device::mojom::SerialParityBit> {
static ::device::mojom::SerialParityBit ToMojom(::device::mojom::SerialParityBit input) { return input; }
static bool FromMojom(::device::mojom::SerialParityBit input, ::device::mojom::SerialParityBit* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialParityBit, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SerialParityBit, UserType>;
static void Serialize(UserType input, int32_t* output) {
*output = static_cast<int32_t>(Traits::ToMojom(input));
}
static bool Deserialize(int32_t input, UserType* output) {
return Traits::FromMojom(static_cast<::device::mojom::SerialParityBit>(input), output);
}
};
} // namespace internal
template <>
struct EnumTraits<::device::mojom::SerialStopBits, ::device::mojom::SerialStopBits> {
static ::device::mojom::SerialStopBits ToMojom(::device::mojom::SerialStopBits input) { return input; }
static bool FromMojom(::device::mojom::SerialStopBits input, ::device::mojom::SerialStopBits* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialStopBits, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SerialStopBits, UserType>;
static void Serialize(UserType input, int32_t* output) {
*output = static_cast<int32_t>(Traits::ToMojom(input));
}
static bool Deserialize(int32_t input, UserType* output) {
return Traits::FromMojom(static_cast<::device::mojom::SerialStopBits>(input), output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialDeviceInfoDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SerialDeviceInfoDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SerialDeviceInfo_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
void* custom_context = CustomContextHelper<Traits>::SetUp(input, context);
(*output).Allocate(buffer);
decltype(CallWithContext(Traits::path, input, custom_context)) in_path = CallWithContext(Traits::path, input, custom_context);
typename decltype((*output)->path)::BaseType::BufferWriter
path_writer;
mojo::internal::Serialize<mojo::StringDataView>(
in_path, buffer, &path_writer, context);
(*output)->path.Set(
path_writer.is_null() ? nullptr : path_writer.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
(*output)->path.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null path in SerialDeviceInfo struct");
(*output)->vendor_id = CallWithContext(Traits::vendor_id, input, custom_context);
(*output)->has_vendor_id = CallWithContext(Traits::has_vendor_id, input, custom_context);
(*output)->product_id = CallWithContext(Traits::product_id, input, custom_context);
(*output)->has_product_id = CallWithContext(Traits::has_product_id, input, custom_context);
decltype(CallWithContext(Traits::display_name, input, custom_context)) in_display_name = CallWithContext(Traits::display_name, input, custom_context);
typename decltype((*output)->display_name)::BaseType::BufferWriter
display_name_writer;
mojo::internal::Serialize<mojo::StringDataView>(
in_display_name, buffer, &display_name_writer, context);
(*output)->display_name.Set(
display_name_writer.is_null() ? nullptr : display_name_writer.data());
CustomContextHelper<Traits>::TearDown(input, custom_context);
}
static bool Deserialize(::device::mojom::internal::SerialDeviceInfo_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SerialDeviceInfoDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialConnectionOptionsDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SerialConnectionOptionsDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SerialConnectionOptions_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
void* custom_context = CustomContextHelper<Traits>::SetUp(input, context);
(*output).Allocate(buffer);
(*output)->bitrate = CallWithContext(Traits::bitrate, input, custom_context);
mojo::internal::Serialize<::device::mojom::SerialDataBits>(
CallWithContext(Traits::data_bits, input, custom_context), &(*output)->data_bits);
mojo::internal::Serialize<::device::mojom::SerialParityBit>(
CallWithContext(Traits::parity_bit, input, custom_context), &(*output)->parity_bit);
mojo::internal::Serialize<::device::mojom::SerialStopBits>(
CallWithContext(Traits::stop_bits, input, custom_context), &(*output)->stop_bits);
(*output)->cts_flow_control = CallWithContext(Traits::cts_flow_control, input, custom_context);
(*output)->has_cts_flow_control = CallWithContext(Traits::has_cts_flow_control, input, custom_context);
CustomContextHelper<Traits>::TearDown(input, custom_context);
}
static bool Deserialize(::device::mojom::internal::SerialConnectionOptions_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SerialConnectionOptionsDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialConnectionInfoDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SerialConnectionInfoDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SerialConnectionInfo_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
void* custom_context = CustomContextHelper<Traits>::SetUp(input, context);
(*output).Allocate(buffer);
(*output)->bitrate = CallWithContext(Traits::bitrate, input, custom_context);
mojo::internal::Serialize<::device::mojom::SerialDataBits>(
CallWithContext(Traits::data_bits, input, custom_context), &(*output)->data_bits);
mojo::internal::Serialize<::device::mojom::SerialParityBit>(
CallWithContext(Traits::parity_bit, input, custom_context), &(*output)->parity_bit);
mojo::internal::Serialize<::device::mojom::SerialStopBits>(
CallWithContext(Traits::stop_bits, input, custom_context), &(*output)->stop_bits);
(*output)->cts_flow_control = CallWithContext(Traits::cts_flow_control, input, custom_context);
CustomContextHelper<Traits>::TearDown(input, custom_context);
}
static bool Deserialize(::device::mojom::internal::SerialConnectionInfo_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SerialConnectionInfoDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialHostControlSignalsDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SerialHostControlSignalsDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SerialHostControlSignals_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
void* custom_context = CustomContextHelper<Traits>::SetUp(input, context);
(*output).Allocate(buffer);
(*output)->dtr = CallWithContext(Traits::dtr, input, custom_context);
(*output)->has_dtr = CallWithContext(Traits::has_dtr, input, custom_context);
(*output)->rts = CallWithContext(Traits::rts, input, custom_context);
(*output)->has_rts = CallWithContext(Traits::has_rts, input, custom_context);
CustomContextHelper<Traits>::TearDown(input, custom_context);
}
static bool Deserialize(::device::mojom::internal::SerialHostControlSignals_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SerialHostControlSignalsDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SerialDeviceControlSignalsDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SerialDeviceControlSignalsDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SerialDeviceControlSignals_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
void* custom_context = CustomContextHelper<Traits>::SetUp(input, context);
(*output).Allocate(buffer);
(*output)->dcd = CallWithContext(Traits::dcd, input, custom_context);
(*output)->cts = CallWithContext(Traits::cts, input, custom_context);
(*output)->ri = CallWithContext(Traits::ri, input, custom_context);
(*output)->dsr = CallWithContext(Traits::dsr, input, custom_context);
CustomContextHelper<Traits>::TearDown(input, custom_context);
}
static bool Deserialize(::device::mojom::internal::SerialDeviceControlSignals_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SerialDeviceControlSignalsDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
} // namespace mojo
namespace device {
namespace mojom {
inline void SerialDeviceInfoDataView::GetPathDataView(
mojo::StringDataView* output) {
auto pointer = data_->path.Get();
*output = mojo::StringDataView(pointer, context_);
}
inline void SerialDeviceInfoDataView::GetDisplayNameDataView(
mojo::StringDataView* output) {
auto pointer = data_->display_name.Get();
*output = mojo::StringDataView(pointer, context_);
}
inline void SerialDeviceEnumerator_GetDevices_ResponseParamsDataView::GetDevicesDataView(
mojo::ArrayDataView<SerialDeviceInfoDataView>* output) {
auto pointer = data_->devices.Get();
*output = mojo::ArrayDataView<SerialDeviceInfoDataView>(pointer, context_);
}
inline void SerialIoHandler_Open_ParamsDataView::GetPortDataView(
mojo::StringDataView* output) {
auto pointer = data_->port.Get();
*output = mojo::StringDataView(pointer, context_);
}
inline void SerialIoHandler_Open_ParamsDataView::GetOptionsDataView(
SerialConnectionOptionsDataView* output) {
auto pointer = data_->options.Get();
*output = SerialConnectionOptionsDataView(pointer, context_);
}
inline void SerialIoHandler_Read_ResponseParamsDataView::GetDataDataView(
mojo::ArrayDataView<uint8_t>* output) {
auto pointer = data_->data.Get();
*output = mojo::ArrayDataView<uint8_t>(pointer, context_);
}
inline void SerialIoHandler_Write_ParamsDataView::GetDataDataView(
mojo::ArrayDataView<uint8_t>* output) {
auto pointer = data_->data.Get();
*output = mojo::ArrayDataView<uint8_t>(pointer, context_);
}
inline void SerialIoHandler_GetControlSignals_ResponseParamsDataView::GetSignalsDataView(
SerialDeviceControlSignalsDataView* output) {
auto pointer = data_->signals.Get();
*output = SerialDeviceControlSignalsDataView(pointer, context_);
}
inline void SerialIoHandler_SetControlSignals_ParamsDataView::GetSignalsDataView(
SerialHostControlSignalsDataView* output) {
auto pointer = data_->signals.Get();
*output = SerialHostControlSignalsDataView(pointer, context_);
}
inline void SerialIoHandler_ConfigurePort_ParamsDataView::GetOptionsDataView(
SerialConnectionOptionsDataView* output) {
auto pointer = data_->options.Get();
*output = SerialConnectionOptionsDataView(pointer, context_);
}
inline void SerialIoHandler_GetPortInfo_ResponseParamsDataView::GetInfoDataView(
SerialConnectionInfoDataView* output) {
auto pointer = data_->info.Get();
*output = SerialConnectionInfoDataView(pointer, context_);
}
} // namespace mojom
} // namespace device
#endif // SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_SHARED_H_