1ef456c07c1738f624e95259878d41305129e64d9Brian Duddie// automatically generated by the FlatBuffers compiler, do not modify
2ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
3ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
4ef456c07c1738f624e95259878d41305129e64d9Brian Duddie#ifndef FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
5ef456c07c1738f624e95259878d41305129e64d9Brian Duddie#define FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
6ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
7ef456c07c1738f624e95259878d41305129e64d9Brian Duddie#include "flatbuffers/flatbuffers.h"
8ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
9ef456c07c1738f624e95259878d41305129e64d9Brian Duddienamespace chre {
10ef456c07c1738f624e95259878d41305129e64d9Brian Duddienamespace fbs {
11ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
12ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct NanoappMessage;
13ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
147621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoRequest;
157621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
167621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoResponse;
177621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
18a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListRequest;
19a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
20a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListEntry;
21a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
22a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListResponse;
23a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
2447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappRequest;
2547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
2647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappResponse;
2747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
28f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddiestruct HostAddress;
29f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie
30ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct MessageContainer;
31ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
32ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// A union that joins together all possible messages. Note that in FlatBuffers,
33ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// unions have an implicit type
34ef456c07c1738f624e95259878d41305129e64d9Brian Duddieenum class ChreMessage : uint8_t {
35ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  NONE = 0,
36ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  NanoappMessage = 1,
377621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoRequest = 2,
387621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoResponse = 3,
39a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListRequest = 4,
40a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListResponse = 5,
4147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappRequest = 6,
4247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappResponse = 7,
43ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  MIN = NONE,
4447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  MAX = LoadNanoappResponse
45ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
46ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
47ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline const char **EnumNamesChreMessage() {
48ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  static const char *names[] = {
49ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    "NONE",
50ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    "NanoappMessage",
517621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    "HubInfoRequest",
527621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    "HubInfoResponse",
53a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    "NanoappListRequest",
54a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    "NanoappListResponse",
5547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    "LoadNanoappRequest",
5647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    "LoadNanoappResponse",
57ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    nullptr
58ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  };
59ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return names;
60ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
61ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
62ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline const char *EnumNameChreMessage(ChreMessage e) {
63ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  const size_t index = static_cast<int>(e);
64ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return EnumNamesChreMessage()[index];
65ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
66ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
67ef456c07c1738f624e95259878d41305129e64d9Brian Duddietemplate<typename T> struct ChreMessageTraits {
68ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  static const ChreMessage enum_value = ChreMessage::NONE;
69ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
70ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
71ef456c07c1738f624e95259878d41305129e64d9Brian Duddietemplate<> struct ChreMessageTraits<NanoappMessage> {
72ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  static const ChreMessage enum_value = ChreMessage::NanoappMessage;
73ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
74ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
757621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddietemplate<> struct ChreMessageTraits<HubInfoRequest> {
767621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  static const ChreMessage enum_value = ChreMessage::HubInfoRequest;
777621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
787621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
797621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddietemplate<> struct ChreMessageTraits<HubInfoResponse> {
807621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  static const ChreMessage enum_value = ChreMessage::HubInfoResponse;
817621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
827621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
83a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddietemplate<> struct ChreMessageTraits<NanoappListRequest> {
84a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  static const ChreMessage enum_value = ChreMessage::NanoappListRequest;
85a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
86a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
87a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddietemplate<> struct ChreMessageTraits<NanoappListResponse> {
88a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  static const ChreMessage enum_value = ChreMessage::NanoappListResponse;
89a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
90a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
9147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddietemplate<> struct ChreMessageTraits<LoadNanoappRequest> {
9247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  static const ChreMessage enum_value = ChreMessage::LoadNanoappRequest;
9347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
9447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
9547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddietemplate<> struct ChreMessageTraits<LoadNanoappResponse> {
9647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  static const ChreMessage enum_value = ChreMessage::LoadNanoappResponse;
9747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
9847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
99ef456c07c1738f624e95259878d41305129e64d9Brian Duddiebool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type);
100ef456c07c1738f624e95259878d41305129e64d9Brian Duddiebool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
101ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
102f685db3a6b34f8dd6942964ae99836bda87c8134Brian DuddieMANUALLY_ALIGNED_STRUCT(2) HostAddress FLATBUFFERS_FINAL_CLASS {
103f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie private:
104f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  uint16_t client_id_;
105f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie
106f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie public:
107f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  HostAddress() {
108f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    memset(this, 0, sizeof(HostAddress));
109f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
110f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  HostAddress(const HostAddress &_o) {
111f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    memcpy(this, &_o, sizeof(HostAddress));
112f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
113f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  HostAddress(uint16_t _client_id)
114f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie      : client_id_(flatbuffers::EndianScalar(_client_id)) {
115f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
116f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  uint16_t client_id() const {
117f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    return flatbuffers::EndianScalar(client_id_);
118f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
119f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie};
120f685db3a6b34f8dd6942964ae99836bda87c8134Brian DuddieSTRUCT_END(HostAddress, 2);
121f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie
122ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// Represents a message sent to/from a nanoapp from/to a client on the host
123ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct NanoappMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
124ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  enum {
125ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    VT_APP_ID = 4,
126ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    VT_MESSAGE_TYPE = 6,
127ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    VT_HOST_ENDPOINT = 8,
128ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    VT_MESSAGE = 10
129ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  };
130ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  uint64_t app_id() const {
131ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return GetField<uint64_t>(VT_APP_ID, 0);
132ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
133ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  uint32_t message_type() const {
134ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return GetField<uint32_t>(VT_MESSAGE_TYPE, 0);
135ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
1362b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie  /// Identifies the host-side endpoint on the host that sent or should receive
1372b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie  /// this message. The default value is a special value defined in the HAL and
1382b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie  /// elsewhere that indicates that the endpoint is unspecified.
139ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  uint16_t host_endpoint() const {
1402b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie    return GetField<uint16_t>(VT_HOST_ENDPOINT, 65534);
141ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
142ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  /// Vector containing arbitrary application-specific message data
143ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  const flatbuffers::Vector<uint8_t> *message() const {
144ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
145ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
146ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
147ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return VerifyTableStart(verifier) &&
148ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           VerifyField<uint64_t>(verifier, VT_APP_ID) &&
149ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           VerifyField<uint32_t>(verifier, VT_MESSAGE_TYPE) &&
150ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
15172833b2fba97751b31b27422d117b05f718760fdBrian Duddie           VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) &&
152ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           verifier.Verify(message()) &&
153ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           verifier.EndTable();
154ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
155ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
156ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
157ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct NanoappMessageBuilder {
158ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
159ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::uoffset_t start_;
160ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_app_id(uint64_t app_id) {
161ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    fbb_.AddElement<uint64_t>(NanoappMessage::VT_APP_ID, app_id, 0);
162ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
163ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_message_type(uint32_t message_type) {
164ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_TYPE, message_type, 0);
165ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
166ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_host_endpoint(uint16_t host_endpoint) {
1672b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie    fbb_.AddElement<uint16_t>(NanoappMessage::VT_HOST_ENDPOINT, host_endpoint, 65534);
168ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
169ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_message(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message) {
170ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    fbb_.AddOffset(NanoappMessage::VT_MESSAGE, message);
171ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
172ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  NanoappMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
173ef456c07c1738f624e95259878d41305129e64d9Brian Duddie        : fbb_(_fbb) {
174ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    start_ = fbb_.StartTable();
175ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
176ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  NanoappMessageBuilder &operator=(const NanoappMessageBuilder &);
177ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::Offset<NanoappMessage> Finish() {
178ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    const auto end = fbb_.EndTable(start_, 4);
179ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    auto o = flatbuffers::Offset<NanoappMessage>(end);
18072833b2fba97751b31b27422d117b05f718760fdBrian Duddie    fbb_.Required(o, NanoappMessage::VT_MESSAGE);
181ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return o;
182ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
183ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
184ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
185ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(
186ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
187ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    uint64_t app_id = 0,
188ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    uint32_t message_type = 0,
1892b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie    uint16_t host_endpoint = 65534,
190ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message = 0) {
191ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  NanoappMessageBuilder builder_(_fbb);
192ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_app_id(app_id);
193ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_message(message);
194ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_message_type(message_type);
195ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_host_endpoint(host_endpoint);
196ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return builder_.Finish();
197ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
198ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
199ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline flatbuffers::Offset<NanoappMessage> CreateNanoappMessageDirect(
200ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
201ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    uint64_t app_id = 0,
202ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    uint32_t message_type = 0,
2032b46a6783ca5dab54c7bbea0b8cac98ee0e712fcBrian Duddie    uint16_t host_endpoint = 65534,
204ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    const std::vector<uint8_t> *message = nullptr) {
205ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return chre::fbs::CreateNanoappMessage(
206ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      _fbb,
207ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      app_id,
208ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      message_type,
209ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      host_endpoint,
210ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      message ? _fbb.CreateVector<uint8_t>(*message) : 0);
211ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
212ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
2137621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2147621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
2157621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return VerifyTableStart(verifier) &&
2167621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           verifier.EndTable();
2177621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2187621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
2197621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
2207621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoRequestBuilder {
2217621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
2227621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::uoffset_t start_;
2237621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2247621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie        : fbb_(_fbb) {
2257621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    start_ = fbb_.StartTable();
2267621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2277621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoRequestBuilder &operator=(const HubInfoRequestBuilder &);
2287621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::Offset<HubInfoRequest> Finish() {
2297621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    const auto end = fbb_.EndTable(start_, 0);
2307621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    auto o = flatbuffers::Offset<HubInfoRequest>(end);
2317621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return o;
2327621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2337621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
2347621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
2357621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddieinline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(
2367621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb) {
2377621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoRequestBuilder builder_(_fbb);
2387621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  return builder_.Finish();
2397621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie}
2407621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
2417621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2427621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  enum {
2437621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_NAME = 4,
2447621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_VENDOR = 6,
2457621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_TOOLCHAIN = 8,
2467621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_PLATFORM_VERSION = 10,
2477621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_TOOLCHAIN_VERSION = 12,
2487621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_PEAK_MIPS = 14,
2497621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_STOPPED_POWER = 16,
2507621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_SLEEP_POWER = 18,
2517621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_PEAK_POWER = 20,
2527621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_MAX_MSG_LEN = 22,
2537621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_PLATFORM_ID = 24,
2547621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    VT_CHRE_PLATFORM_VERSION = 26
2557621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  };
2567621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// The name of the hub. Nominally a UTF-8 string, but note that we're not
2577621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// using the built-in "string" data type from FlatBuffers here, because the
2587621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// generated C++ uses std::string which is not well-supported in CHRE. This
2597621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// applies for vendor and toolchain as well.
2607621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  const flatbuffers::Vector<int8_t> *name() const {
2617621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
2627621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2637621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  const flatbuffers::Vector<int8_t> *vendor() const {
2647621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_VENDOR);
2657621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2667621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  const flatbuffers::Vector<int8_t> *toolchain() const {
2677621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
2687621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2697621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// Legacy platform version reported in the HAL; semantics not strictly
2707621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// defined
2717621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  uint32_t platform_version() const {
2727621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<uint32_t>(VT_PLATFORM_VERSION, 0);
2737621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2747621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// Toolchain version reported in the HAL; semantics not strictly defined
2757621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  uint32_t toolchain_version() const {
2767621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<uint32_t>(VT_TOOLCHAIN_VERSION, 0);
2777621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2787621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  float peak_mips() const {
2797621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<float>(VT_PEAK_MIPS, 0.0f);
2807621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2817621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  float stopped_power() const {
2827621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<float>(VT_STOPPED_POWER, 0.0f);
2837621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2847621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  float sleep_power() const {
2857621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<float>(VT_SLEEP_POWER, 0.0f);
2867621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2877621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  float peak_power() const {
2887621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<float>(VT_PEAK_POWER, 0.0f);
2897621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2907621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// Maximum size message that can be sent to a nanoapp
2917621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  uint32_t max_msg_len() const {
2927621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<uint32_t>(VT_MAX_MSG_LEN, 0);
2937621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2947621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// @see chreGetPlatformId()
2957621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  uint64_t platform_id() const {
2967621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<uint64_t>(VT_PLATFORM_ID, 0);
2977621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
2987621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  /// @see chreGetVersion()
2997621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  uint32_t chre_platform_version() const {
3007621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return GetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, 0);
3017621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3027621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
3037621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return VerifyTableStart(verifier) &&
3047621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
3057621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           verifier.Verify(name()) &&
3067621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<flatbuffers::uoffset_t>(verifier, VT_VENDOR) &&
3077621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           verifier.Verify(vendor()) &&
3087621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<flatbuffers::uoffset_t>(verifier, VT_TOOLCHAIN) &&
3097621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           verifier.Verify(toolchain()) &&
3107621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<uint32_t>(verifier, VT_PLATFORM_VERSION) &&
3117621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<uint32_t>(verifier, VT_TOOLCHAIN_VERSION) &&
3127621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<float>(verifier, VT_PEAK_MIPS) &&
3137621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<float>(verifier, VT_STOPPED_POWER) &&
3147621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<float>(verifier, VT_SLEEP_POWER) &&
3157621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<float>(verifier, VT_PEAK_POWER) &&
3167621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<uint32_t>(verifier, VT_MAX_MSG_LEN) &&
3177621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<uint64_t>(verifier, VT_PLATFORM_ID) &&
3187621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyField<uint32_t>(verifier, VT_CHRE_PLATFORM_VERSION) &&
3197621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           verifier.EndTable();
3207621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3217621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
3227621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
3237621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddiestruct HubInfoResponseBuilder {
3247621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
3257621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::uoffset_t start_;
3267621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
3277621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddOffset(HubInfoResponse::VT_NAME, name);
3287621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3297621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_vendor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor) {
3307621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddOffset(HubInfoResponse::VT_VENDOR, vendor);
3317621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3327621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_toolchain(flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain) {
3337621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddOffset(HubInfoResponse::VT_TOOLCHAIN, toolchain);
3347621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3357621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_platform_version(uint32_t platform_version) {
3367621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<uint32_t>(HubInfoResponse::VT_PLATFORM_VERSION, platform_version, 0);
3377621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3387621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_toolchain_version(uint32_t toolchain_version) {
3397621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<uint32_t>(HubInfoResponse::VT_TOOLCHAIN_VERSION, toolchain_version, 0);
3407621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3417621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_peak_mips(float peak_mips) {
3427621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_MIPS, peak_mips, 0.0f);
3437621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3447621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_stopped_power(float stopped_power) {
3457621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<float>(HubInfoResponse::VT_STOPPED_POWER, stopped_power, 0.0f);
3467621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3477621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_sleep_power(float sleep_power) {
3487621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<float>(HubInfoResponse::VT_SLEEP_POWER, sleep_power, 0.0f);
3497621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3507621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_peak_power(float peak_power) {
3517621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_POWER, peak_power, 0.0f);
3527621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3537621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_max_msg_len(uint32_t max_msg_len) {
3547621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<uint32_t>(HubInfoResponse::VT_MAX_MSG_LEN, max_msg_len, 0);
3557621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3567621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_platform_id(uint64_t platform_id) {
3577621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<uint64_t>(HubInfoResponse::VT_PLATFORM_ID, platform_id, 0);
3587621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3597621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  void add_chre_platform_version(uint32_t chre_platform_version) {
3607621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.AddElement<uint32_t>(HubInfoResponse::VT_CHRE_PLATFORM_VERSION, chre_platform_version, 0);
3617621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3627621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3637621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie        : fbb_(_fbb) {
3647621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    start_ = fbb_.StartTable();
3657621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3667621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoResponseBuilder &operator=(const HubInfoResponseBuilder &);
3677621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  flatbuffers::Offset<HubInfoResponse> Finish() {
3687621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    const auto end = fbb_.EndTable(start_, 12);
3697621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    auto o = flatbuffers::Offset<HubInfoResponse>(end);
3707621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    return o;
3717621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  }
3727621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie};
3737621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
3747621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddieinline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(
3757621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
3767621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
3777621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor = 0,
3787621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain = 0,
3797621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t platform_version = 0,
3807621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t toolchain_version = 0,
3817621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float peak_mips = 0.0f,
3827621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float stopped_power = 0.0f,
3837621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float sleep_power = 0.0f,
3847621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float peak_power = 0.0f,
3857621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t max_msg_len = 0,
3867621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint64_t platform_id = 0,
3877621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t chre_platform_version = 0) {
3887621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  HubInfoResponseBuilder builder_(_fbb);
3897621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_platform_id(platform_id);
3907621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_chre_platform_version(chre_platform_version);
3917621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_max_msg_len(max_msg_len);
3927621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_peak_power(peak_power);
3937621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_sleep_power(sleep_power);
3947621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_stopped_power(stopped_power);
3957621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_peak_mips(peak_mips);
3967621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_toolchain_version(toolchain_version);
3977621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_platform_version(platform_version);
3987621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_toolchain(toolchain);
3997621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_vendor(vendor);
4007621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  builder_.add_name(name);
4017621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  return builder_.Finish();
4027621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie}
4037621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
4047621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddieinline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponseDirect(
4057621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
4067621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    const std::vector<int8_t> *name = nullptr,
4077621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    const std::vector<int8_t> *vendor = nullptr,
4087621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    const std::vector<int8_t> *toolchain = nullptr,
4097621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t platform_version = 0,
4107621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t toolchain_version = 0,
4117621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float peak_mips = 0.0f,
4127621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float stopped_power = 0.0f,
4137621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float sleep_power = 0.0f,
4147621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    float peak_power = 0.0f,
4157621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t max_msg_len = 0,
4167621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint64_t platform_id = 0,
4177621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    uint32_t chre_platform_version = 0) {
4187621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie  return chre::fbs::CreateHubInfoResponse(
4197621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      _fbb,
4207621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      name ? _fbb.CreateVector<int8_t>(*name) : 0,
4217621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      vendor ? _fbb.CreateVector<int8_t>(*vendor) : 0,
4227621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      toolchain ? _fbb.CreateVector<int8_t>(*toolchain) : 0,
4237621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      platform_version,
4247621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      toolchain_version,
4257621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      peak_mips,
4267621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      stopped_power,
4277621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      sleep_power,
4287621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      peak_power,
4297621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      max_msg_len,
4307621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      platform_id,
4317621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      chre_platform_version);
4327621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie}
4337621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie
434a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
435a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
436a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return VerifyTableStart(verifier) &&
437a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           verifier.EndTable();
438a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
439a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
440a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
441a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListRequestBuilder {
442a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
443a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::uoffset_t start_;
444a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
445a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie        : fbb_(_fbb) {
446a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    start_ = fbb_.StartTable();
447a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
448a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListRequestBuilder &operator=(const NanoappListRequestBuilder &);
449a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::Offset<NanoappListRequest> Finish() {
450a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    const auto end = fbb_.EndTable(start_, 0);
451a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    auto o = flatbuffers::Offset<NanoappListRequest>(end);
452a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return o;
453a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
454a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
455a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
456a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddieinline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(
457a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb) {
458a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListRequestBuilder builder_(_fbb);
459a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  return builder_.Finish();
460a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie}
461a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
462a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
463a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  enum {
464a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    VT_APP_ID = 4,
465a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    VT_VERSION = 6,
466a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    VT_ENABLED = 8,
467a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    VT_IS_SYSTEM = 10
468a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  };
469a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  uint64_t app_id() const {
470a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return GetField<uint64_t>(VT_APP_ID, 0);
471a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
472a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  uint32_t version() const {
473a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return GetField<uint32_t>(VT_VERSION, 0);
474a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
475a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  bool enabled() const {
476a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return GetField<uint8_t>(VT_ENABLED, 1) != 0;
477a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
478a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  /// Whether the nanoapp is a pre-loaded "system" nanoapp, i.e. one that should
479a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  /// not show up in the list of nanoapps in the context hub HAL. System
480a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  /// nanoapps are typically used to leverage CHRE for some device functionality
481a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  /// and do not interact via the context hub HAL.
482a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  bool is_system() const {
483a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return GetField<uint8_t>(VT_IS_SYSTEM, 0) != 0;
484a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
485a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
486a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return VerifyTableStart(verifier) &&
487a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           VerifyField<uint64_t>(verifier, VT_APP_ID) &&
488a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           VerifyField<uint32_t>(verifier, VT_VERSION) &&
489a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           VerifyField<uint8_t>(verifier, VT_ENABLED) &&
490a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           VerifyField<uint8_t>(verifier, VT_IS_SYSTEM) &&
491a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           verifier.EndTable();
492a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
493a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
494a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
495a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListEntryBuilder {
496a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
497a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::uoffset_t start_;
498a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  void add_app_id(uint64_t app_id) {
499a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.AddElement<uint64_t>(NanoappListEntry::VT_APP_ID, app_id, 0);
500a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
501a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  void add_version(uint32_t version) {
502a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.AddElement<uint32_t>(NanoappListEntry::VT_VERSION, version, 0);
503a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
504a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  void add_enabled(bool enabled) {
505a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.AddElement<uint8_t>(NanoappListEntry::VT_ENABLED, static_cast<uint8_t>(enabled), 1);
506a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
507a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  void add_is_system(bool is_system) {
508a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.AddElement<uint8_t>(NanoappListEntry::VT_IS_SYSTEM, static_cast<uint8_t>(is_system), 0);
509a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
510a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
511a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie        : fbb_(_fbb) {
512a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    start_ = fbb_.StartTable();
513a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
514a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListEntryBuilder &operator=(const NanoappListEntryBuilder &);
515a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::Offset<NanoappListEntry> Finish() {
516a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    const auto end = fbb_.EndTable(start_, 4);
517a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    auto o = flatbuffers::Offset<NanoappListEntry>(end);
518a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return o;
519a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
520a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
521a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
522a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddieinline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(
523a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
524a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    uint64_t app_id = 0,
525a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    uint32_t version = 0,
526a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    bool enabled = true,
527a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    bool is_system = false) {
528a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListEntryBuilder builder_(_fbb);
529a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  builder_.add_app_id(app_id);
530a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  builder_.add_version(version);
531a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  builder_.add_is_system(is_system);
532a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  builder_.add_enabled(enabled);
533a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  return builder_.Finish();
534a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie}
535a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
536a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
537a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  enum {
538a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    VT_NANOAPPS = 4
539a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  };
540a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  const flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *nanoapps() const {
541a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *>(VT_NANOAPPS);
542a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
543a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
544a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return VerifyTableStart(verifier) &&
545a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NANOAPPS) &&
546a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           verifier.Verify(nanoapps()) &&
547a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           verifier.VerifyVectorOfTables(nanoapps()) &&
548a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie           verifier.EndTable();
549a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
550a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
551a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
552a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddiestruct NanoappListResponseBuilder {
553a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
554a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::uoffset_t start_;
555a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  void add_nanoapps(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>>> nanoapps) {
556a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.AddOffset(NanoappListResponse::VT_NANOAPPS, nanoapps);
557a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
558a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
559a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie        : fbb_(_fbb) {
560a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    start_ = fbb_.StartTable();
561a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
562a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListResponseBuilder &operator=(const NanoappListResponseBuilder &);
563a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  flatbuffers::Offset<NanoappListResponse> Finish() {
564a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    const auto end = fbb_.EndTable(start_, 1);
565a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    auto o = flatbuffers::Offset<NanoappListResponse>(end);
566a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    fbb_.Required(o, NanoappListResponse::VT_NANOAPPS);
567a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    return o;
568a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  }
569a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie};
570a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
571a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddieinline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(
572a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
573a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>>> nanoapps = 0) {
574a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  NanoappListResponseBuilder builder_(_fbb);
575a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  builder_.add_nanoapps(nanoapps);
576a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  return builder_.Finish();
577a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie}
578a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
579a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddieinline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponseDirect(
580a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
581a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    const std::vector<flatbuffers::Offset<NanoappListEntry>> *nanoapps = nullptr) {
582a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie  return chre::fbs::CreateNanoappListResponse(
583a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      _fbb,
584a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      nanoapps ? _fbb.CreateVector<flatbuffers::Offset<NanoappListEntry>>(*nanoapps) : 0);
585a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie}
586a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie
58747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
58847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  enum {
58947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_TRANSACTION_ID = 4,
59047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_APP_ID = 6,
59147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_APP_VERSION = 8,
59247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_TARGET_API_VERSION = 10,
59347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_APP_BINARY = 12
59447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  };
59547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  uint32_t transaction_id() const {
59647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
59747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
59847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  uint64_t app_id() const {
59947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint64_t>(VT_APP_ID, 0);
60047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
60147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  uint32_t app_version() const {
60247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint32_t>(VT_APP_VERSION, 0);
60347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
60447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  uint32_t target_api_version() const {
60547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint32_t>(VT_TARGET_API_VERSION, 0);
60647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
60747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  const flatbuffers::Vector<uint8_t> *app_binary() const {
60847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
60947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
61047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
61147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return VerifyTableStart(verifier) &&
61247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
61347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint64_t>(verifier, VT_APP_ID) &&
61447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint32_t>(verifier, VT_APP_VERSION) &&
61547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint32_t>(verifier, VT_TARGET_API_VERSION) &&
61647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_APP_BINARY) &&
61747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           verifier.Verify(app_binary()) &&
61847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           verifier.EndTable();
61947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
62047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
62147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
62247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappRequestBuilder {
62347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
62447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::uoffset_t start_;
62547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_transaction_id(uint32_t transaction_id) {
62647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
62747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
62847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_app_id(uint64_t app_id) {
62947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint64_t>(LoadNanoappRequest::VT_APP_ID, app_id, 0);
63047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
63147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_app_version(uint32_t app_version) {
63247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_VERSION, app_version, 0);
63347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
63447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_target_api_version(uint32_t target_api_version) {
63547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TARGET_API_VERSION, target_api_version, 0);
63647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
63747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_app_binary(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary) {
63847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY, app_binary);
63947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
64047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
64147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie        : fbb_(_fbb) {
64247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    start_ = fbb_.StartTable();
64347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
64447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappRequestBuilder &operator=(const LoadNanoappRequestBuilder &);
64547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::Offset<LoadNanoappRequest> Finish() {
64647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    const auto end = fbb_.EndTable(start_, 5);
64747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    auto o = flatbuffers::Offset<LoadNanoappRequest>(end);
64847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.Required(o, LoadNanoappRequest::VT_APP_BINARY);
64947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return o;
65047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
65147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
65247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
65347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddieinline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(
65447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
65547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t transaction_id = 0,
65647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint64_t app_id = 0,
65747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t app_version = 0,
65847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t target_api_version = 0,
65947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary = 0) {
66047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappRequestBuilder builder_(_fbb);
66147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_app_id(app_id);
66247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_app_binary(app_binary);
66347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_target_api_version(target_api_version);
66447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_app_version(app_version);
66547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_transaction_id(transaction_id);
66647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  return builder_.Finish();
66747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie}
66847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
66947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddieinline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequestDirect(
67047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
67147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t transaction_id = 0,
67247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint64_t app_id = 0,
67347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t app_version = 0,
67447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t target_api_version = 0,
67547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    const std::vector<uint8_t> *app_binary = nullptr) {
67647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  return chre::fbs::CreateLoadNanoappRequest(
67747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      _fbb,
67847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      transaction_id,
67947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      app_id,
68047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      app_version,
68147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      target_api_version,
68247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      app_binary ? _fbb.CreateVector<uint8_t>(*app_binary) : 0);
68347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie}
68447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
68547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
68647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  enum {
68747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_TRANSACTION_ID = 4,
68847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    VT_SUCCESS = 6
68947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  };
69047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  uint32_t transaction_id() const {
69147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
69247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
69347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  bool success() const {
69447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
69547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
69647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
69747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return VerifyTableStart(verifier) &&
69847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
69947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
70047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie           verifier.EndTable();
70147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
70247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
70347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
70447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddiestruct LoadNanoappResponseBuilder {
70547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
70647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::uoffset_t start_;
70747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_transaction_id(uint32_t transaction_id) {
70847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
70947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
71047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  void add_success(bool success) {
71147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    fbb_.AddElement<uint8_t>(LoadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
71247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
71347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
71447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie        : fbb_(_fbb) {
71547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    start_ = fbb_.StartTable();
71647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
71747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappResponseBuilder &operator=(const LoadNanoappResponseBuilder &);
71847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  flatbuffers::Offset<LoadNanoappResponse> Finish() {
71947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    const auto end = fbb_.EndTable(start_, 2);
72047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    auto o = flatbuffers::Offset<LoadNanoappResponse>(end);
72147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    return o;
72247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  }
72347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie};
72447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
72547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddieinline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(
72647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
72747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    uint32_t transaction_id = 0,
72847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    bool success = false) {
72947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  LoadNanoappResponseBuilder builder_(_fbb);
73047a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_transaction_id(transaction_id);
73147a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  builder_.add_success(success);
73247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie  return builder_.Finish();
73347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie}
73447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie
735ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// The top-level container that encapsulates all possible messages. Note that
736ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// per FlatBuffers requirements, we can't use a union as the top-level structure
737ef456c07c1738f624e95259878d41305129e64d9Brian Duddie/// (root type), so we must wrap it in a table.
738ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct MessageContainer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
739ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  enum {
740ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    VT_MESSAGE_TYPE = 4,
741f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    VT_MESSAGE = 6,
742f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    VT_HOST_ADDR = 8
743ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  };
744ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  ChreMessage message_type() const {
745ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return static_cast<ChreMessage>(GetField<uint8_t>(VT_MESSAGE_TYPE, 0));
746ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
747ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  const void *message() const {
748ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return GetPointer<const void *>(VT_MESSAGE);
749ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
750f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// The originating or destination client ID on the host side, used to direct
751f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// responses only to the client that sent the request. Although initially
752f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// populated by the requesting client, this is enforced to be the correct
753f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// value by the entity guarding access to CHRE.
754f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// This is wrapped in a struct to ensure that it is always included when
755f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  /// encoding the message, so it can be mutated by the host daemon.
756f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  const HostAddress *host_addr() const {
757f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    return GetStruct<const HostAddress *>(VT_HOST_ADDR);
758f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
759ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  bool Verify(flatbuffers::Verifier &verifier) const {
760ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return VerifyTableStart(verifier) &&
761ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           VerifyField<uint8_t>(verifier, VT_MESSAGE_TYPE) &&
7627621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie           VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) &&
763ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           VerifyChreMessage(verifier, message(), message_type()) &&
764f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie           VerifyFieldRequired<HostAddress>(verifier, VT_HOST_ADDR) &&
765ef456c07c1738f624e95259878d41305129e64d9Brian Duddie           verifier.EndTable();
766ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
767ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
768ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
769ef456c07c1738f624e95259878d41305129e64d9Brian Duddiestruct MessageContainerBuilder {
770ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::FlatBufferBuilder &fbb_;
771ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::uoffset_t start_;
772ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_message_type(ChreMessage message_type) {
773ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    fbb_.AddElement<uint8_t>(MessageContainer::VT_MESSAGE_TYPE, static_cast<uint8_t>(message_type), 0);
774ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
775ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  void add_message(flatbuffers::Offset<void> message) {
776ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    fbb_.AddOffset(MessageContainer::VT_MESSAGE, message);
777ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
778f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  void add_host_addr(const HostAddress *host_addr) {
779f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    fbb_.AddStruct(MessageContainer::VT_HOST_ADDR, host_addr);
780f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  }
781ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  MessageContainerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
782ef456c07c1738f624e95259878d41305129e64d9Brian Duddie        : fbb_(_fbb) {
783ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    start_ = fbb_.StartTable();
784ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
785ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  MessageContainerBuilder &operator=(const MessageContainerBuilder &);
786ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  flatbuffers::Offset<MessageContainer> Finish() {
787f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    const auto end = fbb_.EndTable(start_, 3);
788ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    auto o = flatbuffers::Offset<MessageContainer>(end);
7897621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    fbb_.Required(o, MessageContainer::VT_MESSAGE);
790f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    fbb_.Required(o, MessageContainer::VT_HOST_ADDR);
791ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    return o;
792ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
793ef456c07c1738f624e95259878d41305129e64d9Brian Duddie};
794ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
795ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline flatbuffers::Offset<MessageContainer> CreateMessageContainer(
796ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::FlatBufferBuilder &_fbb,
797ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    ChreMessage message_type = ChreMessage::NONE,
798f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    flatbuffers::Offset<void> message = 0,
799f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie    const HostAddress *host_addr = 0) {
800ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  MessageContainerBuilder builder_(_fbb);
801f685db3a6b34f8dd6942964ae99836bda87c8134Brian Duddie  builder_.add_host_addr(host_addr);
802ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_message(message);
803ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  builder_.add_message_type(message_type);
804ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return builder_.Finish();
805ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
806ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
807ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type) {
808ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  switch (type) {
809ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    case ChreMessage::NONE: {
810ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      return true;
811ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    }
812ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    case ChreMessage::NanoappMessage: {
813ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      auto ptr = reinterpret_cast<const NanoappMessage *>(obj);
814ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      return verifier.VerifyTable(ptr);
815ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    }
8167621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    case ChreMessage::HubInfoRequest: {
8177621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      auto ptr = reinterpret_cast<const HubInfoRequest *>(obj);
8187621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      return verifier.VerifyTable(ptr);
8197621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    }
8207621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    case ChreMessage::HubInfoResponse: {
8217621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      auto ptr = reinterpret_cast<const HubInfoResponse *>(obj);
8227621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie      return verifier.VerifyTable(ptr);
8237621b3267fd2ff1068d7aa7d75441d68646226abBrian Duddie    }
824a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    case ChreMessage::NanoappListRequest: {
825a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      auto ptr = reinterpret_cast<const NanoappListRequest *>(obj);
826a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      return verifier.VerifyTable(ptr);
827a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    }
828a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    case ChreMessage::NanoappListResponse: {
829a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      auto ptr = reinterpret_cast<const NanoappListResponse *>(obj);
830a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie      return verifier.VerifyTable(ptr);
831a2f5add27054c406f36528cf8a5cbc6d4c79d246Brian Duddie    }
83247a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    case ChreMessage::LoadNanoappRequest: {
83347a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      auto ptr = reinterpret_cast<const LoadNanoappRequest *>(obj);
83447a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      return verifier.VerifyTable(ptr);
83547a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    }
83647a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    case ChreMessage::LoadNanoappResponse: {
83747a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      auto ptr = reinterpret_cast<const LoadNanoappResponse *>(obj);
83847a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie      return verifier.VerifyTable(ptr);
83947a99dc3cacacb0418548609c0e2d3b2b70d821eBrian Duddie    }
840ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    default: return false;
841ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
842ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
843ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
844ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
845ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  if (values->size() != types->size()) return false;
846ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
847ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    if (!VerifyChreMessage(
848ef456c07c1738f624e95259878d41305129e64d9Brian Duddie        verifier,  values->Get(i), types->GetEnum<ChreMessage>(i))) {
849ef456c07c1738f624e95259878d41305129e64d9Brian Duddie      return false;
850ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    }
851ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  }
852ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return true;
853ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
854ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
855ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline const chre::fbs::MessageContainer *GetMessageContainer(const void *buf) {
856ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return flatbuffers::GetRoot<chre::fbs::MessageContainer>(buf);
857ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
858ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
859ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline bool VerifyMessageContainerBuffer(
860ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::Verifier &verifier) {
861ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  return verifier.VerifyBuffer<chre::fbs::MessageContainer>(nullptr);
862ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
863ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
864ef456c07c1738f624e95259878d41305129e64d9Brian Duddieinline void FinishMessageContainerBuffer(
865ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::FlatBufferBuilder &fbb,
866ef456c07c1738f624e95259878d41305129e64d9Brian Duddie    flatbuffers::Offset<chre::fbs::MessageContainer> root) {
867ef456c07c1738f624e95259878d41305129e64d9Brian Duddie  fbb.Finish(root);
868ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}
869ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
870ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}  // namespace fbs
871ef456c07c1738f624e95259878d41305129e64d9Brian Duddie}  // namespace chre
872ef456c07c1738f624e95259878d41305129e64d9Brian Duddie
873ef456c07c1738f624e95259878d41305129e64d9Brian Duddie#endif  // FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
874