blob: df9ad0dbc1234f18f3fc28922285731616ed3376 [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_MOJOM_SENSOR_MOJOM_SHARED_H_
#define SERVICES_DEVICE_PUBLIC_MOJOM_SENSOR_MOJOM_SHARED_H_
#include <stdint.h>
#include <functional>
#include <ostream>
#include <type_traits>
#include <utility>
#include "base/compiler_specific.h"
#include "base/containers/flat_map.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/mojom/sensor.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"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace device {
namespace mojom {
class SensorConfigurationDataView;
} // namespace mojom
} // namespace device
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::device::mojom::SensorConfigurationDataView> {
using Data = ::device::mojom::internal::SensorConfiguration_Data;
using DataAsArrayElement = Pointer<Data>;
static constexpr MojomTypeCategory category = MojomTypeCategory::STRUCT;
};
} // namespace internal
} // namespace mojo
namespace device {
namespace mojom {
// @generated_from: device.mojom.SensorType
enum class SensorType : int32_t {
// @generated_from: device.mojom.SensorType.AMBIENT_LIGHT
AMBIENT_LIGHT,
// @generated_from: device.mojom.SensorType.PROXIMITY
PROXIMITY,
// @generated_from: device.mojom.SensorType.ACCELEROMETER
ACCELEROMETER,
// @generated_from: device.mojom.SensorType.LINEAR_ACCELERATION
LINEAR_ACCELERATION,
// @generated_from: device.mojom.SensorType.GYROSCOPE
GYROSCOPE,
// @generated_from: device.mojom.SensorType.MAGNETOMETER
MAGNETOMETER,
// @generated_from: device.mojom.SensorType.PRESSURE
PRESSURE,
// @generated_from: device.mojom.SensorType.ABSOLUTE_ORIENTATION_EULER_ANGLES
ABSOLUTE_ORIENTATION_EULER_ANGLES,
// @generated_from: device.mojom.SensorType.ABSOLUTE_ORIENTATION_QUATERNION
ABSOLUTE_ORIENTATION_QUATERNION,
// @generated_from: device.mojom.SensorType.RELATIVE_ORIENTATION_EULER_ANGLES
RELATIVE_ORIENTATION_EULER_ANGLES,
// @generated_from: device.mojom.SensorType.RELATIVE_ORIENTATION_QUATERNION
RELATIVE_ORIENTATION_QUATERNION,
kMinValue = 0,
kMaxValue = 10,
};
std::ostream& operator<<(std::ostream& os, SensorType value);
inline bool IsKnownEnumValue(SensorType value) {
return internal::SensorType_Data::IsKnownValue(
static_cast<int32_t>(value));
}
// @generated_from: device.mojom.ReportingMode
enum class ReportingMode : int32_t {
// @generated_from: device.mojom.ReportingMode.ON_CHANGE
ON_CHANGE,
// @generated_from: device.mojom.ReportingMode.CONTINUOUS
CONTINUOUS,
kMinValue = 0,
kMaxValue = 1,
};
std::ostream& operator<<(std::ostream& os, ReportingMode value);
inline bool IsKnownEnumValue(ReportingMode value) {
return internal::ReportingMode_Data::IsKnownValue(
static_cast<int32_t>(value));
}
// Interface base classes. They are used for type safety check.
class SensorInterfaceBase {};
using SensorPtrDataView =
mojo::InterfacePtrDataView<SensorInterfaceBase>;
using SensorRequestDataView =
mojo::InterfaceRequestDataView<SensorInterfaceBase>;
using SensorAssociatedPtrInfoDataView =
mojo::AssociatedInterfacePtrInfoDataView<SensorInterfaceBase>;
using SensorAssociatedRequestDataView =
mojo::AssociatedInterfaceRequestDataView<SensorInterfaceBase>;
class SensorClientInterfaceBase {};
using SensorClientPtrDataView =
mojo::InterfacePtrDataView<SensorClientInterfaceBase>;
using SensorClientRequestDataView =
mojo::InterfaceRequestDataView<SensorClientInterfaceBase>;
using SensorClientAssociatedPtrInfoDataView =
mojo::AssociatedInterfacePtrInfoDataView<SensorClientInterfaceBase>;
using SensorClientAssociatedRequestDataView =
mojo::AssociatedInterfaceRequestDataView<SensorClientInterfaceBase>;
class SensorConfigurationDataView {
public:
SensorConfigurationDataView() {}
SensorConfigurationDataView(
internal::SensorConfiguration_Data* data,
mojo::internal::SerializationContext* context)
: data_(data) {}
bool is_null() const { return !data_; }
double frequency() const {
return data_->frequency;
}
private:
internal::SensorConfiguration_Data* data_ = nullptr;
};
} // namespace mojom
} // namespace device
namespace std {
template <>
struct hash<::device::mojom::SensorType>
: public mojo::internal::EnumHashImpl<::device::mojom::SensorType> {};
template <>
struct hash<::device::mojom::ReportingMode>
: public mojo::internal::EnumHashImpl<::device::mojom::ReportingMode> {};
} // namespace std
namespace mojo {
template <>
struct EnumTraits<::device::mojom::SensorType, ::device::mojom::SensorType> {
static ::device::mojom::SensorType ToMojom(::device::mojom::SensorType input) { return input; }
static bool FromMojom(::device::mojom::SensorType input, ::device::mojom::SensorType* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SensorType, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::SensorType, 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::SensorType>(input), output);
}
};
} // namespace internal
template <>
struct EnumTraits<::device::mojom::ReportingMode, ::device::mojom::ReportingMode> {
static ::device::mojom::ReportingMode ToMojom(::device::mojom::ReportingMode input) { return input; }
static bool FromMojom(::device::mojom::ReportingMode input, ::device::mojom::ReportingMode* output) {
*output = input;
return true;
}
};
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::ReportingMode, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = EnumTraits<::device::mojom::ReportingMode, 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::ReportingMode>(input), output);
}
};
} // namespace internal
namespace internal {
template <typename MaybeConstUserType>
struct Serializer<::device::mojom::SensorConfigurationDataView, MaybeConstUserType> {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = StructTraits<::device::mojom::SensorConfigurationDataView, UserType>;
static void Serialize(MaybeConstUserType& input,
Buffer* buffer,
::device::mojom::internal::SensorConfiguration_Data::BufferWriter* output,
SerializationContext* context) {
if (CallIsNullIfExists<Traits>(input))
return;
(*output).Allocate(buffer);
(*output)->frequency = Traits::frequency(input);
}
static bool Deserialize(::device::mojom::internal::SensorConfiguration_Data* input,
UserType* output,
SerializationContext* context) {
if (!input)
return CallSetToNullIfExists<Traits>(output);
::device::mojom::SensorConfigurationDataView data_view(input, context);
return Traits::Read(data_view, output);
}
};
} // namespace internal
} // namespace mojo
namespace device {
namespace mojom {
} // namespace mojom
} // namespace device
#endif // SERVICES_DEVICE_PUBLIC_MOJOM_SENSOR_MOJOM_SHARED_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMTc4MCwgImJlZ2luIjogMTc3MCwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZW5zb3JUeXBlIn19LCB7ImVu
ZCI6IDE4NjksICJiZWdpbiI6IDE4NTYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp
Z25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2Vuc29yVHlwZS5BTUJJRU5UX0xJR0hUIn19LCB7ImVu
ZCI6IDE5MzksICJiZWdpbiI6IDE5MzAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp
Z25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2Vuc29yVHlwZS5QUk9YSU1JVFkifX0sIHsiZW5kIjog
MjAxNywgImJlZ2luIjogMjAwNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0
dXJlIjogImRldmljZS5tb2pvbS5TZW5zb3JUeXBlLkFDQ0VMRVJPTUVURVIifX0sIHsiZW5kIjog
MjEwNywgImJlZ2luIjogMjA4OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0
dXJlIjogImRldmljZS5tb2pvbS5TZW5zb3JUeXBlLkxJTkVBUl9BQ0NFTEVSQVRJT04ifX0sIHsi
ZW5kIjogMjE3NywgImJlZ2luIjogMjE2OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAi
c2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZW5zb3JUeXBlLkdZUk9TQ09QRSJ9fSwgeyJlbmQi
OiAyMjUzLCAiYmVnaW4iOiAyMjQxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
YXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlbnNvclR5cGUuTUFHTkVUT01FVEVSIn19LCB7ImVuZCI6
IDIzMjEsICJiZWdpbiI6IDIzMTMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJkZXZpY2UubW9qb20uU2Vuc29yVHlwZS5QUkVTU1VSRSJ9fSwgeyJlbmQiOiAyNDM5
LCAiYmVnaW4iOiAyNDA2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi
OiAiZGV2aWNlLm1vam9tLlNlbnNvclR5cGUuQUJTT0xVVEVfT1JJRU5UQVRJT05fRVVMRVJfQU5H
TEVTIn19LCB7ImVuZCI6IDI1NTMsICJiZWdpbiI6IDI1MjIsICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
Im1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2Vuc29yVHlwZS5BQlNPTFVURV9P
UklFTlRBVElPTl9RVUFURVJOSU9OIn19LCB7ImVuZCI6IDI2NzEsICJiZWdpbiI6IDI2MzgsICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2Vu
c29yVHlwZS5SRUxBVElWRV9PUklFTlRBVElPTl9FVUxFUl9BTkdMRVMifX0sIHsiZW5kIjogMjc4
NSwgImJlZ2luIjogMjc1NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogImRldmljZS5tb2pvbS5TZW5zb3JUeXBlLlJFTEFUSVZFX09SSUVOVEFUSU9OX1FVQVRFUk5J
T04ifX0sIHsiZW5kIjogMzA5OSwgImJlZ2luIjogMzA4NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
bW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5SZXBvcnRpbmdNb2RlIn19LCB7ImVu
ZCI6IDMxODMsICJiZWdpbiI6IDMxNzQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
LCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNp
Z25hdHVyZSI6ICJkZXZpY2UubW9qb20uUmVwb3J0aW5nTW9kZS5PTl9DSEFOR0UifX0sIHsiZW5k
IjogMzI1OCwgImJlZ2luIjogMzI0OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
bmF0dXJlIjogImRldmljZS5tb2pvbS5SZXBvcnRpbmdNb2RlLkNPTlRJTlVPVVMifX1dLCAidHlw
ZSI6ICJreXRoZTAifQ==
*/