xref: /aosp_15_r20/system/chre/host/common/include/chre_host/generated/host_messages_generated.h (revision 84e339476a462649f82315436d70fd732297a399)
1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 
4 #ifndef FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
5 #define FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
6 
7 #include "flatbuffers/flatbuffers.h"
8 
9 namespace chre {
10 namespace fbs {
11 
12 struct NanoappMessage;
13 struct NanoappMessageBuilder;
14 struct NanoappMessageT;
15 
16 struct MessageDeliveryStatus;
17 struct MessageDeliveryStatusBuilder;
18 struct MessageDeliveryStatusT;
19 
20 struct HubInfoRequest;
21 struct HubInfoRequestBuilder;
22 struct HubInfoRequestT;
23 
24 struct HubInfoResponse;
25 struct HubInfoResponseBuilder;
26 struct HubInfoResponseT;
27 
28 struct NanoappListRequest;
29 struct NanoappListRequestBuilder;
30 struct NanoappListRequestT;
31 
32 struct NanoappRpcService;
33 struct NanoappRpcServiceBuilder;
34 struct NanoappRpcServiceT;
35 
36 struct NanoappListEntry;
37 struct NanoappListEntryBuilder;
38 struct NanoappListEntryT;
39 
40 struct NanoappListResponse;
41 struct NanoappListResponseBuilder;
42 struct NanoappListResponseT;
43 
44 struct LoadNanoappRequest;
45 struct LoadNanoappRequestBuilder;
46 struct LoadNanoappRequestT;
47 
48 struct LoadNanoappResponse;
49 struct LoadNanoappResponseBuilder;
50 struct LoadNanoappResponseT;
51 
52 struct NanoappTokenDatabaseInfo;
53 struct NanoappTokenDatabaseInfoBuilder;
54 struct NanoappTokenDatabaseInfoT;
55 
56 struct UnloadNanoappRequest;
57 struct UnloadNanoappRequestBuilder;
58 struct UnloadNanoappRequestT;
59 
60 struct UnloadNanoappResponse;
61 struct UnloadNanoappResponseBuilder;
62 struct UnloadNanoappResponseT;
63 
64 struct LogMessage;
65 struct LogMessageBuilder;
66 struct LogMessageT;
67 
68 struct TimeSyncMessage;
69 struct TimeSyncMessageBuilder;
70 struct TimeSyncMessageT;
71 
72 struct DebugDumpRequest;
73 struct DebugDumpRequestBuilder;
74 struct DebugDumpRequestT;
75 
76 struct DebugDumpData;
77 struct DebugDumpDataBuilder;
78 struct DebugDumpDataT;
79 
80 struct DebugDumpResponse;
81 struct DebugDumpResponseBuilder;
82 struct DebugDumpResponseT;
83 
84 struct TimeSyncRequest;
85 struct TimeSyncRequestBuilder;
86 struct TimeSyncRequestT;
87 
88 struct LowPowerMicAccessRequest;
89 struct LowPowerMicAccessRequestBuilder;
90 struct LowPowerMicAccessRequestT;
91 
92 struct LowPowerMicAccessRelease;
93 struct LowPowerMicAccessReleaseBuilder;
94 struct LowPowerMicAccessReleaseT;
95 
96 struct SettingChangeMessage;
97 struct SettingChangeMessageBuilder;
98 struct SettingChangeMessageT;
99 
100 struct LogMessageV2;
101 struct LogMessageV2Builder;
102 struct LogMessageV2T;
103 
104 struct SelfTestRequest;
105 struct SelfTestRequestBuilder;
106 struct SelfTestRequestT;
107 
108 struct SelfTestResponse;
109 struct SelfTestResponseBuilder;
110 struct SelfTestResponseT;
111 
112 struct HostEndpointConnected;
113 struct HostEndpointConnectedBuilder;
114 struct HostEndpointConnectedT;
115 
116 struct HostEndpointDisconnected;
117 struct HostEndpointDisconnectedBuilder;
118 struct HostEndpointDisconnectedT;
119 
120 struct MetricLog;
121 struct MetricLogBuilder;
122 struct MetricLogT;
123 
124 struct BatchedMetricLog;
125 struct BatchedMetricLogBuilder;
126 struct BatchedMetricLogT;
127 
128 struct NanConfigurationRequest;
129 struct NanConfigurationRequestBuilder;
130 struct NanConfigurationRequestT;
131 
132 struct NanConfigurationUpdate;
133 struct NanConfigurationUpdateBuilder;
134 struct NanConfigurationUpdateT;
135 
136 struct DebugConfiguration;
137 struct DebugConfigurationBuilder;
138 struct DebugConfigurationT;
139 
140 struct PulseRequest;
141 struct PulseRequestBuilder;
142 struct PulseRequestT;
143 
144 struct PulseResponse;
145 struct PulseResponseBuilder;
146 struct PulseResponseT;
147 
148 struct LeCocChannelInfo;
149 struct LeCocChannelInfoBuilder;
150 struct LeCocChannelInfoT;
151 
152 struct BtSocketOpen;
153 struct BtSocketOpenBuilder;
154 struct BtSocketOpenT;
155 
156 struct BtSocketOpenResponse;
157 struct BtSocketOpenResponseBuilder;
158 struct BtSocketOpenResponseT;
159 
160 struct BtSocketClose;
161 struct BtSocketCloseBuilder;
162 struct BtSocketCloseT;
163 
164 struct BtSocketCloseResponse;
165 struct BtSocketCloseResponseBuilder;
166 struct BtSocketCloseResponseT;
167 
168 struct VendorHubInfo;
169 struct VendorHubInfoBuilder;
170 struct VendorHubInfoT;
171 
172 struct MessageHub;
173 struct MessageHubBuilder;
174 struct MessageHubT;
175 
176 struct RegisterMessageHub;
177 struct RegisterMessageHubBuilder;
178 struct RegisterMessageHubT;
179 
180 struct UnregisterMessageHub;
181 struct UnregisterMessageHubBuilder;
182 struct UnregisterMessageHubT;
183 
184 struct EndpointId;
185 struct EndpointIdBuilder;
186 struct EndpointIdT;
187 
188 struct Service;
189 struct ServiceBuilder;
190 struct ServiceT;
191 
192 struct EndpointInfo;
193 struct EndpointInfoBuilder;
194 struct EndpointInfoT;
195 
196 struct RegisterEndpoint;
197 struct RegisterEndpointBuilder;
198 struct RegisterEndpointT;
199 
200 struct UnregisterEndpoint;
201 struct UnregisterEndpointBuilder;
202 struct UnregisterEndpointT;
203 
204 struct GetMessageHubsAndEndpointsRequest;
205 struct GetMessageHubsAndEndpointsRequestBuilder;
206 struct GetMessageHubsAndEndpointsRequestT;
207 
208 struct GetMessageHubsAndEndpointsResponse;
209 struct GetMessageHubsAndEndpointsResponseBuilder;
210 struct GetMessageHubsAndEndpointsResponseT;
211 
212 struct OpenEndpointSessionRequest;
213 struct OpenEndpointSessionRequestBuilder;
214 struct OpenEndpointSessionRequestT;
215 
216 struct EndpointSessionOpened;
217 struct EndpointSessionOpenedBuilder;
218 struct EndpointSessionOpenedT;
219 
220 struct EndpointSessionClosed;
221 struct EndpointSessionClosedBuilder;
222 struct EndpointSessionClosedT;
223 
224 struct EndpointSessionMessage;
225 struct EndpointSessionMessageBuilder;
226 struct EndpointSessionMessageT;
227 
228 struct EndpointSessionMessageDeliveryStatus;
229 struct EndpointSessionMessageDeliveryStatusBuilder;
230 struct EndpointSessionMessageDeliveryStatusT;
231 
232 struct HostAddress;
233 
234 struct MessageContainer;
235 struct MessageContainerBuilder;
236 struct MessageContainerT;
237 
238 /// An enum describing the setting type.
239 enum class Setting : int8_t {
240   LOCATION = 0,
241   WIFI_AVAILABLE = 1,
242   AIRPLANE_MODE = 2,
243   MICROPHONE = 3,
244   BLE_AVAILABLE = 4,
245   MIN = LOCATION,
246   MAX = BLE_AVAILABLE
247 };
248 
EnumValuesSetting()249 inline const Setting (&EnumValuesSetting())[5] {
250   static const Setting values[] = {
251     Setting::LOCATION,
252     Setting::WIFI_AVAILABLE,
253     Setting::AIRPLANE_MODE,
254     Setting::MICROPHONE,
255     Setting::BLE_AVAILABLE
256   };
257   return values;
258 }
259 
EnumNamesSetting()260 inline const char * const *EnumNamesSetting() {
261   static const char * const names[6] = {
262     "LOCATION",
263     "WIFI_AVAILABLE",
264     "AIRPLANE_MODE",
265     "MICROPHONE",
266     "BLE_AVAILABLE",
267     nullptr
268   };
269   return names;
270 }
271 
EnumNameSetting(Setting e)272 inline const char *EnumNameSetting(Setting e) {
273   if (flatbuffers::IsOutRange(e, Setting::LOCATION, Setting::BLE_AVAILABLE)) return "";
274   const size_t index = static_cast<size_t>(e);
275   return EnumNamesSetting()[index];
276 }
277 
278 /// An enum describing the state of a setting.
279 enum class SettingState : int8_t {
280   DISABLED = 0,
281   ENABLED = 1,
282   MIN = DISABLED,
283   MAX = ENABLED
284 };
285 
EnumValuesSettingState()286 inline const SettingState (&EnumValuesSettingState())[2] {
287   static const SettingState values[] = {
288     SettingState::DISABLED,
289     SettingState::ENABLED
290   };
291   return values;
292 }
293 
EnumNamesSettingState()294 inline const char * const *EnumNamesSettingState() {
295   static const char * const names[3] = {
296     "DISABLED",
297     "ENABLED",
298     nullptr
299   };
300   return names;
301 }
302 
EnumNameSettingState(SettingState e)303 inline const char *EnumNameSettingState(SettingState e) {
304   if (flatbuffers::IsOutRange(e, SettingState::DISABLED, SettingState::ENABLED)) return "";
305   const size_t index = static_cast<size_t>(e);
306   return EnumNamesSettingState()[index];
307 }
308 
309 enum class LogLevel : int8_t {
310   ERROR = 1,
311   WARNING = 2,
312   INFO = 3,
313   DEBUG = 4,
314   VERBOSE = 5,
315   MIN = ERROR,
316   MAX = VERBOSE
317 };
318 
EnumValuesLogLevel()319 inline const LogLevel (&EnumValuesLogLevel())[5] {
320   static const LogLevel values[] = {
321     LogLevel::ERROR,
322     LogLevel::WARNING,
323     LogLevel::INFO,
324     LogLevel::DEBUG,
325     LogLevel::VERBOSE
326   };
327   return values;
328 }
329 
EnumNamesLogLevel()330 inline const char * const *EnumNamesLogLevel() {
331   static const char * const names[6] = {
332     "ERROR",
333     "WARNING",
334     "INFO",
335     "DEBUG",
336     "VERBOSE",
337     nullptr
338   };
339   return names;
340 }
341 
EnumNameLogLevel(LogLevel e)342 inline const char *EnumNameLogLevel(LogLevel e) {
343   if (flatbuffers::IsOutRange(e, LogLevel::ERROR, LogLevel::VERBOSE)) return "";
344   const size_t index = static_cast<size_t>(e) - static_cast<size_t>(LogLevel::ERROR);
345   return EnumNamesLogLevel()[index];
346 }
347 
348 enum class LogType : int8_t {
349   STRING = 0,
350   TOKENIZED = 1,
351   BLUETOOTH = 2,
352   NANOAPP_TOKENIZED = 3,
353   MIN = STRING,
354   MAX = NANOAPP_TOKENIZED
355 };
356 
EnumValuesLogType()357 inline const LogType (&EnumValuesLogType())[4] {
358   static const LogType values[] = {
359     LogType::STRING,
360     LogType::TOKENIZED,
361     LogType::BLUETOOTH,
362     LogType::NANOAPP_TOKENIZED
363   };
364   return values;
365 }
366 
EnumNamesLogType()367 inline const char * const *EnumNamesLogType() {
368   static const char * const names[5] = {
369     "STRING",
370     "TOKENIZED",
371     "BLUETOOTH",
372     "NANOAPP_TOKENIZED",
373     nullptr
374   };
375   return names;
376 }
377 
EnumNameLogType(LogType e)378 inline const char *EnumNameLogType(LogType e) {
379   if (flatbuffers::IsOutRange(e, LogType::STRING, LogType::NANOAPP_TOKENIZED)) return "";
380   const size_t index = static_cast<size_t>(e);
381   return EnumNamesLogType()[index];
382 }
383 
384 enum class BtSnoopDirection : int8_t {
385   INCOMING_FROM_BT_CONTROLLER = 0,
386   OUTGOING_TO_ARBITER = 1,
387   MIN = INCOMING_FROM_BT_CONTROLLER,
388   MAX = OUTGOING_TO_ARBITER
389 };
390 
EnumValuesBtSnoopDirection()391 inline const BtSnoopDirection (&EnumValuesBtSnoopDirection())[2] {
392   static const BtSnoopDirection values[] = {
393     BtSnoopDirection::INCOMING_FROM_BT_CONTROLLER,
394     BtSnoopDirection::OUTGOING_TO_ARBITER
395   };
396   return values;
397 }
398 
EnumNamesBtSnoopDirection()399 inline const char * const *EnumNamesBtSnoopDirection() {
400   static const char * const names[3] = {
401     "INCOMING_FROM_BT_CONTROLLER",
402     "OUTGOING_TO_ARBITER",
403     nullptr
404   };
405   return names;
406 }
407 
EnumNameBtSnoopDirection(BtSnoopDirection e)408 inline const char *EnumNameBtSnoopDirection(BtSnoopDirection e) {
409   if (flatbuffers::IsOutRange(e, BtSnoopDirection::INCOMING_FROM_BT_CONTROLLER, BtSnoopDirection::OUTGOING_TO_ARBITER)) return "";
410   const size_t index = static_cast<size_t>(e);
411   return EnumNamesBtSnoopDirection()[index];
412 }
413 
414 enum class ChannelInfo : uint8_t {
415   NONE = 0,
416   LeCocChannelInfo = 1,
417   MIN = NONE,
418   MAX = LeCocChannelInfo
419 };
420 
EnumValuesChannelInfo()421 inline const ChannelInfo (&EnumValuesChannelInfo())[2] {
422   static const ChannelInfo values[] = {
423     ChannelInfo::NONE,
424     ChannelInfo::LeCocChannelInfo
425   };
426   return values;
427 }
428 
EnumNamesChannelInfo()429 inline const char * const *EnumNamesChannelInfo() {
430   static const char * const names[3] = {
431     "NONE",
432     "LeCocChannelInfo",
433     nullptr
434   };
435   return names;
436 }
437 
EnumNameChannelInfo(ChannelInfo e)438 inline const char *EnumNameChannelInfo(ChannelInfo e) {
439   if (flatbuffers::IsOutRange(e, ChannelInfo::NONE, ChannelInfo::LeCocChannelInfo)) return "";
440   const size_t index = static_cast<size_t>(e);
441   return EnumNamesChannelInfo()[index];
442 }
443 
444 template<typename T> struct ChannelInfoTraits {
445   static const ChannelInfo enum_value = ChannelInfo::NONE;
446 };
447 
448 template<> struct ChannelInfoTraits<chre::fbs::LeCocChannelInfo> {
449   static const ChannelInfo enum_value = ChannelInfo::LeCocChannelInfo;
450 };
451 
452 struct ChannelInfoUnion {
453   ChannelInfo type;
454   void *value;
455 
456   ChannelInfoUnion() : type(ChannelInfo::NONE), value(nullptr) {}
457   ChannelInfoUnion(ChannelInfoUnion&& u) FLATBUFFERS_NOEXCEPT :
458     type(ChannelInfo::NONE), value(nullptr)
459     { std::swap(type, u.type); std::swap(value, u.value); }
460   ChannelInfoUnion(const ChannelInfoUnion &);
461   ChannelInfoUnion &operator=(const ChannelInfoUnion &u)
462     { ChannelInfoUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
463   ChannelInfoUnion &operator=(ChannelInfoUnion &&u) FLATBUFFERS_NOEXCEPT
464     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
465   ~ChannelInfoUnion() { Reset(); }
466 
467   void Reset();
468 
469 #ifndef FLATBUFFERS_CPP98_STL
470   template <typename T>
471   void Set(T&& val) {
472     using RT = typename std::remove_reference<T>::type;
473     Reset();
474     type = ChannelInfoTraits<typename RT::TableType>::enum_value;
475     if (type != ChannelInfo::NONE) {
476       value = new RT(std::forward<T>(val));
477     }
478   }
479 #endif  // FLATBUFFERS_CPP98_STL
480 
481   static void *UnPack(const void *obj, ChannelInfo type, const flatbuffers::resolver_function_t *resolver);
482   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
483 
484   chre::fbs::LeCocChannelInfoT *AsLeCocChannelInfo() {
485     return type == ChannelInfo::LeCocChannelInfo ?
486       reinterpret_cast<chre::fbs::LeCocChannelInfoT *>(value) : nullptr;
487   }
488   const chre::fbs::LeCocChannelInfoT *AsLeCocChannelInfo() const {
489     return type == ChannelInfo::LeCocChannelInfo ?
490       reinterpret_cast<const chre::fbs::LeCocChannelInfoT *>(value) : nullptr;
491   }
492 };
493 
494 bool VerifyChannelInfo(flatbuffers::Verifier &verifier, const void *obj, ChannelInfo type);
495 bool VerifyChannelInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
496 
497 enum class BtSocketOpenStatus : int8_t {
498   SUCCESS = 0,
499   FAILURE = 1,
500   MIN = SUCCESS,
501   MAX = FAILURE
502 };
503 
504 inline const BtSocketOpenStatus (&EnumValuesBtSocketOpenStatus())[2] {
505   static const BtSocketOpenStatus values[] = {
506     BtSocketOpenStatus::SUCCESS,
507     BtSocketOpenStatus::FAILURE
508   };
509   return values;
510 }
511 
512 inline const char * const *EnumNamesBtSocketOpenStatus() {
513   static const char * const names[3] = {
514     "SUCCESS",
515     "FAILURE",
516     nullptr
517   };
518   return names;
519 }
520 
521 inline const char *EnumNameBtSocketOpenStatus(BtSocketOpenStatus e) {
522   if (flatbuffers::IsOutRange(e, BtSocketOpenStatus::SUCCESS, BtSocketOpenStatus::FAILURE)) return "";
523   const size_t index = static_cast<size_t>(e);
524   return EnumNamesBtSocketOpenStatus()[index];
525 }
526 
527 enum class MessageHubDetails : uint8_t {
528   NONE = 0,
529   HubInfoResponse = 1,
530   VendorHubInfo = 2,
531   MIN = NONE,
532   MAX = VendorHubInfo
533 };
534 
535 inline const MessageHubDetails (&EnumValuesMessageHubDetails())[3] {
536   static const MessageHubDetails values[] = {
537     MessageHubDetails::NONE,
538     MessageHubDetails::HubInfoResponse,
539     MessageHubDetails::VendorHubInfo
540   };
541   return values;
542 }
543 
544 inline const char * const *EnumNamesMessageHubDetails() {
545   static const char * const names[4] = {
546     "NONE",
547     "HubInfoResponse",
548     "VendorHubInfo",
549     nullptr
550   };
551   return names;
552 }
553 
554 inline const char *EnumNameMessageHubDetails(MessageHubDetails e) {
555   if (flatbuffers::IsOutRange(e, MessageHubDetails::NONE, MessageHubDetails::VendorHubInfo)) return "";
556   const size_t index = static_cast<size_t>(e);
557   return EnumNamesMessageHubDetails()[index];
558 }
559 
560 template<typename T> struct MessageHubDetailsTraits {
561   static const MessageHubDetails enum_value = MessageHubDetails::NONE;
562 };
563 
564 template<> struct MessageHubDetailsTraits<chre::fbs::HubInfoResponse> {
565   static const MessageHubDetails enum_value = MessageHubDetails::HubInfoResponse;
566 };
567 
568 template<> struct MessageHubDetailsTraits<chre::fbs::VendorHubInfo> {
569   static const MessageHubDetails enum_value = MessageHubDetails::VendorHubInfo;
570 };
571 
572 struct MessageHubDetailsUnion {
573   MessageHubDetails type;
574   void *value;
575 
576   MessageHubDetailsUnion() : type(MessageHubDetails::NONE), value(nullptr) {}
577   MessageHubDetailsUnion(MessageHubDetailsUnion&& u) FLATBUFFERS_NOEXCEPT :
578     type(MessageHubDetails::NONE), value(nullptr)
579     { std::swap(type, u.type); std::swap(value, u.value); }
580   MessageHubDetailsUnion(const MessageHubDetailsUnion &);
581   MessageHubDetailsUnion &operator=(const MessageHubDetailsUnion &u)
582     { MessageHubDetailsUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
583   MessageHubDetailsUnion &operator=(MessageHubDetailsUnion &&u) FLATBUFFERS_NOEXCEPT
584     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
585   ~MessageHubDetailsUnion() { Reset(); }
586 
587   void Reset();
588 
589 #ifndef FLATBUFFERS_CPP98_STL
590   template <typename T>
591   void Set(T&& val) {
592     using RT = typename std::remove_reference<T>::type;
593     Reset();
594     type = MessageHubDetailsTraits<typename RT::TableType>::enum_value;
595     if (type != MessageHubDetails::NONE) {
596       value = new RT(std::forward<T>(val));
597     }
598   }
599 #endif  // FLATBUFFERS_CPP98_STL
600 
601   static void *UnPack(const void *obj, MessageHubDetails type, const flatbuffers::resolver_function_t *resolver);
602   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
603 
604   chre::fbs::HubInfoResponseT *AsHubInfoResponse() {
605     return type == MessageHubDetails::HubInfoResponse ?
606       reinterpret_cast<chre::fbs::HubInfoResponseT *>(value) : nullptr;
607   }
608   const chre::fbs::HubInfoResponseT *AsHubInfoResponse() const {
609     return type == MessageHubDetails::HubInfoResponse ?
610       reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value) : nullptr;
611   }
612   chre::fbs::VendorHubInfoT *AsVendorHubInfo() {
613     return type == MessageHubDetails::VendorHubInfo ?
614       reinterpret_cast<chre::fbs::VendorHubInfoT *>(value) : nullptr;
615   }
616   const chre::fbs::VendorHubInfoT *AsVendorHubInfo() const {
617     return type == MessageHubDetails::VendorHubInfo ?
618       reinterpret_cast<const chre::fbs::VendorHubInfoT *>(value) : nullptr;
619   }
620 };
621 
622 bool VerifyMessageHubDetails(flatbuffers::Verifier &verifier, const void *obj, MessageHubDetails type);
623 bool VerifyMessageHubDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
624 
625 /// An enum describing the type of an endpoint.
626 enum class EndpointType : uint8_t {
627   INVALID = 0,
628   /// The endpoint is part of the Android Framework
629   FRAMEWORK = 1,
630   /// The endpoint is an Android app
631   APP = 2,
632   /// The endpoint is a native Android program
633   NATIVE = 3,
634   /// The endpoint is a nanoapp
635   NANOAPP = 4,
636   /// A generic, non-nanoapp endpoint
637   GENERIC = 5,
638   MIN = INVALID,
639   MAX = GENERIC
640 };
641 
642 inline const EndpointType (&EnumValuesEndpointType())[6] {
643   static const EndpointType values[] = {
644     EndpointType::INVALID,
645     EndpointType::FRAMEWORK,
646     EndpointType::APP,
647     EndpointType::NATIVE,
648     EndpointType::NANOAPP,
649     EndpointType::GENERIC
650   };
651   return values;
652 }
653 
654 inline const char * const *EnumNamesEndpointType() {
655   static const char * const names[7] = {
656     "INVALID",
657     "FRAMEWORK",
658     "APP",
659     "NATIVE",
660     "NANOAPP",
661     "GENERIC",
662     nullptr
663   };
664   return names;
665 }
666 
667 inline const char *EnumNameEndpointType(EndpointType e) {
668   if (flatbuffers::IsOutRange(e, EndpointType::INVALID, EndpointType::GENERIC)) return "";
669   const size_t index = static_cast<size_t>(e);
670   return EnumNamesEndpointType()[index];
671 }
672 
673 enum class RpcFormat : uint8_t {
674   /// Fully custom format
675   CUSTOM = 0,
676   /// Stable AIDL defined interface using Binder marshalling
677   AIDL = 1,
678   /// Pigweed RPC defined interface using Protobuf marshalling
679   PW_RPC = 2,
680   MIN = CUSTOM,
681   MAX = PW_RPC
682 };
683 
684 inline const RpcFormat (&EnumValuesRpcFormat())[3] {
685   static const RpcFormat values[] = {
686     RpcFormat::CUSTOM,
687     RpcFormat::AIDL,
688     RpcFormat::PW_RPC
689   };
690   return values;
691 }
692 
693 inline const char * const *EnumNamesRpcFormat() {
694   static const char * const names[4] = {
695     "CUSTOM",
696     "AIDL",
697     "PW_RPC",
698     nullptr
699   };
700   return names;
701 }
702 
703 inline const char *EnumNameRpcFormat(RpcFormat e) {
704   if (flatbuffers::IsOutRange(e, RpcFormat::CUSTOM, RpcFormat::PW_RPC)) return "";
705   const size_t index = static_cast<size_t>(e);
706   return EnumNamesRpcFormat()[index];
707 }
708 
709 /// "Reason"s for stopping an endpoint or session over an endpoint.
710 enum class Reason : uint8_t {
711   /// Unspecified reason.
712   UNSPECIFIED = 0,
713   /// Out of memory. There's not enough memory to perform this operation.
714   OUT_OF_MEMORY = 1,
715   /// Timeout. This operation timed out.
716   TIMEOUT = 2,
717   /// Endpoint rejected this openEndpointSession request.
718   OPEN_ENDPOINT_SESSION_REQUEST_REJECTED = 3,
719   /// Endpoint requested closeEndpointSession.
720   CLOSE_ENDPOINT_SESSION_REQUESTED = 4,
721   /// Invalid endpoint.
722   ENDPOINT_INVALID = 5,
723   /// Endpoint is now stopped.
724   ENDPOINT_GONE = 6,
725   /// Endpoint crashed.
726   ENDPOINT_CRASHED = 7,
727   /// Hub was reset or is resetting.
728   HUB_RESET = 8,
729   MIN = UNSPECIFIED,
730   MAX = HUB_RESET
731 };
732 
733 inline const Reason (&EnumValuesReason())[9] {
734   static const Reason values[] = {
735     Reason::UNSPECIFIED,
736     Reason::OUT_OF_MEMORY,
737     Reason::TIMEOUT,
738     Reason::OPEN_ENDPOINT_SESSION_REQUEST_REJECTED,
739     Reason::CLOSE_ENDPOINT_SESSION_REQUESTED,
740     Reason::ENDPOINT_INVALID,
741     Reason::ENDPOINT_GONE,
742     Reason::ENDPOINT_CRASHED,
743     Reason::HUB_RESET
744   };
745   return values;
746 }
747 
748 inline const char * const *EnumNamesReason() {
749   static const char * const names[10] = {
750     "UNSPECIFIED",
751     "OUT_OF_MEMORY",
752     "TIMEOUT",
753     "OPEN_ENDPOINT_SESSION_REQUEST_REJECTED",
754     "CLOSE_ENDPOINT_SESSION_REQUESTED",
755     "ENDPOINT_INVALID",
756     "ENDPOINT_GONE",
757     "ENDPOINT_CRASHED",
758     "HUB_RESET",
759     nullptr
760   };
761   return names;
762 }
763 
764 inline const char *EnumNameReason(Reason e) {
765   if (flatbuffers::IsOutRange(e, Reason::UNSPECIFIED, Reason::HUB_RESET)) return "";
766   const size_t index = static_cast<size_t>(e);
767   return EnumNamesReason()[index];
768 }
769 
770 /// A union that joins together all possible messages. Note that in FlatBuffers,
771 /// unions have an implicit type
772 enum class ChreMessage : uint8_t {
773   NONE = 0,
774   NanoappMessage = 1,
775   HubInfoRequest = 2,
776   HubInfoResponse = 3,
777   NanoappListRequest = 4,
778   NanoappListResponse = 5,
779   LoadNanoappRequest = 6,
780   LoadNanoappResponse = 7,
781   UnloadNanoappRequest = 8,
782   UnloadNanoappResponse = 9,
783   LogMessage = 10,
784   TimeSyncMessage = 11,
785   DebugDumpRequest = 12,
786   DebugDumpData = 13,
787   DebugDumpResponse = 14,
788   TimeSyncRequest = 15,
789   LowPowerMicAccessRequest = 16,
790   LowPowerMicAccessRelease = 17,
791   SettingChangeMessage = 18,
792   LogMessageV2 = 19,
793   SelfTestRequest = 20,
794   SelfTestResponse = 21,
795   HostEndpointConnected = 22,
796   HostEndpointDisconnected = 23,
797   MetricLog = 24,
798   BatchedMetricLog = 25,
799   NanConfigurationRequest = 26,
800   NanConfigurationUpdate = 27,
801   DebugConfiguration = 28,
802   PulseRequest = 29,
803   PulseResponse = 30,
804   NanoappTokenDatabaseInfo = 31,
805   MessageDeliveryStatus = 32,
806   BtSocketOpen = 33,
807   BtSocketOpenResponse = 34,
808   BtSocketClose = 35,
809   BtSocketCloseResponse = 36,
810   GetMessageHubsAndEndpointsRequest = 37,
811   GetMessageHubsAndEndpointsResponse = 38,
812   RegisterMessageHub = 39,
813   UnregisterMessageHub = 40,
814   RegisterEndpoint = 41,
815   UnregisterEndpoint = 42,
816   OpenEndpointSessionRequest = 43,
817   EndpointSessionOpened = 44,
818   EndpointSessionClosed = 45,
819   EndpointSessionMessage = 46,
820   EndpointSessionMessageDeliveryStatus = 47,
821   MIN = NONE,
822   MAX = EndpointSessionMessageDeliveryStatus
823 };
824 
825 inline const ChreMessage (&EnumValuesChreMessage())[48] {
826   static const ChreMessage values[] = {
827     ChreMessage::NONE,
828     ChreMessage::NanoappMessage,
829     ChreMessage::HubInfoRequest,
830     ChreMessage::HubInfoResponse,
831     ChreMessage::NanoappListRequest,
832     ChreMessage::NanoappListResponse,
833     ChreMessage::LoadNanoappRequest,
834     ChreMessage::LoadNanoappResponse,
835     ChreMessage::UnloadNanoappRequest,
836     ChreMessage::UnloadNanoappResponse,
837     ChreMessage::LogMessage,
838     ChreMessage::TimeSyncMessage,
839     ChreMessage::DebugDumpRequest,
840     ChreMessage::DebugDumpData,
841     ChreMessage::DebugDumpResponse,
842     ChreMessage::TimeSyncRequest,
843     ChreMessage::LowPowerMicAccessRequest,
844     ChreMessage::LowPowerMicAccessRelease,
845     ChreMessage::SettingChangeMessage,
846     ChreMessage::LogMessageV2,
847     ChreMessage::SelfTestRequest,
848     ChreMessage::SelfTestResponse,
849     ChreMessage::HostEndpointConnected,
850     ChreMessage::HostEndpointDisconnected,
851     ChreMessage::MetricLog,
852     ChreMessage::BatchedMetricLog,
853     ChreMessage::NanConfigurationRequest,
854     ChreMessage::NanConfigurationUpdate,
855     ChreMessage::DebugConfiguration,
856     ChreMessage::PulseRequest,
857     ChreMessage::PulseResponse,
858     ChreMessage::NanoappTokenDatabaseInfo,
859     ChreMessage::MessageDeliveryStatus,
860     ChreMessage::BtSocketOpen,
861     ChreMessage::BtSocketOpenResponse,
862     ChreMessage::BtSocketClose,
863     ChreMessage::BtSocketCloseResponse,
864     ChreMessage::GetMessageHubsAndEndpointsRequest,
865     ChreMessage::GetMessageHubsAndEndpointsResponse,
866     ChreMessage::RegisterMessageHub,
867     ChreMessage::UnregisterMessageHub,
868     ChreMessage::RegisterEndpoint,
869     ChreMessage::UnregisterEndpoint,
870     ChreMessage::OpenEndpointSessionRequest,
871     ChreMessage::EndpointSessionOpened,
872     ChreMessage::EndpointSessionClosed,
873     ChreMessage::EndpointSessionMessage,
874     ChreMessage::EndpointSessionMessageDeliveryStatus
875   };
876   return values;
877 }
878 
879 inline const char * const *EnumNamesChreMessage() {
880   static const char * const names[49] = {
881     "NONE",
882     "NanoappMessage",
883     "HubInfoRequest",
884     "HubInfoResponse",
885     "NanoappListRequest",
886     "NanoappListResponse",
887     "LoadNanoappRequest",
888     "LoadNanoappResponse",
889     "UnloadNanoappRequest",
890     "UnloadNanoappResponse",
891     "LogMessage",
892     "TimeSyncMessage",
893     "DebugDumpRequest",
894     "DebugDumpData",
895     "DebugDumpResponse",
896     "TimeSyncRequest",
897     "LowPowerMicAccessRequest",
898     "LowPowerMicAccessRelease",
899     "SettingChangeMessage",
900     "LogMessageV2",
901     "SelfTestRequest",
902     "SelfTestResponse",
903     "HostEndpointConnected",
904     "HostEndpointDisconnected",
905     "MetricLog",
906     "BatchedMetricLog",
907     "NanConfigurationRequest",
908     "NanConfigurationUpdate",
909     "DebugConfiguration",
910     "PulseRequest",
911     "PulseResponse",
912     "NanoappTokenDatabaseInfo",
913     "MessageDeliveryStatus",
914     "BtSocketOpen",
915     "BtSocketOpenResponse",
916     "BtSocketClose",
917     "BtSocketCloseResponse",
918     "GetMessageHubsAndEndpointsRequest",
919     "GetMessageHubsAndEndpointsResponse",
920     "RegisterMessageHub",
921     "UnregisterMessageHub",
922     "RegisterEndpoint",
923     "UnregisterEndpoint",
924     "OpenEndpointSessionRequest",
925     "EndpointSessionOpened",
926     "EndpointSessionClosed",
927     "EndpointSessionMessage",
928     "EndpointSessionMessageDeliveryStatus",
929     nullptr
930   };
931   return names;
932 }
933 
934 inline const char *EnumNameChreMessage(ChreMessage e) {
935   if (flatbuffers::IsOutRange(e, ChreMessage::NONE, ChreMessage::EndpointSessionMessageDeliveryStatus)) return "";
936   const size_t index = static_cast<size_t>(e);
937   return EnumNamesChreMessage()[index];
938 }
939 
940 template<typename T> struct ChreMessageTraits {
941   static const ChreMessage enum_value = ChreMessage::NONE;
942 };
943 
944 template<> struct ChreMessageTraits<chre::fbs::NanoappMessage> {
945   static const ChreMessage enum_value = ChreMessage::NanoappMessage;
946 };
947 
948 template<> struct ChreMessageTraits<chre::fbs::HubInfoRequest> {
949   static const ChreMessage enum_value = ChreMessage::HubInfoRequest;
950 };
951 
952 template<> struct ChreMessageTraits<chre::fbs::HubInfoResponse> {
953   static const ChreMessage enum_value = ChreMessage::HubInfoResponse;
954 };
955 
956 template<> struct ChreMessageTraits<chre::fbs::NanoappListRequest> {
957   static const ChreMessage enum_value = ChreMessage::NanoappListRequest;
958 };
959 
960 template<> struct ChreMessageTraits<chre::fbs::NanoappListResponse> {
961   static const ChreMessage enum_value = ChreMessage::NanoappListResponse;
962 };
963 
964 template<> struct ChreMessageTraits<chre::fbs::LoadNanoappRequest> {
965   static const ChreMessage enum_value = ChreMessage::LoadNanoappRequest;
966 };
967 
968 template<> struct ChreMessageTraits<chre::fbs::LoadNanoappResponse> {
969   static const ChreMessage enum_value = ChreMessage::LoadNanoappResponse;
970 };
971 
972 template<> struct ChreMessageTraits<chre::fbs::UnloadNanoappRequest> {
973   static const ChreMessage enum_value = ChreMessage::UnloadNanoappRequest;
974 };
975 
976 template<> struct ChreMessageTraits<chre::fbs::UnloadNanoappResponse> {
977   static const ChreMessage enum_value = ChreMessage::UnloadNanoappResponse;
978 };
979 
980 template<> struct ChreMessageTraits<chre::fbs::LogMessage> {
981   static const ChreMessage enum_value = ChreMessage::LogMessage;
982 };
983 
984 template<> struct ChreMessageTraits<chre::fbs::TimeSyncMessage> {
985   static const ChreMessage enum_value = ChreMessage::TimeSyncMessage;
986 };
987 
988 template<> struct ChreMessageTraits<chre::fbs::DebugDumpRequest> {
989   static const ChreMessage enum_value = ChreMessage::DebugDumpRequest;
990 };
991 
992 template<> struct ChreMessageTraits<chre::fbs::DebugDumpData> {
993   static const ChreMessage enum_value = ChreMessage::DebugDumpData;
994 };
995 
996 template<> struct ChreMessageTraits<chre::fbs::DebugDumpResponse> {
997   static const ChreMessage enum_value = ChreMessage::DebugDumpResponse;
998 };
999 
1000 template<> struct ChreMessageTraits<chre::fbs::TimeSyncRequest> {
1001   static const ChreMessage enum_value = ChreMessage::TimeSyncRequest;
1002 };
1003 
1004 template<> struct ChreMessageTraits<chre::fbs::LowPowerMicAccessRequest> {
1005   static const ChreMessage enum_value = ChreMessage::LowPowerMicAccessRequest;
1006 };
1007 
1008 template<> struct ChreMessageTraits<chre::fbs::LowPowerMicAccessRelease> {
1009   static const ChreMessage enum_value = ChreMessage::LowPowerMicAccessRelease;
1010 };
1011 
1012 template<> struct ChreMessageTraits<chre::fbs::SettingChangeMessage> {
1013   static const ChreMessage enum_value = ChreMessage::SettingChangeMessage;
1014 };
1015 
1016 template<> struct ChreMessageTraits<chre::fbs::LogMessageV2> {
1017   static const ChreMessage enum_value = ChreMessage::LogMessageV2;
1018 };
1019 
1020 template<> struct ChreMessageTraits<chre::fbs::SelfTestRequest> {
1021   static const ChreMessage enum_value = ChreMessage::SelfTestRequest;
1022 };
1023 
1024 template<> struct ChreMessageTraits<chre::fbs::SelfTestResponse> {
1025   static const ChreMessage enum_value = ChreMessage::SelfTestResponse;
1026 };
1027 
1028 template<> struct ChreMessageTraits<chre::fbs::HostEndpointConnected> {
1029   static const ChreMessage enum_value = ChreMessage::HostEndpointConnected;
1030 };
1031 
1032 template<> struct ChreMessageTraits<chre::fbs::HostEndpointDisconnected> {
1033   static const ChreMessage enum_value = ChreMessage::HostEndpointDisconnected;
1034 };
1035 
1036 template<> struct ChreMessageTraits<chre::fbs::MetricLog> {
1037   static const ChreMessage enum_value = ChreMessage::MetricLog;
1038 };
1039 
1040 template<> struct ChreMessageTraits<chre::fbs::BatchedMetricLog> {
1041   static const ChreMessage enum_value = ChreMessage::BatchedMetricLog;
1042 };
1043 
1044 template<> struct ChreMessageTraits<chre::fbs::NanConfigurationRequest> {
1045   static const ChreMessage enum_value = ChreMessage::NanConfigurationRequest;
1046 };
1047 
1048 template<> struct ChreMessageTraits<chre::fbs::NanConfigurationUpdate> {
1049   static const ChreMessage enum_value = ChreMessage::NanConfigurationUpdate;
1050 };
1051 
1052 template<> struct ChreMessageTraits<chre::fbs::DebugConfiguration> {
1053   static const ChreMessage enum_value = ChreMessage::DebugConfiguration;
1054 };
1055 
1056 template<> struct ChreMessageTraits<chre::fbs::PulseRequest> {
1057   static const ChreMessage enum_value = ChreMessage::PulseRequest;
1058 };
1059 
1060 template<> struct ChreMessageTraits<chre::fbs::PulseResponse> {
1061   static const ChreMessage enum_value = ChreMessage::PulseResponse;
1062 };
1063 
1064 template<> struct ChreMessageTraits<chre::fbs::NanoappTokenDatabaseInfo> {
1065   static const ChreMessage enum_value = ChreMessage::NanoappTokenDatabaseInfo;
1066 };
1067 
1068 template<> struct ChreMessageTraits<chre::fbs::MessageDeliveryStatus> {
1069   static const ChreMessage enum_value = ChreMessage::MessageDeliveryStatus;
1070 };
1071 
1072 template<> struct ChreMessageTraits<chre::fbs::BtSocketOpen> {
1073   static const ChreMessage enum_value = ChreMessage::BtSocketOpen;
1074 };
1075 
1076 template<> struct ChreMessageTraits<chre::fbs::BtSocketOpenResponse> {
1077   static const ChreMessage enum_value = ChreMessage::BtSocketOpenResponse;
1078 };
1079 
1080 template<> struct ChreMessageTraits<chre::fbs::BtSocketClose> {
1081   static const ChreMessage enum_value = ChreMessage::BtSocketClose;
1082 };
1083 
1084 template<> struct ChreMessageTraits<chre::fbs::BtSocketCloseResponse> {
1085   static const ChreMessage enum_value = ChreMessage::BtSocketCloseResponse;
1086 };
1087 
1088 template<> struct ChreMessageTraits<chre::fbs::GetMessageHubsAndEndpointsRequest> {
1089   static const ChreMessage enum_value = ChreMessage::GetMessageHubsAndEndpointsRequest;
1090 };
1091 
1092 template<> struct ChreMessageTraits<chre::fbs::GetMessageHubsAndEndpointsResponse> {
1093   static const ChreMessage enum_value = ChreMessage::GetMessageHubsAndEndpointsResponse;
1094 };
1095 
1096 template<> struct ChreMessageTraits<chre::fbs::RegisterMessageHub> {
1097   static const ChreMessage enum_value = ChreMessage::RegisterMessageHub;
1098 };
1099 
1100 template<> struct ChreMessageTraits<chre::fbs::UnregisterMessageHub> {
1101   static const ChreMessage enum_value = ChreMessage::UnregisterMessageHub;
1102 };
1103 
1104 template<> struct ChreMessageTraits<chre::fbs::RegisterEndpoint> {
1105   static const ChreMessage enum_value = ChreMessage::RegisterEndpoint;
1106 };
1107 
1108 template<> struct ChreMessageTraits<chre::fbs::UnregisterEndpoint> {
1109   static const ChreMessage enum_value = ChreMessage::UnregisterEndpoint;
1110 };
1111 
1112 template<> struct ChreMessageTraits<chre::fbs::OpenEndpointSessionRequest> {
1113   static const ChreMessage enum_value = ChreMessage::OpenEndpointSessionRequest;
1114 };
1115 
1116 template<> struct ChreMessageTraits<chre::fbs::EndpointSessionOpened> {
1117   static const ChreMessage enum_value = ChreMessage::EndpointSessionOpened;
1118 };
1119 
1120 template<> struct ChreMessageTraits<chre::fbs::EndpointSessionClosed> {
1121   static const ChreMessage enum_value = ChreMessage::EndpointSessionClosed;
1122 };
1123 
1124 template<> struct ChreMessageTraits<chre::fbs::EndpointSessionMessage> {
1125   static const ChreMessage enum_value = ChreMessage::EndpointSessionMessage;
1126 };
1127 
1128 template<> struct ChreMessageTraits<chre::fbs::EndpointSessionMessageDeliveryStatus> {
1129   static const ChreMessage enum_value = ChreMessage::EndpointSessionMessageDeliveryStatus;
1130 };
1131 
1132 struct ChreMessageUnion {
1133   ChreMessage type;
1134   void *value;
1135 
1136   ChreMessageUnion() : type(ChreMessage::NONE), value(nullptr) {}
1137   ChreMessageUnion(ChreMessageUnion&& u) FLATBUFFERS_NOEXCEPT :
1138     type(ChreMessage::NONE), value(nullptr)
1139     { std::swap(type, u.type); std::swap(value, u.value); }
1140   ChreMessageUnion(const ChreMessageUnion &);
1141   ChreMessageUnion &operator=(const ChreMessageUnion &u)
1142     { ChreMessageUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
1143   ChreMessageUnion &operator=(ChreMessageUnion &&u) FLATBUFFERS_NOEXCEPT
1144     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
1145   ~ChreMessageUnion() { Reset(); }
1146 
1147   void Reset();
1148 
1149 #ifndef FLATBUFFERS_CPP98_STL
1150   template <typename T>
1151   void Set(T&& val) {
1152     using RT = typename std::remove_reference<T>::type;
1153     Reset();
1154     type = ChreMessageTraits<typename RT::TableType>::enum_value;
1155     if (type != ChreMessage::NONE) {
1156       value = new RT(std::forward<T>(val));
1157     }
1158   }
1159 #endif  // FLATBUFFERS_CPP98_STL
1160 
1161   static void *UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver);
1162   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
1163 
1164   chre::fbs::NanoappMessageT *AsNanoappMessage() {
1165     return type == ChreMessage::NanoappMessage ?
1166       reinterpret_cast<chre::fbs::NanoappMessageT *>(value) : nullptr;
1167   }
1168   const chre::fbs::NanoappMessageT *AsNanoappMessage() const {
1169     return type == ChreMessage::NanoappMessage ?
1170       reinterpret_cast<const chre::fbs::NanoappMessageT *>(value) : nullptr;
1171   }
1172   chre::fbs::HubInfoRequestT *AsHubInfoRequest() {
1173     return type == ChreMessage::HubInfoRequest ?
1174       reinterpret_cast<chre::fbs::HubInfoRequestT *>(value) : nullptr;
1175   }
1176   const chre::fbs::HubInfoRequestT *AsHubInfoRequest() const {
1177     return type == ChreMessage::HubInfoRequest ?
1178       reinterpret_cast<const chre::fbs::HubInfoRequestT *>(value) : nullptr;
1179   }
1180   chre::fbs::HubInfoResponseT *AsHubInfoResponse() {
1181     return type == ChreMessage::HubInfoResponse ?
1182       reinterpret_cast<chre::fbs::HubInfoResponseT *>(value) : nullptr;
1183   }
1184   const chre::fbs::HubInfoResponseT *AsHubInfoResponse() const {
1185     return type == ChreMessage::HubInfoResponse ?
1186       reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value) : nullptr;
1187   }
1188   chre::fbs::NanoappListRequestT *AsNanoappListRequest() {
1189     return type == ChreMessage::NanoappListRequest ?
1190       reinterpret_cast<chre::fbs::NanoappListRequestT *>(value) : nullptr;
1191   }
1192   const chre::fbs::NanoappListRequestT *AsNanoappListRequest() const {
1193     return type == ChreMessage::NanoappListRequest ?
1194       reinterpret_cast<const chre::fbs::NanoappListRequestT *>(value) : nullptr;
1195   }
1196   chre::fbs::NanoappListResponseT *AsNanoappListResponse() {
1197     return type == ChreMessage::NanoappListResponse ?
1198       reinterpret_cast<chre::fbs::NanoappListResponseT *>(value) : nullptr;
1199   }
1200   const chre::fbs::NanoappListResponseT *AsNanoappListResponse() const {
1201     return type == ChreMessage::NanoappListResponse ?
1202       reinterpret_cast<const chre::fbs::NanoappListResponseT *>(value) : nullptr;
1203   }
1204   chre::fbs::LoadNanoappRequestT *AsLoadNanoappRequest() {
1205     return type == ChreMessage::LoadNanoappRequest ?
1206       reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(value) : nullptr;
1207   }
1208   const chre::fbs::LoadNanoappRequestT *AsLoadNanoappRequest() const {
1209     return type == ChreMessage::LoadNanoappRequest ?
1210       reinterpret_cast<const chre::fbs::LoadNanoappRequestT *>(value) : nullptr;
1211   }
1212   chre::fbs::LoadNanoappResponseT *AsLoadNanoappResponse() {
1213     return type == ChreMessage::LoadNanoappResponse ?
1214       reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(value) : nullptr;
1215   }
1216   const chre::fbs::LoadNanoappResponseT *AsLoadNanoappResponse() const {
1217     return type == ChreMessage::LoadNanoappResponse ?
1218       reinterpret_cast<const chre::fbs::LoadNanoappResponseT *>(value) : nullptr;
1219   }
1220   chre::fbs::UnloadNanoappRequestT *AsUnloadNanoappRequest() {
1221     return type == ChreMessage::UnloadNanoappRequest ?
1222       reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(value) : nullptr;
1223   }
1224   const chre::fbs::UnloadNanoappRequestT *AsUnloadNanoappRequest() const {
1225     return type == ChreMessage::UnloadNanoappRequest ?
1226       reinterpret_cast<const chre::fbs::UnloadNanoappRequestT *>(value) : nullptr;
1227   }
1228   chre::fbs::UnloadNanoappResponseT *AsUnloadNanoappResponse() {
1229     return type == ChreMessage::UnloadNanoappResponse ?
1230       reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(value) : nullptr;
1231   }
1232   const chre::fbs::UnloadNanoappResponseT *AsUnloadNanoappResponse() const {
1233     return type == ChreMessage::UnloadNanoappResponse ?
1234       reinterpret_cast<const chre::fbs::UnloadNanoappResponseT *>(value) : nullptr;
1235   }
1236   chre::fbs::LogMessageT *AsLogMessage() {
1237     return type == ChreMessage::LogMessage ?
1238       reinterpret_cast<chre::fbs::LogMessageT *>(value) : nullptr;
1239   }
1240   const chre::fbs::LogMessageT *AsLogMessage() const {
1241     return type == ChreMessage::LogMessage ?
1242       reinterpret_cast<const chre::fbs::LogMessageT *>(value) : nullptr;
1243   }
1244   chre::fbs::TimeSyncMessageT *AsTimeSyncMessage() {
1245     return type == ChreMessage::TimeSyncMessage ?
1246       reinterpret_cast<chre::fbs::TimeSyncMessageT *>(value) : nullptr;
1247   }
1248   const chre::fbs::TimeSyncMessageT *AsTimeSyncMessage() const {
1249     return type == ChreMessage::TimeSyncMessage ?
1250       reinterpret_cast<const chre::fbs::TimeSyncMessageT *>(value) : nullptr;
1251   }
1252   chre::fbs::DebugDumpRequestT *AsDebugDumpRequest() {
1253     return type == ChreMessage::DebugDumpRequest ?
1254       reinterpret_cast<chre::fbs::DebugDumpRequestT *>(value) : nullptr;
1255   }
1256   const chre::fbs::DebugDumpRequestT *AsDebugDumpRequest() const {
1257     return type == ChreMessage::DebugDumpRequest ?
1258       reinterpret_cast<const chre::fbs::DebugDumpRequestT *>(value) : nullptr;
1259   }
1260   chre::fbs::DebugDumpDataT *AsDebugDumpData() {
1261     return type == ChreMessage::DebugDumpData ?
1262       reinterpret_cast<chre::fbs::DebugDumpDataT *>(value) : nullptr;
1263   }
1264   const chre::fbs::DebugDumpDataT *AsDebugDumpData() const {
1265     return type == ChreMessage::DebugDumpData ?
1266       reinterpret_cast<const chre::fbs::DebugDumpDataT *>(value) : nullptr;
1267   }
1268   chre::fbs::DebugDumpResponseT *AsDebugDumpResponse() {
1269     return type == ChreMessage::DebugDumpResponse ?
1270       reinterpret_cast<chre::fbs::DebugDumpResponseT *>(value) : nullptr;
1271   }
1272   const chre::fbs::DebugDumpResponseT *AsDebugDumpResponse() const {
1273     return type == ChreMessage::DebugDumpResponse ?
1274       reinterpret_cast<const chre::fbs::DebugDumpResponseT *>(value) : nullptr;
1275   }
1276   chre::fbs::TimeSyncRequestT *AsTimeSyncRequest() {
1277     return type == ChreMessage::TimeSyncRequest ?
1278       reinterpret_cast<chre::fbs::TimeSyncRequestT *>(value) : nullptr;
1279   }
1280   const chre::fbs::TimeSyncRequestT *AsTimeSyncRequest() const {
1281     return type == ChreMessage::TimeSyncRequest ?
1282       reinterpret_cast<const chre::fbs::TimeSyncRequestT *>(value) : nullptr;
1283   }
1284   chre::fbs::LowPowerMicAccessRequestT *AsLowPowerMicAccessRequest() {
1285     return type == ChreMessage::LowPowerMicAccessRequest ?
1286       reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(value) : nullptr;
1287   }
1288   const chre::fbs::LowPowerMicAccessRequestT *AsLowPowerMicAccessRequest() const {
1289     return type == ChreMessage::LowPowerMicAccessRequest ?
1290       reinterpret_cast<const chre::fbs::LowPowerMicAccessRequestT *>(value) : nullptr;
1291   }
1292   chre::fbs::LowPowerMicAccessReleaseT *AsLowPowerMicAccessRelease() {
1293     return type == ChreMessage::LowPowerMicAccessRelease ?
1294       reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(value) : nullptr;
1295   }
1296   const chre::fbs::LowPowerMicAccessReleaseT *AsLowPowerMicAccessRelease() const {
1297     return type == ChreMessage::LowPowerMicAccessRelease ?
1298       reinterpret_cast<const chre::fbs::LowPowerMicAccessReleaseT *>(value) : nullptr;
1299   }
1300   chre::fbs::SettingChangeMessageT *AsSettingChangeMessage() {
1301     return type == ChreMessage::SettingChangeMessage ?
1302       reinterpret_cast<chre::fbs::SettingChangeMessageT *>(value) : nullptr;
1303   }
1304   const chre::fbs::SettingChangeMessageT *AsSettingChangeMessage() const {
1305     return type == ChreMessage::SettingChangeMessage ?
1306       reinterpret_cast<const chre::fbs::SettingChangeMessageT *>(value) : nullptr;
1307   }
1308   chre::fbs::LogMessageV2T *AsLogMessageV2() {
1309     return type == ChreMessage::LogMessageV2 ?
1310       reinterpret_cast<chre::fbs::LogMessageV2T *>(value) : nullptr;
1311   }
1312   const chre::fbs::LogMessageV2T *AsLogMessageV2() const {
1313     return type == ChreMessage::LogMessageV2 ?
1314       reinterpret_cast<const chre::fbs::LogMessageV2T *>(value) : nullptr;
1315   }
1316   chre::fbs::SelfTestRequestT *AsSelfTestRequest() {
1317     return type == ChreMessage::SelfTestRequest ?
1318       reinterpret_cast<chre::fbs::SelfTestRequestT *>(value) : nullptr;
1319   }
1320   const chre::fbs::SelfTestRequestT *AsSelfTestRequest() const {
1321     return type == ChreMessage::SelfTestRequest ?
1322       reinterpret_cast<const chre::fbs::SelfTestRequestT *>(value) : nullptr;
1323   }
1324   chre::fbs::SelfTestResponseT *AsSelfTestResponse() {
1325     return type == ChreMessage::SelfTestResponse ?
1326       reinterpret_cast<chre::fbs::SelfTestResponseT *>(value) : nullptr;
1327   }
1328   const chre::fbs::SelfTestResponseT *AsSelfTestResponse() const {
1329     return type == ChreMessage::SelfTestResponse ?
1330       reinterpret_cast<const chre::fbs::SelfTestResponseT *>(value) : nullptr;
1331   }
1332   chre::fbs::HostEndpointConnectedT *AsHostEndpointConnected() {
1333     return type == ChreMessage::HostEndpointConnected ?
1334       reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(value) : nullptr;
1335   }
1336   const chre::fbs::HostEndpointConnectedT *AsHostEndpointConnected() const {
1337     return type == ChreMessage::HostEndpointConnected ?
1338       reinterpret_cast<const chre::fbs::HostEndpointConnectedT *>(value) : nullptr;
1339   }
1340   chre::fbs::HostEndpointDisconnectedT *AsHostEndpointDisconnected() {
1341     return type == ChreMessage::HostEndpointDisconnected ?
1342       reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(value) : nullptr;
1343   }
1344   const chre::fbs::HostEndpointDisconnectedT *AsHostEndpointDisconnected() const {
1345     return type == ChreMessage::HostEndpointDisconnected ?
1346       reinterpret_cast<const chre::fbs::HostEndpointDisconnectedT *>(value) : nullptr;
1347   }
1348   chre::fbs::MetricLogT *AsMetricLog() {
1349     return type == ChreMessage::MetricLog ?
1350       reinterpret_cast<chre::fbs::MetricLogT *>(value) : nullptr;
1351   }
1352   const chre::fbs::MetricLogT *AsMetricLog() const {
1353     return type == ChreMessage::MetricLog ?
1354       reinterpret_cast<const chre::fbs::MetricLogT *>(value) : nullptr;
1355   }
1356   chre::fbs::BatchedMetricLogT *AsBatchedMetricLog() {
1357     return type == ChreMessage::BatchedMetricLog ?
1358       reinterpret_cast<chre::fbs::BatchedMetricLogT *>(value) : nullptr;
1359   }
1360   const chre::fbs::BatchedMetricLogT *AsBatchedMetricLog() const {
1361     return type == ChreMessage::BatchedMetricLog ?
1362       reinterpret_cast<const chre::fbs::BatchedMetricLogT *>(value) : nullptr;
1363   }
1364   chre::fbs::NanConfigurationRequestT *AsNanConfigurationRequest() {
1365     return type == ChreMessage::NanConfigurationRequest ?
1366       reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(value) : nullptr;
1367   }
1368   const chre::fbs::NanConfigurationRequestT *AsNanConfigurationRequest() const {
1369     return type == ChreMessage::NanConfigurationRequest ?
1370       reinterpret_cast<const chre::fbs::NanConfigurationRequestT *>(value) : nullptr;
1371   }
1372   chre::fbs::NanConfigurationUpdateT *AsNanConfigurationUpdate() {
1373     return type == ChreMessage::NanConfigurationUpdate ?
1374       reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(value) : nullptr;
1375   }
1376   const chre::fbs::NanConfigurationUpdateT *AsNanConfigurationUpdate() const {
1377     return type == ChreMessage::NanConfigurationUpdate ?
1378       reinterpret_cast<const chre::fbs::NanConfigurationUpdateT *>(value) : nullptr;
1379   }
1380   chre::fbs::DebugConfigurationT *AsDebugConfiguration() {
1381     return type == ChreMessage::DebugConfiguration ?
1382       reinterpret_cast<chre::fbs::DebugConfigurationT *>(value) : nullptr;
1383   }
1384   const chre::fbs::DebugConfigurationT *AsDebugConfiguration() const {
1385     return type == ChreMessage::DebugConfiguration ?
1386       reinterpret_cast<const chre::fbs::DebugConfigurationT *>(value) : nullptr;
1387   }
1388   chre::fbs::PulseRequestT *AsPulseRequest() {
1389     return type == ChreMessage::PulseRequest ?
1390       reinterpret_cast<chre::fbs::PulseRequestT *>(value) : nullptr;
1391   }
1392   const chre::fbs::PulseRequestT *AsPulseRequest() const {
1393     return type == ChreMessage::PulseRequest ?
1394       reinterpret_cast<const chre::fbs::PulseRequestT *>(value) : nullptr;
1395   }
1396   chre::fbs::PulseResponseT *AsPulseResponse() {
1397     return type == ChreMessage::PulseResponse ?
1398       reinterpret_cast<chre::fbs::PulseResponseT *>(value) : nullptr;
1399   }
1400   const chre::fbs::PulseResponseT *AsPulseResponse() const {
1401     return type == ChreMessage::PulseResponse ?
1402       reinterpret_cast<const chre::fbs::PulseResponseT *>(value) : nullptr;
1403   }
1404   chre::fbs::NanoappTokenDatabaseInfoT *AsNanoappTokenDatabaseInfo() {
1405     return type == ChreMessage::NanoappTokenDatabaseInfo ?
1406       reinterpret_cast<chre::fbs::NanoappTokenDatabaseInfoT *>(value) : nullptr;
1407   }
1408   const chre::fbs::NanoappTokenDatabaseInfoT *AsNanoappTokenDatabaseInfo() const {
1409     return type == ChreMessage::NanoappTokenDatabaseInfo ?
1410       reinterpret_cast<const chre::fbs::NanoappTokenDatabaseInfoT *>(value) : nullptr;
1411   }
1412   chre::fbs::MessageDeliveryStatusT *AsMessageDeliveryStatus() {
1413     return type == ChreMessage::MessageDeliveryStatus ?
1414       reinterpret_cast<chre::fbs::MessageDeliveryStatusT *>(value) : nullptr;
1415   }
1416   const chre::fbs::MessageDeliveryStatusT *AsMessageDeliveryStatus() const {
1417     return type == ChreMessage::MessageDeliveryStatus ?
1418       reinterpret_cast<const chre::fbs::MessageDeliveryStatusT *>(value) : nullptr;
1419   }
1420   chre::fbs::BtSocketOpenT *AsBtSocketOpen() {
1421     return type == ChreMessage::BtSocketOpen ?
1422       reinterpret_cast<chre::fbs::BtSocketOpenT *>(value) : nullptr;
1423   }
1424   const chre::fbs::BtSocketOpenT *AsBtSocketOpen() const {
1425     return type == ChreMessage::BtSocketOpen ?
1426       reinterpret_cast<const chre::fbs::BtSocketOpenT *>(value) : nullptr;
1427   }
1428   chre::fbs::BtSocketOpenResponseT *AsBtSocketOpenResponse() {
1429     return type == ChreMessage::BtSocketOpenResponse ?
1430       reinterpret_cast<chre::fbs::BtSocketOpenResponseT *>(value) : nullptr;
1431   }
1432   const chre::fbs::BtSocketOpenResponseT *AsBtSocketOpenResponse() const {
1433     return type == ChreMessage::BtSocketOpenResponse ?
1434       reinterpret_cast<const chre::fbs::BtSocketOpenResponseT *>(value) : nullptr;
1435   }
1436   chre::fbs::BtSocketCloseT *AsBtSocketClose() {
1437     return type == ChreMessage::BtSocketClose ?
1438       reinterpret_cast<chre::fbs::BtSocketCloseT *>(value) : nullptr;
1439   }
1440   const chre::fbs::BtSocketCloseT *AsBtSocketClose() const {
1441     return type == ChreMessage::BtSocketClose ?
1442       reinterpret_cast<const chre::fbs::BtSocketCloseT *>(value) : nullptr;
1443   }
1444   chre::fbs::BtSocketCloseResponseT *AsBtSocketCloseResponse() {
1445     return type == ChreMessage::BtSocketCloseResponse ?
1446       reinterpret_cast<chre::fbs::BtSocketCloseResponseT *>(value) : nullptr;
1447   }
1448   const chre::fbs::BtSocketCloseResponseT *AsBtSocketCloseResponse() const {
1449     return type == ChreMessage::BtSocketCloseResponse ?
1450       reinterpret_cast<const chre::fbs::BtSocketCloseResponseT *>(value) : nullptr;
1451   }
1452   chre::fbs::GetMessageHubsAndEndpointsRequestT *AsGetMessageHubsAndEndpointsRequest() {
1453     return type == ChreMessage::GetMessageHubsAndEndpointsRequest ?
1454       reinterpret_cast<chre::fbs::GetMessageHubsAndEndpointsRequestT *>(value) : nullptr;
1455   }
1456   const chre::fbs::GetMessageHubsAndEndpointsRequestT *AsGetMessageHubsAndEndpointsRequest() const {
1457     return type == ChreMessage::GetMessageHubsAndEndpointsRequest ?
1458       reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsRequestT *>(value) : nullptr;
1459   }
1460   chre::fbs::GetMessageHubsAndEndpointsResponseT *AsGetMessageHubsAndEndpointsResponse() {
1461     return type == ChreMessage::GetMessageHubsAndEndpointsResponse ?
1462       reinterpret_cast<chre::fbs::GetMessageHubsAndEndpointsResponseT *>(value) : nullptr;
1463   }
1464   const chre::fbs::GetMessageHubsAndEndpointsResponseT *AsGetMessageHubsAndEndpointsResponse() const {
1465     return type == ChreMessage::GetMessageHubsAndEndpointsResponse ?
1466       reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsResponseT *>(value) : nullptr;
1467   }
1468   chre::fbs::RegisterMessageHubT *AsRegisterMessageHub() {
1469     return type == ChreMessage::RegisterMessageHub ?
1470       reinterpret_cast<chre::fbs::RegisterMessageHubT *>(value) : nullptr;
1471   }
1472   const chre::fbs::RegisterMessageHubT *AsRegisterMessageHub() const {
1473     return type == ChreMessage::RegisterMessageHub ?
1474       reinterpret_cast<const chre::fbs::RegisterMessageHubT *>(value) : nullptr;
1475   }
1476   chre::fbs::UnregisterMessageHubT *AsUnregisterMessageHub() {
1477     return type == ChreMessage::UnregisterMessageHub ?
1478       reinterpret_cast<chre::fbs::UnregisterMessageHubT *>(value) : nullptr;
1479   }
1480   const chre::fbs::UnregisterMessageHubT *AsUnregisterMessageHub() const {
1481     return type == ChreMessage::UnregisterMessageHub ?
1482       reinterpret_cast<const chre::fbs::UnregisterMessageHubT *>(value) : nullptr;
1483   }
1484   chre::fbs::RegisterEndpointT *AsRegisterEndpoint() {
1485     return type == ChreMessage::RegisterEndpoint ?
1486       reinterpret_cast<chre::fbs::RegisterEndpointT *>(value) : nullptr;
1487   }
1488   const chre::fbs::RegisterEndpointT *AsRegisterEndpoint() const {
1489     return type == ChreMessage::RegisterEndpoint ?
1490       reinterpret_cast<const chre::fbs::RegisterEndpointT *>(value) : nullptr;
1491   }
1492   chre::fbs::UnregisterEndpointT *AsUnregisterEndpoint() {
1493     return type == ChreMessage::UnregisterEndpoint ?
1494       reinterpret_cast<chre::fbs::UnregisterEndpointT *>(value) : nullptr;
1495   }
1496   const chre::fbs::UnregisterEndpointT *AsUnregisterEndpoint() const {
1497     return type == ChreMessage::UnregisterEndpoint ?
1498       reinterpret_cast<const chre::fbs::UnregisterEndpointT *>(value) : nullptr;
1499   }
1500   chre::fbs::OpenEndpointSessionRequestT *AsOpenEndpointSessionRequest() {
1501     return type == ChreMessage::OpenEndpointSessionRequest ?
1502       reinterpret_cast<chre::fbs::OpenEndpointSessionRequestT *>(value) : nullptr;
1503   }
1504   const chre::fbs::OpenEndpointSessionRequestT *AsOpenEndpointSessionRequest() const {
1505     return type == ChreMessage::OpenEndpointSessionRequest ?
1506       reinterpret_cast<const chre::fbs::OpenEndpointSessionRequestT *>(value) : nullptr;
1507   }
1508   chre::fbs::EndpointSessionOpenedT *AsEndpointSessionOpened() {
1509     return type == ChreMessage::EndpointSessionOpened ?
1510       reinterpret_cast<chre::fbs::EndpointSessionOpenedT *>(value) : nullptr;
1511   }
1512   const chre::fbs::EndpointSessionOpenedT *AsEndpointSessionOpened() const {
1513     return type == ChreMessage::EndpointSessionOpened ?
1514       reinterpret_cast<const chre::fbs::EndpointSessionOpenedT *>(value) : nullptr;
1515   }
1516   chre::fbs::EndpointSessionClosedT *AsEndpointSessionClosed() {
1517     return type == ChreMessage::EndpointSessionClosed ?
1518       reinterpret_cast<chre::fbs::EndpointSessionClosedT *>(value) : nullptr;
1519   }
1520   const chre::fbs::EndpointSessionClosedT *AsEndpointSessionClosed() const {
1521     return type == ChreMessage::EndpointSessionClosed ?
1522       reinterpret_cast<const chre::fbs::EndpointSessionClosedT *>(value) : nullptr;
1523   }
1524   chre::fbs::EndpointSessionMessageT *AsEndpointSessionMessage() {
1525     return type == ChreMessage::EndpointSessionMessage ?
1526       reinterpret_cast<chre::fbs::EndpointSessionMessageT *>(value) : nullptr;
1527   }
1528   const chre::fbs::EndpointSessionMessageT *AsEndpointSessionMessage() const {
1529     return type == ChreMessage::EndpointSessionMessage ?
1530       reinterpret_cast<const chre::fbs::EndpointSessionMessageT *>(value) : nullptr;
1531   }
1532   chre::fbs::EndpointSessionMessageDeliveryStatusT *AsEndpointSessionMessageDeliveryStatus() {
1533     return type == ChreMessage::EndpointSessionMessageDeliveryStatus ?
1534       reinterpret_cast<chre::fbs::EndpointSessionMessageDeliveryStatusT *>(value) : nullptr;
1535   }
1536   const chre::fbs::EndpointSessionMessageDeliveryStatusT *AsEndpointSessionMessageDeliveryStatus() const {
1537     return type == ChreMessage::EndpointSessionMessageDeliveryStatus ?
1538       reinterpret_cast<const chre::fbs::EndpointSessionMessageDeliveryStatusT *>(value) : nullptr;
1539   }
1540 };
1541 
1542 bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type);
1543 bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
1544 
1545 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) HostAddress FLATBUFFERS_FINAL_CLASS {
1546  private:
1547   uint16_t client_id_;
1548 
1549  public:
1550   HostAddress() {
1551     memset(static_cast<void *>(this), 0, sizeof(HostAddress));
1552   }
1553   HostAddress(uint16_t _client_id)
1554       : client_id_(flatbuffers::EndianScalar(_client_id)) {
1555   }
1556   uint16_t client_id() const {
1557     return flatbuffers::EndianScalar(client_id_);
1558   }
1559   void mutate_client_id(uint16_t _client_id) {
1560     flatbuffers::WriteScalar(&client_id_, _client_id);
1561   }
1562 };
1563 FLATBUFFERS_STRUCT_END(HostAddress, 2);
1564 
1565 struct NanoappMessageT : public flatbuffers::NativeTable {
1566   typedef NanoappMessage TableType;
1567   uint64_t app_id;
1568   uint32_t message_type;
1569   uint16_t host_endpoint;
1570   std::vector<uint8_t> message;
1571   uint32_t message_permissions;
1572   uint32_t permissions;
1573   bool woke_host;
1574   bool is_reliable;
1575   uint32_t message_sequence_number;
1576   NanoappMessageT()
1577       : app_id(0),
1578         message_type(0),
1579         host_endpoint(65534),
1580         message_permissions(0),
1581         permissions(0),
1582         woke_host(false),
1583         is_reliable(false),
1584         message_sequence_number(0) {
1585   }
1586 };
1587 
1588 /// Represents a message sent to/from a nanoapp from/to a client on the host
1589 struct NanoappMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1590   typedef NanoappMessageT NativeTableType;
1591   typedef NanoappMessageBuilder Builder;
1592   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1593     VT_APP_ID = 4,
1594     VT_MESSAGE_TYPE = 6,
1595     VT_HOST_ENDPOINT = 8,
1596     VT_MESSAGE = 10,
1597     VT_MESSAGE_PERMISSIONS = 12,
1598     VT_PERMISSIONS = 14,
1599     VT_WOKE_HOST = 16,
1600     VT_IS_RELIABLE = 18,
1601     VT_MESSAGE_SEQUENCE_NUMBER = 20
1602   };
1603   uint64_t app_id() const {
1604     return GetField<uint64_t>(VT_APP_ID, 0);
1605   }
1606   bool mutate_app_id(uint64_t _app_id) {
1607     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
1608   }
1609   uint32_t message_type() const {
1610     return GetField<uint32_t>(VT_MESSAGE_TYPE, 0);
1611   }
1612   bool mutate_message_type(uint32_t _message_type) {
1613     return SetField<uint32_t>(VT_MESSAGE_TYPE, _message_type, 0);
1614   }
1615   /// Identifies the host-side endpoint on the host that sent or should receive
1616   /// this message. The default value is a special value defined in the HAL and
1617   /// elsewhere that indicates that the endpoint is unspecified.
1618   uint16_t host_endpoint() const {
1619     return GetField<uint16_t>(VT_HOST_ENDPOINT, 65534);
1620   }
1621   bool mutate_host_endpoint(uint16_t _host_endpoint) {
1622     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 65534);
1623   }
1624   /// Vector containing arbitrary application-specific message data
1625   const flatbuffers::Vector<uint8_t> *message() const {
1626     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
1627   }
1628   flatbuffers::Vector<uint8_t> *mutable_message() {
1629     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
1630   }
1631   /// List of Android permissions that cover the contents of a message from a
1632   /// nanoapp to the host.
1633   /// These permissions are used to record and attribute access to
1634   /// permissions-controlled resources.
1635   uint32_t message_permissions() const {
1636     return GetField<uint32_t>(VT_MESSAGE_PERMISSIONS, 0);
1637   }
1638   bool mutate_message_permissions(uint32_t _message_permissions) {
1639     return SetField<uint32_t>(VT_MESSAGE_PERMISSIONS, _message_permissions, 0);
1640   }
1641   /// List of Android permissions declared by the nanoapp / granted to the host.
1642   /// For messages from a nanoaapp to the host, this must be a superset of
1643   /// message_permissions.
1644   uint32_t permissions() const {
1645     return GetField<uint32_t>(VT_PERMISSIONS, 0);
1646   }
1647   bool mutate_permissions(uint32_t _permissions) {
1648     return SetField<uint32_t>(VT_PERMISSIONS, _permissions, 0);
1649   }
1650   bool woke_host() const {
1651     return GetField<uint8_t>(VT_WOKE_HOST, 0) != 0;
1652   }
1653   bool mutate_woke_host(bool _woke_host) {
1654     return SetField<uint8_t>(VT_WOKE_HOST, static_cast<uint8_t>(_woke_host), 0);
1655   }
1656   bool is_reliable() const {
1657     return GetField<uint8_t>(VT_IS_RELIABLE, 0) != 0;
1658   }
1659   bool mutate_is_reliable(bool _is_reliable) {
1660     return SetField<uint8_t>(VT_IS_RELIABLE, static_cast<uint8_t>(_is_reliable), 0);
1661   }
1662   uint32_t message_sequence_number() const {
1663     return GetField<uint32_t>(VT_MESSAGE_SEQUENCE_NUMBER, 0);
1664   }
1665   bool mutate_message_sequence_number(uint32_t _message_sequence_number) {
1666     return SetField<uint32_t>(VT_MESSAGE_SEQUENCE_NUMBER, _message_sequence_number, 0);
1667   }
1668   bool Verify(flatbuffers::Verifier &verifier) const {
1669     return VerifyTableStart(verifier) &&
1670            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
1671            VerifyField<uint32_t>(verifier, VT_MESSAGE_TYPE) &&
1672            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
1673            VerifyOffsetRequired(verifier, VT_MESSAGE) &&
1674            verifier.VerifyVector(message()) &&
1675            VerifyField<uint32_t>(verifier, VT_MESSAGE_PERMISSIONS) &&
1676            VerifyField<uint32_t>(verifier, VT_PERMISSIONS) &&
1677            VerifyField<uint8_t>(verifier, VT_WOKE_HOST) &&
1678            VerifyField<uint8_t>(verifier, VT_IS_RELIABLE) &&
1679            VerifyField<uint32_t>(verifier, VT_MESSAGE_SEQUENCE_NUMBER) &&
1680            verifier.EndTable();
1681   }
1682   NanoappMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1683   void UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1684   static flatbuffers::Offset<NanoappMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1685 };
1686 
1687 struct NanoappMessageBuilder {
1688   typedef NanoappMessage Table;
1689   flatbuffers::FlatBufferBuilder &fbb_;
1690   flatbuffers::uoffset_t start_;
1691   void add_app_id(uint64_t app_id) {
1692     fbb_.AddElement<uint64_t>(NanoappMessage::VT_APP_ID, app_id, 0);
1693   }
1694   void add_message_type(uint32_t message_type) {
1695     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_TYPE, message_type, 0);
1696   }
1697   void add_host_endpoint(uint16_t host_endpoint) {
1698     fbb_.AddElement<uint16_t>(NanoappMessage::VT_HOST_ENDPOINT, host_endpoint, 65534);
1699   }
1700   void add_message(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message) {
1701     fbb_.AddOffset(NanoappMessage::VT_MESSAGE, message);
1702   }
1703   void add_message_permissions(uint32_t message_permissions) {
1704     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_PERMISSIONS, message_permissions, 0);
1705   }
1706   void add_permissions(uint32_t permissions) {
1707     fbb_.AddElement<uint32_t>(NanoappMessage::VT_PERMISSIONS, permissions, 0);
1708   }
1709   void add_woke_host(bool woke_host) {
1710     fbb_.AddElement<uint8_t>(NanoappMessage::VT_WOKE_HOST, static_cast<uint8_t>(woke_host), 0);
1711   }
1712   void add_is_reliable(bool is_reliable) {
1713     fbb_.AddElement<uint8_t>(NanoappMessage::VT_IS_RELIABLE, static_cast<uint8_t>(is_reliable), 0);
1714   }
1715   void add_message_sequence_number(uint32_t message_sequence_number) {
1716     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_SEQUENCE_NUMBER, message_sequence_number, 0);
1717   }
1718   explicit NanoappMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1719         : fbb_(_fbb) {
1720     start_ = fbb_.StartTable();
1721   }
1722   NanoappMessageBuilder &operator=(const NanoappMessageBuilder &);
1723   flatbuffers::Offset<NanoappMessage> Finish() {
1724     const auto end = fbb_.EndTable(start_);
1725     auto o = flatbuffers::Offset<NanoappMessage>(end);
1726     fbb_.Required(o, NanoappMessage::VT_MESSAGE);
1727     return o;
1728   }
1729 };
1730 
1731 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(
1732     flatbuffers::FlatBufferBuilder &_fbb,
1733     uint64_t app_id = 0,
1734     uint32_t message_type = 0,
1735     uint16_t host_endpoint = 65534,
1736     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message = 0,
1737     uint32_t message_permissions = 0,
1738     uint32_t permissions = 0,
1739     bool woke_host = false,
1740     bool is_reliable = false,
1741     uint32_t message_sequence_number = 0) {
1742   NanoappMessageBuilder builder_(_fbb);
1743   builder_.add_app_id(app_id);
1744   builder_.add_message_sequence_number(message_sequence_number);
1745   builder_.add_permissions(permissions);
1746   builder_.add_message_permissions(message_permissions);
1747   builder_.add_message(message);
1748   builder_.add_message_type(message_type);
1749   builder_.add_host_endpoint(host_endpoint);
1750   builder_.add_is_reliable(is_reliable);
1751   builder_.add_woke_host(woke_host);
1752   return builder_.Finish();
1753 }
1754 
1755 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessageDirect(
1756     flatbuffers::FlatBufferBuilder &_fbb,
1757     uint64_t app_id = 0,
1758     uint32_t message_type = 0,
1759     uint16_t host_endpoint = 65534,
1760     const std::vector<uint8_t> *message = nullptr,
1761     uint32_t message_permissions = 0,
1762     uint32_t permissions = 0,
1763     bool woke_host = false,
1764     bool is_reliable = false,
1765     uint32_t message_sequence_number = 0) {
1766   auto message__ = message ? _fbb.CreateVector<uint8_t>(*message) : 0;
1767   return chre::fbs::CreateNanoappMessage(
1768       _fbb,
1769       app_id,
1770       message_type,
1771       host_endpoint,
1772       message__,
1773       message_permissions,
1774       permissions,
1775       woke_host,
1776       is_reliable,
1777       message_sequence_number);
1778 }
1779 
1780 flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1781 
1782 struct MessageDeliveryStatusT : public flatbuffers::NativeTable {
1783   typedef MessageDeliveryStatus TableType;
1784   uint32_t message_sequence_number;
1785   int8_t error_code;
1786   MessageDeliveryStatusT()
1787       : message_sequence_number(0),
1788         error_code(0) {
1789   }
1790 };
1791 
1792 struct MessageDeliveryStatus FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1793   typedef MessageDeliveryStatusT NativeTableType;
1794   typedef MessageDeliveryStatusBuilder Builder;
1795   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1796     VT_MESSAGE_SEQUENCE_NUMBER = 4,
1797     VT_ERROR_CODE = 6
1798   };
1799   uint32_t message_sequence_number() const {
1800     return GetField<uint32_t>(VT_MESSAGE_SEQUENCE_NUMBER, 0);
1801   }
1802   bool mutate_message_sequence_number(uint32_t _message_sequence_number) {
1803     return SetField<uint32_t>(VT_MESSAGE_SEQUENCE_NUMBER, _message_sequence_number, 0);
1804   }
1805   int8_t error_code() const {
1806     return GetField<int8_t>(VT_ERROR_CODE, 0);
1807   }
1808   bool mutate_error_code(int8_t _error_code) {
1809     return SetField<int8_t>(VT_ERROR_CODE, _error_code, 0);
1810   }
1811   bool Verify(flatbuffers::Verifier &verifier) const {
1812     return VerifyTableStart(verifier) &&
1813            VerifyField<uint32_t>(verifier, VT_MESSAGE_SEQUENCE_NUMBER) &&
1814            VerifyField<int8_t>(verifier, VT_ERROR_CODE) &&
1815            verifier.EndTable();
1816   }
1817   MessageDeliveryStatusT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1818   void UnPackTo(MessageDeliveryStatusT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1819   static flatbuffers::Offset<MessageDeliveryStatus> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageDeliveryStatusT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1820 };
1821 
1822 struct MessageDeliveryStatusBuilder {
1823   typedef MessageDeliveryStatus Table;
1824   flatbuffers::FlatBufferBuilder &fbb_;
1825   flatbuffers::uoffset_t start_;
1826   void add_message_sequence_number(uint32_t message_sequence_number) {
1827     fbb_.AddElement<uint32_t>(MessageDeliveryStatus::VT_MESSAGE_SEQUENCE_NUMBER, message_sequence_number, 0);
1828   }
1829   void add_error_code(int8_t error_code) {
1830     fbb_.AddElement<int8_t>(MessageDeliveryStatus::VT_ERROR_CODE, error_code, 0);
1831   }
1832   explicit MessageDeliveryStatusBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1833         : fbb_(_fbb) {
1834     start_ = fbb_.StartTable();
1835   }
1836   MessageDeliveryStatusBuilder &operator=(const MessageDeliveryStatusBuilder &);
1837   flatbuffers::Offset<MessageDeliveryStatus> Finish() {
1838     const auto end = fbb_.EndTable(start_);
1839     auto o = flatbuffers::Offset<MessageDeliveryStatus>(end);
1840     return o;
1841   }
1842 };
1843 
1844 inline flatbuffers::Offset<MessageDeliveryStatus> CreateMessageDeliveryStatus(
1845     flatbuffers::FlatBufferBuilder &_fbb,
1846     uint32_t message_sequence_number = 0,
1847     int8_t error_code = 0) {
1848   MessageDeliveryStatusBuilder builder_(_fbb);
1849   builder_.add_message_sequence_number(message_sequence_number);
1850   builder_.add_error_code(error_code);
1851   return builder_.Finish();
1852 }
1853 
1854 flatbuffers::Offset<MessageDeliveryStatus> CreateMessageDeliveryStatus(flatbuffers::FlatBufferBuilder &_fbb, const MessageDeliveryStatusT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1855 
1856 struct HubInfoRequestT : public flatbuffers::NativeTable {
1857   typedef HubInfoRequest TableType;
1858   HubInfoRequestT() {
1859   }
1860 };
1861 
1862 struct HubInfoRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1863   typedef HubInfoRequestT NativeTableType;
1864   typedef HubInfoRequestBuilder Builder;
1865   bool Verify(flatbuffers::Verifier &verifier) const {
1866     return VerifyTableStart(verifier) &&
1867            verifier.EndTable();
1868   }
1869   HubInfoRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1870   void UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1871   static flatbuffers::Offset<HubInfoRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1872 };
1873 
1874 struct HubInfoRequestBuilder {
1875   typedef HubInfoRequest Table;
1876   flatbuffers::FlatBufferBuilder &fbb_;
1877   flatbuffers::uoffset_t start_;
1878   explicit HubInfoRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1879         : fbb_(_fbb) {
1880     start_ = fbb_.StartTable();
1881   }
1882   HubInfoRequestBuilder &operator=(const HubInfoRequestBuilder &);
1883   flatbuffers::Offset<HubInfoRequest> Finish() {
1884     const auto end = fbb_.EndTable(start_);
1885     auto o = flatbuffers::Offset<HubInfoRequest>(end);
1886     return o;
1887   }
1888 };
1889 
1890 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(
1891     flatbuffers::FlatBufferBuilder &_fbb) {
1892   HubInfoRequestBuilder builder_(_fbb);
1893   return builder_.Finish();
1894 }
1895 
1896 flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1897 
1898 struct HubInfoResponseT : public flatbuffers::NativeTable {
1899   typedef HubInfoResponse TableType;
1900   std::vector<int8_t> name;
1901   std::vector<int8_t> vendor;
1902   std::vector<int8_t> toolchain;
1903   uint32_t platform_version;
1904   uint32_t toolchain_version;
1905   float peak_mips;
1906   float stopped_power;
1907   float sleep_power;
1908   float peak_power;
1909   uint32_t max_msg_len;
1910   uint64_t platform_id;
1911   uint32_t chre_platform_version;
1912   bool supports_reliable_messages;
1913   HubInfoResponseT()
1914       : platform_version(0),
1915         toolchain_version(0),
1916         peak_mips(0.0f),
1917         stopped_power(0.0f),
1918         sleep_power(0.0f),
1919         peak_power(0.0f),
1920         max_msg_len(0),
1921         platform_id(0),
1922         chre_platform_version(0),
1923         supports_reliable_messages(false) {
1924   }
1925 };
1926 
1927 struct HubInfoResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1928   typedef HubInfoResponseT NativeTableType;
1929   typedef HubInfoResponseBuilder Builder;
1930   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1931     VT_NAME = 4,
1932     VT_VENDOR = 6,
1933     VT_TOOLCHAIN = 8,
1934     VT_PLATFORM_VERSION = 10,
1935     VT_TOOLCHAIN_VERSION = 12,
1936     VT_PEAK_MIPS = 14,
1937     VT_STOPPED_POWER = 16,
1938     VT_SLEEP_POWER = 18,
1939     VT_PEAK_POWER = 20,
1940     VT_MAX_MSG_LEN = 22,
1941     VT_PLATFORM_ID = 24,
1942     VT_CHRE_PLATFORM_VERSION = 26,
1943     VT_SUPPORTS_RELIABLE_MESSAGES = 28
1944   };
1945   /// The name of the hub. Nominally a UTF-8 string, but note that we're not
1946   /// using the built-in "string" data type from FlatBuffers here, because the
1947   /// generated C++ uses std::string which is not well-supported in CHRE. This
1948   /// applies for vendor and toolchain as well.
1949   const flatbuffers::Vector<int8_t> *name() const {
1950     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
1951   }
1952   flatbuffers::Vector<int8_t> *mutable_name() {
1953     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
1954   }
1955   const flatbuffers::Vector<int8_t> *vendor() const {
1956     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_VENDOR);
1957   }
1958   flatbuffers::Vector<int8_t> *mutable_vendor() {
1959     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_VENDOR);
1960   }
1961   const flatbuffers::Vector<int8_t> *toolchain() const {
1962     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
1963   }
1964   flatbuffers::Vector<int8_t> *mutable_toolchain() {
1965     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
1966   }
1967   /// Legacy platform version reported in the HAL; semantics not strictly
1968   /// defined
1969   uint32_t platform_version() const {
1970     return GetField<uint32_t>(VT_PLATFORM_VERSION, 0);
1971   }
1972   bool mutate_platform_version(uint32_t _platform_version) {
1973     return SetField<uint32_t>(VT_PLATFORM_VERSION, _platform_version, 0);
1974   }
1975   /// Toolchain version reported in the HAL; semantics not strictly defined
1976   uint32_t toolchain_version() const {
1977     return GetField<uint32_t>(VT_TOOLCHAIN_VERSION, 0);
1978   }
1979   bool mutate_toolchain_version(uint32_t _toolchain_version) {
1980     return SetField<uint32_t>(VT_TOOLCHAIN_VERSION, _toolchain_version, 0);
1981   }
1982   float peak_mips() const {
1983     return GetField<float>(VT_PEAK_MIPS, 0.0f);
1984   }
1985   bool mutate_peak_mips(float _peak_mips) {
1986     return SetField<float>(VT_PEAK_MIPS, _peak_mips, 0.0f);
1987   }
1988   float stopped_power() const {
1989     return GetField<float>(VT_STOPPED_POWER, 0.0f);
1990   }
1991   bool mutate_stopped_power(float _stopped_power) {
1992     return SetField<float>(VT_STOPPED_POWER, _stopped_power, 0.0f);
1993   }
1994   float sleep_power() const {
1995     return GetField<float>(VT_SLEEP_POWER, 0.0f);
1996   }
1997   bool mutate_sleep_power(float _sleep_power) {
1998     return SetField<float>(VT_SLEEP_POWER, _sleep_power, 0.0f);
1999   }
2000   float peak_power() const {
2001     return GetField<float>(VT_PEAK_POWER, 0.0f);
2002   }
2003   bool mutate_peak_power(float _peak_power) {
2004     return SetField<float>(VT_PEAK_POWER, _peak_power, 0.0f);
2005   }
2006   /// Maximum size regular message that can be sent to a nanoapp
2007   uint32_t max_msg_len() const {
2008     return GetField<uint32_t>(VT_MAX_MSG_LEN, 0);
2009   }
2010   bool mutate_max_msg_len(uint32_t _max_msg_len) {
2011     return SetField<uint32_t>(VT_MAX_MSG_LEN, _max_msg_len, 0);
2012   }
2013   /// @see chreGetPlatformId()
2014   uint64_t platform_id() const {
2015     return GetField<uint64_t>(VT_PLATFORM_ID, 0);
2016   }
2017   bool mutate_platform_id(uint64_t _platform_id) {
2018     return SetField<uint64_t>(VT_PLATFORM_ID, _platform_id, 0);
2019   }
2020   /// @see chreGetVersion()
2021   uint32_t chre_platform_version() const {
2022     return GetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, 0);
2023   }
2024   bool mutate_chre_platform_version(uint32_t _chre_platform_version) {
2025     return SetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, _chre_platform_version, 0);
2026   }
2027   /// Whether reliable messages are supported
2028   bool supports_reliable_messages() const {
2029     return GetField<uint8_t>(VT_SUPPORTS_RELIABLE_MESSAGES, 0) != 0;
2030   }
2031   bool mutate_supports_reliable_messages(bool _supports_reliable_messages) {
2032     return SetField<uint8_t>(VT_SUPPORTS_RELIABLE_MESSAGES, static_cast<uint8_t>(_supports_reliable_messages), 0);
2033   }
2034   bool Verify(flatbuffers::Verifier &verifier) const {
2035     return VerifyTableStart(verifier) &&
2036            VerifyOffset(verifier, VT_NAME) &&
2037            verifier.VerifyVector(name()) &&
2038            VerifyOffset(verifier, VT_VENDOR) &&
2039            verifier.VerifyVector(vendor()) &&
2040            VerifyOffset(verifier, VT_TOOLCHAIN) &&
2041            verifier.VerifyVector(toolchain()) &&
2042            VerifyField<uint32_t>(verifier, VT_PLATFORM_VERSION) &&
2043            VerifyField<uint32_t>(verifier, VT_TOOLCHAIN_VERSION) &&
2044            VerifyField<float>(verifier, VT_PEAK_MIPS) &&
2045            VerifyField<float>(verifier, VT_STOPPED_POWER) &&
2046            VerifyField<float>(verifier, VT_SLEEP_POWER) &&
2047            VerifyField<float>(verifier, VT_PEAK_POWER) &&
2048            VerifyField<uint32_t>(verifier, VT_MAX_MSG_LEN) &&
2049            VerifyField<uint64_t>(verifier, VT_PLATFORM_ID) &&
2050            VerifyField<uint32_t>(verifier, VT_CHRE_PLATFORM_VERSION) &&
2051            VerifyField<uint8_t>(verifier, VT_SUPPORTS_RELIABLE_MESSAGES) &&
2052            verifier.EndTable();
2053   }
2054   HubInfoResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2055   void UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2056   static flatbuffers::Offset<HubInfoResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2057 };
2058 
2059 struct HubInfoResponseBuilder {
2060   typedef HubInfoResponse Table;
2061   flatbuffers::FlatBufferBuilder &fbb_;
2062   flatbuffers::uoffset_t start_;
2063   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
2064     fbb_.AddOffset(HubInfoResponse::VT_NAME, name);
2065   }
2066   void add_vendor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor) {
2067     fbb_.AddOffset(HubInfoResponse::VT_VENDOR, vendor);
2068   }
2069   void add_toolchain(flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain) {
2070     fbb_.AddOffset(HubInfoResponse::VT_TOOLCHAIN, toolchain);
2071   }
2072   void add_platform_version(uint32_t platform_version) {
2073     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_PLATFORM_VERSION, platform_version, 0);
2074   }
2075   void add_toolchain_version(uint32_t toolchain_version) {
2076     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_TOOLCHAIN_VERSION, toolchain_version, 0);
2077   }
2078   void add_peak_mips(float peak_mips) {
2079     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_MIPS, peak_mips, 0.0f);
2080   }
2081   void add_stopped_power(float stopped_power) {
2082     fbb_.AddElement<float>(HubInfoResponse::VT_STOPPED_POWER, stopped_power, 0.0f);
2083   }
2084   void add_sleep_power(float sleep_power) {
2085     fbb_.AddElement<float>(HubInfoResponse::VT_SLEEP_POWER, sleep_power, 0.0f);
2086   }
2087   void add_peak_power(float peak_power) {
2088     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_POWER, peak_power, 0.0f);
2089   }
2090   void add_max_msg_len(uint32_t max_msg_len) {
2091     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_MAX_MSG_LEN, max_msg_len, 0);
2092   }
2093   void add_platform_id(uint64_t platform_id) {
2094     fbb_.AddElement<uint64_t>(HubInfoResponse::VT_PLATFORM_ID, platform_id, 0);
2095   }
2096   void add_chre_platform_version(uint32_t chre_platform_version) {
2097     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_CHRE_PLATFORM_VERSION, chre_platform_version, 0);
2098   }
2099   void add_supports_reliable_messages(bool supports_reliable_messages) {
2100     fbb_.AddElement<uint8_t>(HubInfoResponse::VT_SUPPORTS_RELIABLE_MESSAGES, static_cast<uint8_t>(supports_reliable_messages), 0);
2101   }
2102   explicit HubInfoResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2103         : fbb_(_fbb) {
2104     start_ = fbb_.StartTable();
2105   }
2106   HubInfoResponseBuilder &operator=(const HubInfoResponseBuilder &);
2107   flatbuffers::Offset<HubInfoResponse> Finish() {
2108     const auto end = fbb_.EndTable(start_);
2109     auto o = flatbuffers::Offset<HubInfoResponse>(end);
2110     return o;
2111   }
2112 };
2113 
2114 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(
2115     flatbuffers::FlatBufferBuilder &_fbb,
2116     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
2117     flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor = 0,
2118     flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain = 0,
2119     uint32_t platform_version = 0,
2120     uint32_t toolchain_version = 0,
2121     float peak_mips = 0.0f,
2122     float stopped_power = 0.0f,
2123     float sleep_power = 0.0f,
2124     float peak_power = 0.0f,
2125     uint32_t max_msg_len = 0,
2126     uint64_t platform_id = 0,
2127     uint32_t chre_platform_version = 0,
2128     bool supports_reliable_messages = false) {
2129   HubInfoResponseBuilder builder_(_fbb);
2130   builder_.add_platform_id(platform_id);
2131   builder_.add_chre_platform_version(chre_platform_version);
2132   builder_.add_max_msg_len(max_msg_len);
2133   builder_.add_peak_power(peak_power);
2134   builder_.add_sleep_power(sleep_power);
2135   builder_.add_stopped_power(stopped_power);
2136   builder_.add_peak_mips(peak_mips);
2137   builder_.add_toolchain_version(toolchain_version);
2138   builder_.add_platform_version(platform_version);
2139   builder_.add_toolchain(toolchain);
2140   builder_.add_vendor(vendor);
2141   builder_.add_name(name);
2142   builder_.add_supports_reliable_messages(supports_reliable_messages);
2143   return builder_.Finish();
2144 }
2145 
2146 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponseDirect(
2147     flatbuffers::FlatBufferBuilder &_fbb,
2148     const std::vector<int8_t> *name = nullptr,
2149     const std::vector<int8_t> *vendor = nullptr,
2150     const std::vector<int8_t> *toolchain = nullptr,
2151     uint32_t platform_version = 0,
2152     uint32_t toolchain_version = 0,
2153     float peak_mips = 0.0f,
2154     float stopped_power = 0.0f,
2155     float sleep_power = 0.0f,
2156     float peak_power = 0.0f,
2157     uint32_t max_msg_len = 0,
2158     uint64_t platform_id = 0,
2159     uint32_t chre_platform_version = 0,
2160     bool supports_reliable_messages = false) {
2161   auto name__ = name ? _fbb.CreateVector<int8_t>(*name) : 0;
2162   auto vendor__ = vendor ? _fbb.CreateVector<int8_t>(*vendor) : 0;
2163   auto toolchain__ = toolchain ? _fbb.CreateVector<int8_t>(*toolchain) : 0;
2164   return chre::fbs::CreateHubInfoResponse(
2165       _fbb,
2166       name__,
2167       vendor__,
2168       toolchain__,
2169       platform_version,
2170       toolchain_version,
2171       peak_mips,
2172       stopped_power,
2173       sleep_power,
2174       peak_power,
2175       max_msg_len,
2176       platform_id,
2177       chre_platform_version,
2178       supports_reliable_messages);
2179 }
2180 
2181 flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2182 
2183 struct NanoappListRequestT : public flatbuffers::NativeTable {
2184   typedef NanoappListRequest TableType;
2185   NanoappListRequestT() {
2186   }
2187 };
2188 
2189 struct NanoappListRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2190   typedef NanoappListRequestT NativeTableType;
2191   typedef NanoappListRequestBuilder Builder;
2192   bool Verify(flatbuffers::Verifier &verifier) const {
2193     return VerifyTableStart(verifier) &&
2194            verifier.EndTable();
2195   }
2196   NanoappListRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2197   void UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2198   static flatbuffers::Offset<NanoappListRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2199 };
2200 
2201 struct NanoappListRequestBuilder {
2202   typedef NanoappListRequest Table;
2203   flatbuffers::FlatBufferBuilder &fbb_;
2204   flatbuffers::uoffset_t start_;
2205   explicit NanoappListRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2206         : fbb_(_fbb) {
2207     start_ = fbb_.StartTable();
2208   }
2209   NanoappListRequestBuilder &operator=(const NanoappListRequestBuilder &);
2210   flatbuffers::Offset<NanoappListRequest> Finish() {
2211     const auto end = fbb_.EndTable(start_);
2212     auto o = flatbuffers::Offset<NanoappListRequest>(end);
2213     return o;
2214   }
2215 };
2216 
2217 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(
2218     flatbuffers::FlatBufferBuilder &_fbb) {
2219   NanoappListRequestBuilder builder_(_fbb);
2220   return builder_.Finish();
2221 }
2222 
2223 flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2224 
2225 struct NanoappRpcServiceT : public flatbuffers::NativeTable {
2226   typedef NanoappRpcService TableType;
2227   uint64_t id;
2228   uint32_t version;
2229   NanoappRpcServiceT()
2230       : id(0),
2231         version(0) {
2232   }
2233 };
2234 
2235 /// Metadata regarding a Nanoapp RPC service. See the Android API
2236 /// core/java/android/hardware/location/NanoAppRpcService.java for more details
2237 /// on how this value is used by the Android application.
2238 struct NanoappRpcService FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2239   typedef NanoappRpcServiceT NativeTableType;
2240   typedef NanoappRpcServiceBuilder Builder;
2241   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2242     VT_ID = 4,
2243     VT_VERSION = 6
2244   };
2245   uint64_t id() const {
2246     return GetField<uint64_t>(VT_ID, 0);
2247   }
2248   bool mutate_id(uint64_t _id) {
2249     return SetField<uint64_t>(VT_ID, _id, 0);
2250   }
2251   uint32_t version() const {
2252     return GetField<uint32_t>(VT_VERSION, 0);
2253   }
2254   bool mutate_version(uint32_t _version) {
2255     return SetField<uint32_t>(VT_VERSION, _version, 0);
2256   }
2257   bool Verify(flatbuffers::Verifier &verifier) const {
2258     return VerifyTableStart(verifier) &&
2259            VerifyField<uint64_t>(verifier, VT_ID) &&
2260            VerifyField<uint32_t>(verifier, VT_VERSION) &&
2261            verifier.EndTable();
2262   }
2263   NanoappRpcServiceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2264   void UnPackTo(NanoappRpcServiceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2265   static flatbuffers::Offset<NanoappRpcService> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2266 };
2267 
2268 struct NanoappRpcServiceBuilder {
2269   typedef NanoappRpcService Table;
2270   flatbuffers::FlatBufferBuilder &fbb_;
2271   flatbuffers::uoffset_t start_;
2272   void add_id(uint64_t id) {
2273     fbb_.AddElement<uint64_t>(NanoappRpcService::VT_ID, id, 0);
2274   }
2275   void add_version(uint32_t version) {
2276     fbb_.AddElement<uint32_t>(NanoappRpcService::VT_VERSION, version, 0);
2277   }
2278   explicit NanoappRpcServiceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2279         : fbb_(_fbb) {
2280     start_ = fbb_.StartTable();
2281   }
2282   NanoappRpcServiceBuilder &operator=(const NanoappRpcServiceBuilder &);
2283   flatbuffers::Offset<NanoappRpcService> Finish() {
2284     const auto end = fbb_.EndTable(start_);
2285     auto o = flatbuffers::Offset<NanoappRpcService>(end);
2286     return o;
2287   }
2288 };
2289 
2290 inline flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(
2291     flatbuffers::FlatBufferBuilder &_fbb,
2292     uint64_t id = 0,
2293     uint32_t version = 0) {
2294   NanoappRpcServiceBuilder builder_(_fbb);
2295   builder_.add_id(id);
2296   builder_.add_version(version);
2297   return builder_.Finish();
2298 }
2299 
2300 flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2301 
2302 struct NanoappListEntryT : public flatbuffers::NativeTable {
2303   typedef NanoappListEntry TableType;
2304   uint64_t app_id;
2305   uint32_t version;
2306   bool enabled;
2307   bool is_system;
2308   uint32_t permissions;
2309   std::vector<std::unique_ptr<chre::fbs::NanoappRpcServiceT>> rpc_services;
2310   NanoappListEntryT()
2311       : app_id(0),
2312         version(0),
2313         enabled(true),
2314         is_system(false),
2315         permissions(0) {
2316   }
2317 };
2318 
2319 struct NanoappListEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2320   typedef NanoappListEntryT NativeTableType;
2321   typedef NanoappListEntryBuilder Builder;
2322   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2323     VT_APP_ID = 4,
2324     VT_VERSION = 6,
2325     VT_ENABLED = 8,
2326     VT_IS_SYSTEM = 10,
2327     VT_PERMISSIONS = 12,
2328     VT_RPC_SERVICES = 14
2329   };
2330   uint64_t app_id() const {
2331     return GetField<uint64_t>(VT_APP_ID, 0);
2332   }
2333   bool mutate_app_id(uint64_t _app_id) {
2334     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
2335   }
2336   uint32_t version() const {
2337     return GetField<uint32_t>(VT_VERSION, 0);
2338   }
2339   bool mutate_version(uint32_t _version) {
2340     return SetField<uint32_t>(VT_VERSION, _version, 0);
2341   }
2342   bool enabled() const {
2343     return GetField<uint8_t>(VT_ENABLED, 1) != 0;
2344   }
2345   bool mutate_enabled(bool _enabled) {
2346     return SetField<uint8_t>(VT_ENABLED, static_cast<uint8_t>(_enabled), 1);
2347   }
2348   /// Whether the nanoapp is a pre-loaded "system" nanoapp, i.e. one that should
2349   /// not show up in the list of nanoapps in the context hub HAL. System
2350   /// nanoapps are typically used to leverage CHRE for some device functionality
2351   /// and do not interact via the context hub HAL.
2352   bool is_system() const {
2353     return GetField<uint8_t>(VT_IS_SYSTEM, 0) != 0;
2354   }
2355   bool mutate_is_system(bool _is_system) {
2356     return SetField<uint8_t>(VT_IS_SYSTEM, static_cast<uint8_t>(_is_system), 0);
2357   }
2358   /// Nanoapp permissions, if supported. Nanoapp permissions are required on
2359   /// CHRE API v1.5+, and are defined in chre/util/system/napp_permissions.h
2360   uint32_t permissions() const {
2361     return GetField<uint32_t>(VT_PERMISSIONS, 0);
2362   }
2363   bool mutate_permissions(uint32_t _permissions) {
2364     return SetField<uint32_t>(VT_PERMISSIONS, _permissions, 0);
2365   }
2366   /// The list of RPC services supported by this nanoapp.
2367   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *rpc_services() const {
2368     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *>(VT_RPC_SERVICES);
2369   }
2370   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *mutable_rpc_services() {
2371     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *>(VT_RPC_SERVICES);
2372   }
2373   bool Verify(flatbuffers::Verifier &verifier) const {
2374     return VerifyTableStart(verifier) &&
2375            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
2376            VerifyField<uint32_t>(verifier, VT_VERSION) &&
2377            VerifyField<uint8_t>(verifier, VT_ENABLED) &&
2378            VerifyField<uint8_t>(verifier, VT_IS_SYSTEM) &&
2379            VerifyField<uint32_t>(verifier, VT_PERMISSIONS) &&
2380            VerifyOffset(verifier, VT_RPC_SERVICES) &&
2381            verifier.VerifyVector(rpc_services()) &&
2382            verifier.VerifyVectorOfTables(rpc_services()) &&
2383            verifier.EndTable();
2384   }
2385   NanoappListEntryT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2386   void UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2387   static flatbuffers::Offset<NanoappListEntry> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2388 };
2389 
2390 struct NanoappListEntryBuilder {
2391   typedef NanoappListEntry Table;
2392   flatbuffers::FlatBufferBuilder &fbb_;
2393   flatbuffers::uoffset_t start_;
2394   void add_app_id(uint64_t app_id) {
2395     fbb_.AddElement<uint64_t>(NanoappListEntry::VT_APP_ID, app_id, 0);
2396   }
2397   void add_version(uint32_t version) {
2398     fbb_.AddElement<uint32_t>(NanoappListEntry::VT_VERSION, version, 0);
2399   }
2400   void add_enabled(bool enabled) {
2401     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_ENABLED, static_cast<uint8_t>(enabled), 1);
2402   }
2403   void add_is_system(bool is_system) {
2404     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_IS_SYSTEM, static_cast<uint8_t>(is_system), 0);
2405   }
2406   void add_permissions(uint32_t permissions) {
2407     fbb_.AddElement<uint32_t>(NanoappListEntry::VT_PERMISSIONS, permissions, 0);
2408   }
2409   void add_rpc_services(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>> rpc_services) {
2410     fbb_.AddOffset(NanoappListEntry::VT_RPC_SERVICES, rpc_services);
2411   }
2412   explicit NanoappListEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2413         : fbb_(_fbb) {
2414     start_ = fbb_.StartTable();
2415   }
2416   NanoappListEntryBuilder &operator=(const NanoappListEntryBuilder &);
2417   flatbuffers::Offset<NanoappListEntry> Finish() {
2418     const auto end = fbb_.EndTable(start_);
2419     auto o = flatbuffers::Offset<NanoappListEntry>(end);
2420     return o;
2421   }
2422 };
2423 
2424 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(
2425     flatbuffers::FlatBufferBuilder &_fbb,
2426     uint64_t app_id = 0,
2427     uint32_t version = 0,
2428     bool enabled = true,
2429     bool is_system = false,
2430     uint32_t permissions = 0,
2431     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>> rpc_services = 0) {
2432   NanoappListEntryBuilder builder_(_fbb);
2433   builder_.add_app_id(app_id);
2434   builder_.add_rpc_services(rpc_services);
2435   builder_.add_permissions(permissions);
2436   builder_.add_version(version);
2437   builder_.add_is_system(is_system);
2438   builder_.add_enabled(enabled);
2439   return builder_.Finish();
2440 }
2441 
2442 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntryDirect(
2443     flatbuffers::FlatBufferBuilder &_fbb,
2444     uint64_t app_id = 0,
2445     uint32_t version = 0,
2446     bool enabled = true,
2447     bool is_system = false,
2448     uint32_t permissions = 0,
2449     const std::vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *rpc_services = nullptr) {
2450   auto rpc_services__ = rpc_services ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>(*rpc_services) : 0;
2451   return chre::fbs::CreateNanoappListEntry(
2452       _fbb,
2453       app_id,
2454       version,
2455       enabled,
2456       is_system,
2457       permissions,
2458       rpc_services__);
2459 }
2460 
2461 flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2462 
2463 struct NanoappListResponseT : public flatbuffers::NativeTable {
2464   typedef NanoappListResponse TableType;
2465   std::vector<std::unique_ptr<chre::fbs::NanoappListEntryT>> nanoapps;
2466   NanoappListResponseT() {
2467   }
2468 };
2469 
2470 struct NanoappListResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2471   typedef NanoappListResponseT NativeTableType;
2472   typedef NanoappListResponseBuilder Builder;
2473   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2474     VT_NANOAPPS = 4
2475   };
2476   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *nanoapps() const {
2477     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *>(VT_NANOAPPS);
2478   }
2479   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *mutable_nanoapps() {
2480     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *>(VT_NANOAPPS);
2481   }
2482   bool Verify(flatbuffers::Verifier &verifier) const {
2483     return VerifyTableStart(verifier) &&
2484            VerifyOffsetRequired(verifier, VT_NANOAPPS) &&
2485            verifier.VerifyVector(nanoapps()) &&
2486            verifier.VerifyVectorOfTables(nanoapps()) &&
2487            verifier.EndTable();
2488   }
2489   NanoappListResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2490   void UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2491   static flatbuffers::Offset<NanoappListResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2492 };
2493 
2494 struct NanoappListResponseBuilder {
2495   typedef NanoappListResponse Table;
2496   flatbuffers::FlatBufferBuilder &fbb_;
2497   flatbuffers::uoffset_t start_;
2498   void add_nanoapps(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>> nanoapps) {
2499     fbb_.AddOffset(NanoappListResponse::VT_NANOAPPS, nanoapps);
2500   }
2501   explicit NanoappListResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2502         : fbb_(_fbb) {
2503     start_ = fbb_.StartTable();
2504   }
2505   NanoappListResponseBuilder &operator=(const NanoappListResponseBuilder &);
2506   flatbuffers::Offset<NanoappListResponse> Finish() {
2507     const auto end = fbb_.EndTable(start_);
2508     auto o = flatbuffers::Offset<NanoappListResponse>(end);
2509     fbb_.Required(o, NanoappListResponse::VT_NANOAPPS);
2510     return o;
2511   }
2512 };
2513 
2514 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(
2515     flatbuffers::FlatBufferBuilder &_fbb,
2516     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>> nanoapps = 0) {
2517   NanoappListResponseBuilder builder_(_fbb);
2518   builder_.add_nanoapps(nanoapps);
2519   return builder_.Finish();
2520 }
2521 
2522 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponseDirect(
2523     flatbuffers::FlatBufferBuilder &_fbb,
2524     const std::vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *nanoapps = nullptr) {
2525   auto nanoapps__ = nanoapps ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>(*nanoapps) : 0;
2526   return chre::fbs::CreateNanoappListResponse(
2527       _fbb,
2528       nanoapps__);
2529 }
2530 
2531 flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2532 
2533 struct LoadNanoappRequestT : public flatbuffers::NativeTable {
2534   typedef LoadNanoappRequest TableType;
2535   uint32_t transaction_id;
2536   uint64_t app_id;
2537   uint32_t app_version;
2538   uint32_t target_api_version;
2539   std::vector<uint8_t> app_binary;
2540   uint32_t fragment_id;
2541   uint32_t total_app_size;
2542   std::vector<int8_t> app_binary_file_name;
2543   uint32_t app_flags;
2544   bool respond_before_start;
2545   LoadNanoappRequestT()
2546       : transaction_id(0),
2547         app_id(0),
2548         app_version(0),
2549         target_api_version(0),
2550         fragment_id(0),
2551         total_app_size(0),
2552         app_flags(0),
2553         respond_before_start(false) {
2554   }
2555 };
2556 
2557 /// Represents a request for loading a nanoapp.
2558 /// The nanaopp can either be requested to be loaded via a file or via a buffer.
2559 /// For loading via a file, the following steps will be taken:
2560 /// 1. The loader sends a LoadNanoappRequest message to CHRE. app_binary must
2561 ///    be set for legacy purposes, but should be empty. Additionally,
2562 ///    fragment_id and total_app_size are unused in this request. The loading
2563 ///    that happens as part of this request is serialized, but asynchronous
2564 ///    meaning that load requests will be processed in the order they are sent
2565 ///    but multiple requests can be outstanding at any given time.
2566 /// 2. CHRE stores the filename and waits until its event loop is able to
2567 ///    process the request.
2568 /// 3. Once ready, the nanoapp will be loaded from the file specified in the
2569 ///    original request and will send a callback indicating the
2570 ///    completion/failure of the request.
2571 /// For loading via a buffer, loading may optionally be fragmented into multiple
2572 /// sequential requests, which will follow the following steps:
2573 /// 1. The loader sends a LoadNanoappRequest message to CHRE. If the request
2574 ///    is fragmented, then the fields fragment_id and total_app_size must
2575 ///    be defined. Once the first fragment is sent to CHRE, all subsequent
2576 ///    fragments must be delivered before a new LoadNanoappRequest can be
2577 ///    issued. If a new request is received while a current request has
2578 ///    outstanding fragments, the current request will be overridden with the
2579 ///    new one.
2580 /// 2. CHRE preallocates the required amount of memory, and loads app_binary,
2581 ///    appending to already loaded fragments as appropriate.
2582 /// 3. If the request is fragmented, then the requestor must sequentially send
2583 ///    multiple LoadNanoappRequest with incremental nanoapp binary fragments.
2584 ///    CHRE will respond with LoadNanoappResponse for each request. For
2585 ///    requests starting from the second fragment, all fields except
2586 ///    fragment_id and app_binary should be ignored by CHRE.
2587 ///
2588 ///    Once the LoadNanoappRepsonse for the last fragment is received
2589 ///    by the HAL, the HAL client will receive a callback indicating the
2590 ///    completion/failure of a load request.
2591 ///
2592 /// If any request fragment is lost, then the entire load request will be
2593 /// considered to have failed. If the request times out (e.g. the requestor
2594 /// process crashes), then the load request will be cancelled at CHRE and fail.
2595 struct LoadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2596   typedef LoadNanoappRequestT NativeTableType;
2597   typedef LoadNanoappRequestBuilder Builder;
2598   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2599     VT_TRANSACTION_ID = 4,
2600     VT_APP_ID = 6,
2601     VT_APP_VERSION = 8,
2602     VT_TARGET_API_VERSION = 10,
2603     VT_APP_BINARY = 12,
2604     VT_FRAGMENT_ID = 14,
2605     VT_TOTAL_APP_SIZE = 16,
2606     VT_APP_BINARY_FILE_NAME = 18,
2607     VT_APP_FLAGS = 20,
2608     VT_RESPOND_BEFORE_START = 22
2609   };
2610   uint32_t transaction_id() const {
2611     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
2612   }
2613   bool mutate_transaction_id(uint32_t _transaction_id) {
2614     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
2615   }
2616   uint64_t app_id() const {
2617     return GetField<uint64_t>(VT_APP_ID, 0);
2618   }
2619   bool mutate_app_id(uint64_t _app_id) {
2620     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
2621   }
2622   uint32_t app_version() const {
2623     return GetField<uint32_t>(VT_APP_VERSION, 0);
2624   }
2625   bool mutate_app_version(uint32_t _app_version) {
2626     return SetField<uint32_t>(VT_APP_VERSION, _app_version, 0);
2627   }
2628   uint32_t target_api_version() const {
2629     return GetField<uint32_t>(VT_TARGET_API_VERSION, 0);
2630   }
2631   bool mutate_target_api_version(uint32_t _target_api_version) {
2632     return SetField<uint32_t>(VT_TARGET_API_VERSION, _target_api_version, 0);
2633   }
2634   const flatbuffers::Vector<uint8_t> *app_binary() const {
2635     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
2636   }
2637   flatbuffers::Vector<uint8_t> *mutable_app_binary() {
2638     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
2639   }
2640   /// Fields that are relevant for fragmented loading
2641   /// The framgent count starts at 1 and should end at the total number of
2642   /// fragments. For clients that do not support fragmented loading, the
2643   /// default behavior should be to assume one fragment.
2644   uint32_t fragment_id() const {
2645     return GetField<uint32_t>(VT_FRAGMENT_ID, 0);
2646   }
2647   bool mutate_fragment_id(uint32_t _fragment_id) {
2648     return SetField<uint32_t>(VT_FRAGMENT_ID, _fragment_id, 0);
2649   }
2650   uint32_t total_app_size() const {
2651     return GetField<uint32_t>(VT_TOTAL_APP_SIZE, 0);
2652   }
2653   bool mutate_total_app_size(uint32_t _total_app_size) {
2654     return SetField<uint32_t>(VT_TOTAL_APP_SIZE, _total_app_size, 0);
2655   }
2656   /// Null-terminated ASCII string containing the file name that contains the
2657   /// app binary to be loaded.
2658   const flatbuffers::Vector<int8_t> *app_binary_file_name() const {
2659     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_APP_BINARY_FILE_NAME);
2660   }
2661   flatbuffers::Vector<int8_t> *mutable_app_binary_file_name() {
2662     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_APP_BINARY_FILE_NAME);
2663   }
2664   /// The nanoapp flag values from the nanoapp header defined in
2665   /// build/build_template.mk. Refer to that file for more details.
2666   uint32_t app_flags() const {
2667     return GetField<uint32_t>(VT_APP_FLAGS, 0);
2668   }
2669   bool mutate_app_flags(uint32_t _app_flags) {
2670     return SetField<uint32_t>(VT_APP_FLAGS, _app_flags, 0);
2671   }
2672   /// If true and fragmented loading is requested, the LoadNanoappResponse
2673   /// for the last fragment will be sent after the fragment was confirmed
2674   /// to be placed in memory and no additional response will be sent after
2675   /// the nanoapp is linked and started in the framework.
2676   bool respond_before_start() const {
2677     return GetField<uint8_t>(VT_RESPOND_BEFORE_START, 0) != 0;
2678   }
2679   bool mutate_respond_before_start(bool _respond_before_start) {
2680     return SetField<uint8_t>(VT_RESPOND_BEFORE_START, static_cast<uint8_t>(_respond_before_start), 0);
2681   }
2682   bool Verify(flatbuffers::Verifier &verifier) const {
2683     return VerifyTableStart(verifier) &&
2684            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
2685            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
2686            VerifyField<uint32_t>(verifier, VT_APP_VERSION) &&
2687            VerifyField<uint32_t>(verifier, VT_TARGET_API_VERSION) &&
2688            VerifyOffsetRequired(verifier, VT_APP_BINARY) &&
2689            verifier.VerifyVector(app_binary()) &&
2690            VerifyField<uint32_t>(verifier, VT_FRAGMENT_ID) &&
2691            VerifyField<uint32_t>(verifier, VT_TOTAL_APP_SIZE) &&
2692            VerifyOffset(verifier, VT_APP_BINARY_FILE_NAME) &&
2693            verifier.VerifyVector(app_binary_file_name()) &&
2694            VerifyField<uint32_t>(verifier, VT_APP_FLAGS) &&
2695            VerifyField<uint8_t>(verifier, VT_RESPOND_BEFORE_START) &&
2696            verifier.EndTable();
2697   }
2698   LoadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2699   void UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2700   static flatbuffers::Offset<LoadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2701 };
2702 
2703 struct LoadNanoappRequestBuilder {
2704   typedef LoadNanoappRequest Table;
2705   flatbuffers::FlatBufferBuilder &fbb_;
2706   flatbuffers::uoffset_t start_;
2707   void add_transaction_id(uint32_t transaction_id) {
2708     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
2709   }
2710   void add_app_id(uint64_t app_id) {
2711     fbb_.AddElement<uint64_t>(LoadNanoappRequest::VT_APP_ID, app_id, 0);
2712   }
2713   void add_app_version(uint32_t app_version) {
2714     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_VERSION, app_version, 0);
2715   }
2716   void add_target_api_version(uint32_t target_api_version) {
2717     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TARGET_API_VERSION, target_api_version, 0);
2718   }
2719   void add_app_binary(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary) {
2720     fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY, app_binary);
2721   }
2722   void add_fragment_id(uint32_t fragment_id) {
2723     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_FRAGMENT_ID, fragment_id, 0);
2724   }
2725   void add_total_app_size(uint32_t total_app_size) {
2726     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TOTAL_APP_SIZE, total_app_size, 0);
2727   }
2728   void add_app_binary_file_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> app_binary_file_name) {
2729     fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY_FILE_NAME, app_binary_file_name);
2730   }
2731   void add_app_flags(uint32_t app_flags) {
2732     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_FLAGS, app_flags, 0);
2733   }
2734   void add_respond_before_start(bool respond_before_start) {
2735     fbb_.AddElement<uint8_t>(LoadNanoappRequest::VT_RESPOND_BEFORE_START, static_cast<uint8_t>(respond_before_start), 0);
2736   }
2737   explicit LoadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2738         : fbb_(_fbb) {
2739     start_ = fbb_.StartTable();
2740   }
2741   LoadNanoappRequestBuilder &operator=(const LoadNanoappRequestBuilder &);
2742   flatbuffers::Offset<LoadNanoappRequest> Finish() {
2743     const auto end = fbb_.EndTable(start_);
2744     auto o = flatbuffers::Offset<LoadNanoappRequest>(end);
2745     fbb_.Required(o, LoadNanoappRequest::VT_APP_BINARY);
2746     return o;
2747   }
2748 };
2749 
2750 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(
2751     flatbuffers::FlatBufferBuilder &_fbb,
2752     uint32_t transaction_id = 0,
2753     uint64_t app_id = 0,
2754     uint32_t app_version = 0,
2755     uint32_t target_api_version = 0,
2756     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary = 0,
2757     uint32_t fragment_id = 0,
2758     uint32_t total_app_size = 0,
2759     flatbuffers::Offset<flatbuffers::Vector<int8_t>> app_binary_file_name = 0,
2760     uint32_t app_flags = 0,
2761     bool respond_before_start = false) {
2762   LoadNanoappRequestBuilder builder_(_fbb);
2763   builder_.add_app_id(app_id);
2764   builder_.add_app_flags(app_flags);
2765   builder_.add_app_binary_file_name(app_binary_file_name);
2766   builder_.add_total_app_size(total_app_size);
2767   builder_.add_fragment_id(fragment_id);
2768   builder_.add_app_binary(app_binary);
2769   builder_.add_target_api_version(target_api_version);
2770   builder_.add_app_version(app_version);
2771   builder_.add_transaction_id(transaction_id);
2772   builder_.add_respond_before_start(respond_before_start);
2773   return builder_.Finish();
2774 }
2775 
2776 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequestDirect(
2777     flatbuffers::FlatBufferBuilder &_fbb,
2778     uint32_t transaction_id = 0,
2779     uint64_t app_id = 0,
2780     uint32_t app_version = 0,
2781     uint32_t target_api_version = 0,
2782     const std::vector<uint8_t> *app_binary = nullptr,
2783     uint32_t fragment_id = 0,
2784     uint32_t total_app_size = 0,
2785     const std::vector<int8_t> *app_binary_file_name = nullptr,
2786     uint32_t app_flags = 0,
2787     bool respond_before_start = false) {
2788   auto app_binary__ = app_binary ? _fbb.CreateVector<uint8_t>(*app_binary) : 0;
2789   auto app_binary_file_name__ = app_binary_file_name ? _fbb.CreateVector<int8_t>(*app_binary_file_name) : 0;
2790   return chre::fbs::CreateLoadNanoappRequest(
2791       _fbb,
2792       transaction_id,
2793       app_id,
2794       app_version,
2795       target_api_version,
2796       app_binary__,
2797       fragment_id,
2798       total_app_size,
2799       app_binary_file_name__,
2800       app_flags,
2801       respond_before_start);
2802 }
2803 
2804 flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2805 
2806 struct LoadNanoappResponseT : public flatbuffers::NativeTable {
2807   typedef LoadNanoappResponse TableType;
2808   uint32_t transaction_id;
2809   bool success;
2810   uint32_t fragment_id;
2811   LoadNanoappResponseT()
2812       : transaction_id(0),
2813         success(false),
2814         fragment_id(0) {
2815   }
2816 };
2817 
2818 struct LoadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2819   typedef LoadNanoappResponseT NativeTableType;
2820   typedef LoadNanoappResponseBuilder Builder;
2821   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2822     VT_TRANSACTION_ID = 4,
2823     VT_SUCCESS = 6,
2824     VT_FRAGMENT_ID = 8
2825   };
2826   uint32_t transaction_id() const {
2827     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
2828   }
2829   bool mutate_transaction_id(uint32_t _transaction_id) {
2830     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
2831   }
2832   /// Denotes whether a load request succeeded or failed.
2833   /// If any fragment of a load request fails, the entire load request for
2834   /// the same transaction will fail.
2835   bool success() const {
2836     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
2837   }
2838   bool mutate_success(bool _success) {
2839     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
2840   }
2841   /// The fragment count of the load reponse is for.
2842   uint32_t fragment_id() const {
2843     return GetField<uint32_t>(VT_FRAGMENT_ID, 0);
2844   }
2845   bool mutate_fragment_id(uint32_t _fragment_id) {
2846     return SetField<uint32_t>(VT_FRAGMENT_ID, _fragment_id, 0);
2847   }
2848   bool Verify(flatbuffers::Verifier &verifier) const {
2849     return VerifyTableStart(verifier) &&
2850            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
2851            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
2852            VerifyField<uint32_t>(verifier, VT_FRAGMENT_ID) &&
2853            verifier.EndTable();
2854   }
2855   LoadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2856   void UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2857   static flatbuffers::Offset<LoadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2858 };
2859 
2860 struct LoadNanoappResponseBuilder {
2861   typedef LoadNanoappResponse Table;
2862   flatbuffers::FlatBufferBuilder &fbb_;
2863   flatbuffers::uoffset_t start_;
2864   void add_transaction_id(uint32_t transaction_id) {
2865     fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
2866   }
2867   void add_success(bool success) {
2868     fbb_.AddElement<uint8_t>(LoadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
2869   }
2870   void add_fragment_id(uint32_t fragment_id) {
2871     fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_FRAGMENT_ID, fragment_id, 0);
2872   }
2873   explicit LoadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2874         : fbb_(_fbb) {
2875     start_ = fbb_.StartTable();
2876   }
2877   LoadNanoappResponseBuilder &operator=(const LoadNanoappResponseBuilder &);
2878   flatbuffers::Offset<LoadNanoappResponse> Finish() {
2879     const auto end = fbb_.EndTable(start_);
2880     auto o = flatbuffers::Offset<LoadNanoappResponse>(end);
2881     return o;
2882   }
2883 };
2884 
2885 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(
2886     flatbuffers::FlatBufferBuilder &_fbb,
2887     uint32_t transaction_id = 0,
2888     bool success = false,
2889     uint32_t fragment_id = 0) {
2890   LoadNanoappResponseBuilder builder_(_fbb);
2891   builder_.add_fragment_id(fragment_id);
2892   builder_.add_transaction_id(transaction_id);
2893   builder_.add_success(success);
2894   return builder_.Finish();
2895 }
2896 
2897 flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2898 
2899 struct NanoappTokenDatabaseInfoT : public flatbuffers::NativeTable {
2900   typedef NanoappTokenDatabaseInfo TableType;
2901   uint32_t instance_id;
2902   uint64_t app_id;
2903   uint32_t database_offset_bytes;
2904   uint32_t database_size_bytes;
2905   NanoappTokenDatabaseInfoT()
2906       : instance_id(0),
2907         app_id(0),
2908         database_offset_bytes(0),
2909         database_size_bytes(0) {
2910   }
2911 };
2912 
2913 /// Contains information needed for the host to load the token database for the
2914 /// nanoapp. This message is only sent if a token database section is found in
2915 /// the nanoapp elf binary.
2916 struct NanoappTokenDatabaseInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2917   typedef NanoappTokenDatabaseInfoT NativeTableType;
2918   typedef NanoappTokenDatabaseInfoBuilder Builder;
2919   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2920     VT_INSTANCE_ID = 4,
2921     VT_APP_ID = 6,
2922     VT_DATABASE_OFFSET_BYTES = 8,
2923     VT_DATABASE_SIZE_BYTES = 10
2924   };
2925   uint32_t instance_id() const {
2926     return GetField<uint32_t>(VT_INSTANCE_ID, 0);
2927   }
2928   bool mutate_instance_id(uint32_t _instance_id) {
2929     return SetField<uint32_t>(VT_INSTANCE_ID, _instance_id, 0);
2930   }
2931   uint64_t app_id() const {
2932     return GetField<uint64_t>(VT_APP_ID, 0);
2933   }
2934   bool mutate_app_id(uint64_t _app_id) {
2935     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
2936   }
2937   /// The size offset of the token database from the start of the address of
2938   /// the ELF binary in bytes.
2939   uint32_t database_offset_bytes() const {
2940     return GetField<uint32_t>(VT_DATABASE_OFFSET_BYTES, 0);
2941   }
2942   bool mutate_database_offset_bytes(uint32_t _database_offset_bytes) {
2943     return SetField<uint32_t>(VT_DATABASE_OFFSET_BYTES, _database_offset_bytes, 0);
2944   }
2945   /// The size of the token database section in the ELF binary in bytes.
2946   uint32_t database_size_bytes() const {
2947     return GetField<uint32_t>(VT_DATABASE_SIZE_BYTES, 0);
2948   }
2949   bool mutate_database_size_bytes(uint32_t _database_size_bytes) {
2950     return SetField<uint32_t>(VT_DATABASE_SIZE_BYTES, _database_size_bytes, 0);
2951   }
2952   bool Verify(flatbuffers::Verifier &verifier) const {
2953     return VerifyTableStart(verifier) &&
2954            VerifyField<uint32_t>(verifier, VT_INSTANCE_ID) &&
2955            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
2956            VerifyField<uint32_t>(verifier, VT_DATABASE_OFFSET_BYTES) &&
2957            VerifyField<uint32_t>(verifier, VT_DATABASE_SIZE_BYTES) &&
2958            verifier.EndTable();
2959   }
2960   NanoappTokenDatabaseInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2961   void UnPackTo(NanoappTokenDatabaseInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2962   static flatbuffers::Offset<NanoappTokenDatabaseInfo> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappTokenDatabaseInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2963 };
2964 
2965 struct NanoappTokenDatabaseInfoBuilder {
2966   typedef NanoappTokenDatabaseInfo Table;
2967   flatbuffers::FlatBufferBuilder &fbb_;
2968   flatbuffers::uoffset_t start_;
2969   void add_instance_id(uint32_t instance_id) {
2970     fbb_.AddElement<uint32_t>(NanoappTokenDatabaseInfo::VT_INSTANCE_ID, instance_id, 0);
2971   }
2972   void add_app_id(uint64_t app_id) {
2973     fbb_.AddElement<uint64_t>(NanoappTokenDatabaseInfo::VT_APP_ID, app_id, 0);
2974   }
2975   void add_database_offset_bytes(uint32_t database_offset_bytes) {
2976     fbb_.AddElement<uint32_t>(NanoappTokenDatabaseInfo::VT_DATABASE_OFFSET_BYTES, database_offset_bytes, 0);
2977   }
2978   void add_database_size_bytes(uint32_t database_size_bytes) {
2979     fbb_.AddElement<uint32_t>(NanoappTokenDatabaseInfo::VT_DATABASE_SIZE_BYTES, database_size_bytes, 0);
2980   }
2981   explicit NanoappTokenDatabaseInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2982         : fbb_(_fbb) {
2983     start_ = fbb_.StartTable();
2984   }
2985   NanoappTokenDatabaseInfoBuilder &operator=(const NanoappTokenDatabaseInfoBuilder &);
2986   flatbuffers::Offset<NanoappTokenDatabaseInfo> Finish() {
2987     const auto end = fbb_.EndTable(start_);
2988     auto o = flatbuffers::Offset<NanoappTokenDatabaseInfo>(end);
2989     return o;
2990   }
2991 };
2992 
2993 inline flatbuffers::Offset<NanoappTokenDatabaseInfo> CreateNanoappTokenDatabaseInfo(
2994     flatbuffers::FlatBufferBuilder &_fbb,
2995     uint32_t instance_id = 0,
2996     uint64_t app_id = 0,
2997     uint32_t database_offset_bytes = 0,
2998     uint32_t database_size_bytes = 0) {
2999   NanoappTokenDatabaseInfoBuilder builder_(_fbb);
3000   builder_.add_app_id(app_id);
3001   builder_.add_database_size_bytes(database_size_bytes);
3002   builder_.add_database_offset_bytes(database_offset_bytes);
3003   builder_.add_instance_id(instance_id);
3004   return builder_.Finish();
3005 }
3006 
3007 flatbuffers::Offset<NanoappTokenDatabaseInfo> CreateNanoappTokenDatabaseInfo(flatbuffers::FlatBufferBuilder &_fbb, const NanoappTokenDatabaseInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3008 
3009 struct UnloadNanoappRequestT : public flatbuffers::NativeTable {
3010   typedef UnloadNanoappRequest TableType;
3011   uint32_t transaction_id;
3012   uint64_t app_id;
3013   bool allow_system_nanoapp_unload;
3014   UnloadNanoappRequestT()
3015       : transaction_id(0),
3016         app_id(0),
3017         allow_system_nanoapp_unload(false) {
3018   }
3019 };
3020 
3021 struct UnloadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3022   typedef UnloadNanoappRequestT NativeTableType;
3023   typedef UnloadNanoappRequestBuilder Builder;
3024   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3025     VT_TRANSACTION_ID = 4,
3026     VT_APP_ID = 6,
3027     VT_ALLOW_SYSTEM_NANOAPP_UNLOAD = 8
3028   };
3029   uint32_t transaction_id() const {
3030     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
3031   }
3032   bool mutate_transaction_id(uint32_t _transaction_id) {
3033     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
3034   }
3035   uint64_t app_id() const {
3036     return GetField<uint64_t>(VT_APP_ID, 0);
3037   }
3038   bool mutate_app_id(uint64_t _app_id) {
3039     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
3040   }
3041   /// Set to true to allow this request to unload nanoapps identified as "system
3042   /// nanoapps", i.e. ones with is_system set to true in NanoappListResponse.
3043   bool allow_system_nanoapp_unload() const {
3044     return GetField<uint8_t>(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, 0) != 0;
3045   }
3046   bool mutate_allow_system_nanoapp_unload(bool _allow_system_nanoapp_unload) {
3047     return SetField<uint8_t>(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(_allow_system_nanoapp_unload), 0);
3048   }
3049   bool Verify(flatbuffers::Verifier &verifier) const {
3050     return VerifyTableStart(verifier) &&
3051            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
3052            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
3053            VerifyField<uint8_t>(verifier, VT_ALLOW_SYSTEM_NANOAPP_UNLOAD) &&
3054            verifier.EndTable();
3055   }
3056   UnloadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3057   void UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3058   static flatbuffers::Offset<UnloadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3059 };
3060 
3061 struct UnloadNanoappRequestBuilder {
3062   typedef UnloadNanoappRequest Table;
3063   flatbuffers::FlatBufferBuilder &fbb_;
3064   flatbuffers::uoffset_t start_;
3065   void add_transaction_id(uint32_t transaction_id) {
3066     fbb_.AddElement<uint32_t>(UnloadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
3067   }
3068   void add_app_id(uint64_t app_id) {
3069     fbb_.AddElement<uint64_t>(UnloadNanoappRequest::VT_APP_ID, app_id, 0);
3070   }
3071   void add_allow_system_nanoapp_unload(bool allow_system_nanoapp_unload) {
3072     fbb_.AddElement<uint8_t>(UnloadNanoappRequest::VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(allow_system_nanoapp_unload), 0);
3073   }
3074   explicit UnloadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3075         : fbb_(_fbb) {
3076     start_ = fbb_.StartTable();
3077   }
3078   UnloadNanoappRequestBuilder &operator=(const UnloadNanoappRequestBuilder &);
3079   flatbuffers::Offset<UnloadNanoappRequest> Finish() {
3080     const auto end = fbb_.EndTable(start_);
3081     auto o = flatbuffers::Offset<UnloadNanoappRequest>(end);
3082     return o;
3083   }
3084 };
3085 
3086 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(
3087     flatbuffers::FlatBufferBuilder &_fbb,
3088     uint32_t transaction_id = 0,
3089     uint64_t app_id = 0,
3090     bool allow_system_nanoapp_unload = false) {
3091   UnloadNanoappRequestBuilder builder_(_fbb);
3092   builder_.add_app_id(app_id);
3093   builder_.add_transaction_id(transaction_id);
3094   builder_.add_allow_system_nanoapp_unload(allow_system_nanoapp_unload);
3095   return builder_.Finish();
3096 }
3097 
3098 flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3099 
3100 struct UnloadNanoappResponseT : public flatbuffers::NativeTable {
3101   typedef UnloadNanoappResponse TableType;
3102   uint32_t transaction_id;
3103   bool success;
3104   UnloadNanoappResponseT()
3105       : transaction_id(0),
3106         success(false) {
3107   }
3108 };
3109 
3110 struct UnloadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3111   typedef UnloadNanoappResponseT NativeTableType;
3112   typedef UnloadNanoappResponseBuilder Builder;
3113   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3114     VT_TRANSACTION_ID = 4,
3115     VT_SUCCESS = 6
3116   };
3117   uint32_t transaction_id() const {
3118     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
3119   }
3120   bool mutate_transaction_id(uint32_t _transaction_id) {
3121     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
3122   }
3123   bool success() const {
3124     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
3125   }
3126   bool mutate_success(bool _success) {
3127     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
3128   }
3129   bool Verify(flatbuffers::Verifier &verifier) const {
3130     return VerifyTableStart(verifier) &&
3131            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
3132            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
3133            verifier.EndTable();
3134   }
3135   UnloadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3136   void UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3137   static flatbuffers::Offset<UnloadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3138 };
3139 
3140 struct UnloadNanoappResponseBuilder {
3141   typedef UnloadNanoappResponse Table;
3142   flatbuffers::FlatBufferBuilder &fbb_;
3143   flatbuffers::uoffset_t start_;
3144   void add_transaction_id(uint32_t transaction_id) {
3145     fbb_.AddElement<uint32_t>(UnloadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
3146   }
3147   void add_success(bool success) {
3148     fbb_.AddElement<uint8_t>(UnloadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
3149   }
3150   explicit UnloadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3151         : fbb_(_fbb) {
3152     start_ = fbb_.StartTable();
3153   }
3154   UnloadNanoappResponseBuilder &operator=(const UnloadNanoappResponseBuilder &);
3155   flatbuffers::Offset<UnloadNanoappResponse> Finish() {
3156     const auto end = fbb_.EndTable(start_);
3157     auto o = flatbuffers::Offset<UnloadNanoappResponse>(end);
3158     return o;
3159   }
3160 };
3161 
3162 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(
3163     flatbuffers::FlatBufferBuilder &_fbb,
3164     uint32_t transaction_id = 0,
3165     bool success = false) {
3166   UnloadNanoappResponseBuilder builder_(_fbb);
3167   builder_.add_transaction_id(transaction_id);
3168   builder_.add_success(success);
3169   return builder_.Finish();
3170 }
3171 
3172 flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3173 
3174 struct LogMessageT : public flatbuffers::NativeTable {
3175   typedef LogMessage TableType;
3176   std::vector<int8_t> buffer;
3177   LogMessageT() {
3178   }
3179 };
3180 
3181 /// Represents log messages from CHRE.
3182 struct LogMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3183   typedef LogMessageT NativeTableType;
3184   typedef LogMessageBuilder Builder;
3185   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3186     VT_BUFFER = 4
3187   };
3188   /// A buffer containing formatted log data. A flat array is used here to avoid
3189   /// overhead in serializing and deserializing. The format is as follows:
3190   ///
3191   /// uint8_t                 - log level (1 = error, 2 = warning,
3192   ///                                      3 = info, 4 = debug)
3193   /// uint64_t, little-endian - timestamp in nanoseconds
3194   /// char[]                  - message to log
3195   /// char, \0                - null-terminator
3196   ///
3197   /// This pattern repeats until the end of the buffer for multiple log
3198   /// messages. The last byte will always be a null-terminator. There are no
3199   /// padding bytes between these fields. Treat this like a packed struct and be
3200   /// cautious with unaligned access when reading/writing this buffer.
3201   const flatbuffers::Vector<int8_t> *buffer() const {
3202     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_BUFFER);
3203   }
3204   flatbuffers::Vector<int8_t> *mutable_buffer() {
3205     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_BUFFER);
3206   }
3207   bool Verify(flatbuffers::Verifier &verifier) const {
3208     return VerifyTableStart(verifier) &&
3209            VerifyOffset(verifier, VT_BUFFER) &&
3210            verifier.VerifyVector(buffer()) &&
3211            verifier.EndTable();
3212   }
3213   LogMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3214   void UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3215   static flatbuffers::Offset<LogMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3216 };
3217 
3218 struct LogMessageBuilder {
3219   typedef LogMessage Table;
3220   flatbuffers::FlatBufferBuilder &fbb_;
3221   flatbuffers::uoffset_t start_;
3222   void add_buffer(flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer) {
3223     fbb_.AddOffset(LogMessage::VT_BUFFER, buffer);
3224   }
3225   explicit LogMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3226         : fbb_(_fbb) {
3227     start_ = fbb_.StartTable();
3228   }
3229   LogMessageBuilder &operator=(const LogMessageBuilder &);
3230   flatbuffers::Offset<LogMessage> Finish() {
3231     const auto end = fbb_.EndTable(start_);
3232     auto o = flatbuffers::Offset<LogMessage>(end);
3233     return o;
3234   }
3235 };
3236 
3237 inline flatbuffers::Offset<LogMessage> CreateLogMessage(
3238     flatbuffers::FlatBufferBuilder &_fbb,
3239     flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer = 0) {
3240   LogMessageBuilder builder_(_fbb);
3241   builder_.add_buffer(buffer);
3242   return builder_.Finish();
3243 }
3244 
3245 inline flatbuffers::Offset<LogMessage> CreateLogMessageDirect(
3246     flatbuffers::FlatBufferBuilder &_fbb,
3247     const std::vector<int8_t> *buffer = nullptr) {
3248   auto buffer__ = buffer ? _fbb.CreateVector<int8_t>(*buffer) : 0;
3249   return chre::fbs::CreateLogMessage(
3250       _fbb,
3251       buffer__);
3252 }
3253 
3254 flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3255 
3256 struct TimeSyncMessageT : public flatbuffers::NativeTable {
3257   typedef TimeSyncMessage TableType;
3258   int64_t offset;
3259   TimeSyncMessageT()
3260       : offset(0) {
3261   }
3262 };
3263 
3264 /// Represents a message sent to CHRE to indicate AP timestamp for time sync
3265 struct TimeSyncMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3266   typedef TimeSyncMessageT NativeTableType;
3267   typedef TimeSyncMessageBuilder Builder;
3268   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3269     VT_OFFSET = 4
3270   };
3271   /// Offset between AP and CHRE timestamp
3272   int64_t offset() const {
3273     return GetField<int64_t>(VT_OFFSET, 0);
3274   }
3275   bool mutate_offset(int64_t _offset) {
3276     return SetField<int64_t>(VT_OFFSET, _offset, 0);
3277   }
3278   bool Verify(flatbuffers::Verifier &verifier) const {
3279     return VerifyTableStart(verifier) &&
3280            VerifyField<int64_t>(verifier, VT_OFFSET) &&
3281            verifier.EndTable();
3282   }
3283   TimeSyncMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3284   void UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3285   static flatbuffers::Offset<TimeSyncMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3286 };
3287 
3288 struct TimeSyncMessageBuilder {
3289   typedef TimeSyncMessage Table;
3290   flatbuffers::FlatBufferBuilder &fbb_;
3291   flatbuffers::uoffset_t start_;
3292   void add_offset(int64_t offset) {
3293     fbb_.AddElement<int64_t>(TimeSyncMessage::VT_OFFSET, offset, 0);
3294   }
3295   explicit TimeSyncMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3296         : fbb_(_fbb) {
3297     start_ = fbb_.StartTable();
3298   }
3299   TimeSyncMessageBuilder &operator=(const TimeSyncMessageBuilder &);
3300   flatbuffers::Offset<TimeSyncMessage> Finish() {
3301     const auto end = fbb_.EndTable(start_);
3302     auto o = flatbuffers::Offset<TimeSyncMessage>(end);
3303     return o;
3304   }
3305 };
3306 
3307 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(
3308     flatbuffers::FlatBufferBuilder &_fbb,
3309     int64_t offset = 0) {
3310   TimeSyncMessageBuilder builder_(_fbb);
3311   builder_.add_offset(offset);
3312   return builder_.Finish();
3313 }
3314 
3315 flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3316 
3317 struct DebugDumpRequestT : public flatbuffers::NativeTable {
3318   typedef DebugDumpRequest TableType;
3319   DebugDumpRequestT() {
3320   }
3321 };
3322 
3323 /// A request to gather and return debugging information. Only one debug dump
3324 /// session can be active at a time. Upon accepting a request, zero or more
3325 /// DebugDumpData messages are generated, followed by a DebugDumpResponse
3326 /// indicating the completion of the operation.
3327 struct DebugDumpRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3328   typedef DebugDumpRequestT NativeTableType;
3329   typedef DebugDumpRequestBuilder Builder;
3330   bool Verify(flatbuffers::Verifier &verifier) const {
3331     return VerifyTableStart(verifier) &&
3332            verifier.EndTable();
3333   }
3334   DebugDumpRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3335   void UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3336   static flatbuffers::Offset<DebugDumpRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3337 };
3338 
3339 struct DebugDumpRequestBuilder {
3340   typedef DebugDumpRequest Table;
3341   flatbuffers::FlatBufferBuilder &fbb_;
3342   flatbuffers::uoffset_t start_;
3343   explicit DebugDumpRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3344         : fbb_(_fbb) {
3345     start_ = fbb_.StartTable();
3346   }
3347   DebugDumpRequestBuilder &operator=(const DebugDumpRequestBuilder &);
3348   flatbuffers::Offset<DebugDumpRequest> Finish() {
3349     const auto end = fbb_.EndTable(start_);
3350     auto o = flatbuffers::Offset<DebugDumpRequest>(end);
3351     return o;
3352   }
3353 };
3354 
3355 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(
3356     flatbuffers::FlatBufferBuilder &_fbb) {
3357   DebugDumpRequestBuilder builder_(_fbb);
3358   return builder_.Finish();
3359 }
3360 
3361 flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3362 
3363 struct DebugDumpDataT : public flatbuffers::NativeTable {
3364   typedef DebugDumpData TableType;
3365   std::vector<int8_t> debug_str;
3366   DebugDumpDataT() {
3367   }
3368 };
3369 
3370 struct DebugDumpData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3371   typedef DebugDumpDataT NativeTableType;
3372   typedef DebugDumpDataBuilder Builder;
3373   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3374     VT_DEBUG_STR = 4
3375   };
3376   /// Null-terminated ASCII string containing debugging information
3377   const flatbuffers::Vector<int8_t> *debug_str() const {
3378     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
3379   }
3380   flatbuffers::Vector<int8_t> *mutable_debug_str() {
3381     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
3382   }
3383   bool Verify(flatbuffers::Verifier &verifier) const {
3384     return VerifyTableStart(verifier) &&
3385            VerifyOffset(verifier, VT_DEBUG_STR) &&
3386            verifier.VerifyVector(debug_str()) &&
3387            verifier.EndTable();
3388   }
3389   DebugDumpDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3390   void UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3391   static flatbuffers::Offset<DebugDumpData> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3392 };
3393 
3394 struct DebugDumpDataBuilder {
3395   typedef DebugDumpData Table;
3396   flatbuffers::FlatBufferBuilder &fbb_;
3397   flatbuffers::uoffset_t start_;
3398   void add_debug_str(flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str) {
3399     fbb_.AddOffset(DebugDumpData::VT_DEBUG_STR, debug_str);
3400   }
3401   explicit DebugDumpDataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3402         : fbb_(_fbb) {
3403     start_ = fbb_.StartTable();
3404   }
3405   DebugDumpDataBuilder &operator=(const DebugDumpDataBuilder &);
3406   flatbuffers::Offset<DebugDumpData> Finish() {
3407     const auto end = fbb_.EndTable(start_);
3408     auto o = flatbuffers::Offset<DebugDumpData>(end);
3409     return o;
3410   }
3411 };
3412 
3413 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(
3414     flatbuffers::FlatBufferBuilder &_fbb,
3415     flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str = 0) {
3416   DebugDumpDataBuilder builder_(_fbb);
3417   builder_.add_debug_str(debug_str);
3418   return builder_.Finish();
3419 }
3420 
3421 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpDataDirect(
3422     flatbuffers::FlatBufferBuilder &_fbb,
3423     const std::vector<int8_t> *debug_str = nullptr) {
3424   auto debug_str__ = debug_str ? _fbb.CreateVector<int8_t>(*debug_str) : 0;
3425   return chre::fbs::CreateDebugDumpData(
3426       _fbb,
3427       debug_str__);
3428 }
3429 
3430 flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3431 
3432 struct DebugDumpResponseT : public flatbuffers::NativeTable {
3433   typedef DebugDumpResponse TableType;
3434   bool success;
3435   uint32_t data_count;
3436   DebugDumpResponseT()
3437       : success(false),
3438         data_count(0) {
3439   }
3440 };
3441 
3442 struct DebugDumpResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3443   typedef DebugDumpResponseT NativeTableType;
3444   typedef DebugDumpResponseBuilder Builder;
3445   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3446     VT_SUCCESS = 4,
3447     VT_DATA_COUNT = 6
3448   };
3449   /// true if the request was accepted and a dump was performed, false if it was
3450   /// rejected or failed to complete for some reason
3451   bool success() const {
3452     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
3453   }
3454   bool mutate_success(bool _success) {
3455     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
3456   }
3457   /// The number of DebugDumpData messages sent in this session
3458   uint32_t data_count() const {
3459     return GetField<uint32_t>(VT_DATA_COUNT, 0);
3460   }
3461   bool mutate_data_count(uint32_t _data_count) {
3462     return SetField<uint32_t>(VT_DATA_COUNT, _data_count, 0);
3463   }
3464   bool Verify(flatbuffers::Verifier &verifier) const {
3465     return VerifyTableStart(verifier) &&
3466            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
3467            VerifyField<uint32_t>(verifier, VT_DATA_COUNT) &&
3468            verifier.EndTable();
3469   }
3470   DebugDumpResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3471   void UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3472   static flatbuffers::Offset<DebugDumpResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3473 };
3474 
3475 struct DebugDumpResponseBuilder {
3476   typedef DebugDumpResponse Table;
3477   flatbuffers::FlatBufferBuilder &fbb_;
3478   flatbuffers::uoffset_t start_;
3479   void add_success(bool success) {
3480     fbb_.AddElement<uint8_t>(DebugDumpResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
3481   }
3482   void add_data_count(uint32_t data_count) {
3483     fbb_.AddElement<uint32_t>(DebugDumpResponse::VT_DATA_COUNT, data_count, 0);
3484   }
3485   explicit DebugDumpResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3486         : fbb_(_fbb) {
3487     start_ = fbb_.StartTable();
3488   }
3489   DebugDumpResponseBuilder &operator=(const DebugDumpResponseBuilder &);
3490   flatbuffers::Offset<DebugDumpResponse> Finish() {
3491     const auto end = fbb_.EndTable(start_);
3492     auto o = flatbuffers::Offset<DebugDumpResponse>(end);
3493     return o;
3494   }
3495 };
3496 
3497 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(
3498     flatbuffers::FlatBufferBuilder &_fbb,
3499     bool success = false,
3500     uint32_t data_count = 0) {
3501   DebugDumpResponseBuilder builder_(_fbb);
3502   builder_.add_data_count(data_count);
3503   builder_.add_success(success);
3504   return builder_.Finish();
3505 }
3506 
3507 flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3508 
3509 struct TimeSyncRequestT : public flatbuffers::NativeTable {
3510   typedef TimeSyncRequest TableType;
3511   TimeSyncRequestT() {
3512   }
3513 };
3514 
3515 /// A request from CHRE for host to initiate a time sync message
3516 /// (system feature, platform-specific - not all platforms necessarily use this)
3517 struct TimeSyncRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3518   typedef TimeSyncRequestT NativeTableType;
3519   typedef TimeSyncRequestBuilder Builder;
3520   bool Verify(flatbuffers::Verifier &verifier) const {
3521     return VerifyTableStart(verifier) &&
3522            verifier.EndTable();
3523   }
3524   TimeSyncRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3525   void UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3526   static flatbuffers::Offset<TimeSyncRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3527 };
3528 
3529 struct TimeSyncRequestBuilder {
3530   typedef TimeSyncRequest Table;
3531   flatbuffers::FlatBufferBuilder &fbb_;
3532   flatbuffers::uoffset_t start_;
3533   explicit TimeSyncRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3534         : fbb_(_fbb) {
3535     start_ = fbb_.StartTable();
3536   }
3537   TimeSyncRequestBuilder &operator=(const TimeSyncRequestBuilder &);
3538   flatbuffers::Offset<TimeSyncRequest> Finish() {
3539     const auto end = fbb_.EndTable(start_);
3540     auto o = flatbuffers::Offset<TimeSyncRequest>(end);
3541     return o;
3542   }
3543 };
3544 
3545 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(
3546     flatbuffers::FlatBufferBuilder &_fbb) {
3547   TimeSyncRequestBuilder builder_(_fbb);
3548   return builder_.Finish();
3549 }
3550 
3551 flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3552 
3553 struct LowPowerMicAccessRequestT : public flatbuffers::NativeTable {
3554   typedef LowPowerMicAccessRequest TableType;
3555   LowPowerMicAccessRequestT() {
3556   }
3557 };
3558 
3559 /// Request from CHRE to enable direct access to data from the low-power
3560 /// microphone. On some systems, coordination via the AP (e.g. with
3561 /// SoundTrigger HAL) is needed to ensure this capability is powered up when
3562 /// CHRE needs it. The host does not send a response.
3563 struct LowPowerMicAccessRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3564   typedef LowPowerMicAccessRequestT NativeTableType;
3565   typedef LowPowerMicAccessRequestBuilder Builder;
3566   bool Verify(flatbuffers::Verifier &verifier) const {
3567     return VerifyTableStart(verifier) &&
3568            verifier.EndTable();
3569   }
3570   LowPowerMicAccessRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3571   void UnPackTo(LowPowerMicAccessRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3572   static flatbuffers::Offset<LowPowerMicAccessRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3573 };
3574 
3575 struct LowPowerMicAccessRequestBuilder {
3576   typedef LowPowerMicAccessRequest Table;
3577   flatbuffers::FlatBufferBuilder &fbb_;
3578   flatbuffers::uoffset_t start_;
3579   explicit LowPowerMicAccessRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3580         : fbb_(_fbb) {
3581     start_ = fbb_.StartTable();
3582   }
3583   LowPowerMicAccessRequestBuilder &operator=(const LowPowerMicAccessRequestBuilder &);
3584   flatbuffers::Offset<LowPowerMicAccessRequest> Finish() {
3585     const auto end = fbb_.EndTable(start_);
3586     auto o = flatbuffers::Offset<LowPowerMicAccessRequest>(end);
3587     return o;
3588   }
3589 };
3590 
3591 inline flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(
3592     flatbuffers::FlatBufferBuilder &_fbb) {
3593   LowPowerMicAccessRequestBuilder builder_(_fbb);
3594   return builder_.Finish();
3595 }
3596 
3597 flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3598 
3599 struct LowPowerMicAccessReleaseT : public flatbuffers::NativeTable {
3600   typedef LowPowerMicAccessRelease TableType;
3601   LowPowerMicAccessReleaseT() {
3602   }
3603 };
3604 
3605 /// Notification from CHRE that it no longer needs direct access to low-power
3606 /// microphone data.
3607 struct LowPowerMicAccessRelease FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3608   typedef LowPowerMicAccessReleaseT NativeTableType;
3609   typedef LowPowerMicAccessReleaseBuilder Builder;
3610   bool Verify(flatbuffers::Verifier &verifier) const {
3611     return VerifyTableStart(verifier) &&
3612            verifier.EndTable();
3613   }
3614   LowPowerMicAccessReleaseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3615   void UnPackTo(LowPowerMicAccessReleaseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3616   static flatbuffers::Offset<LowPowerMicAccessRelease> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3617 };
3618 
3619 struct LowPowerMicAccessReleaseBuilder {
3620   typedef LowPowerMicAccessRelease Table;
3621   flatbuffers::FlatBufferBuilder &fbb_;
3622   flatbuffers::uoffset_t start_;
3623   explicit LowPowerMicAccessReleaseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3624         : fbb_(_fbb) {
3625     start_ = fbb_.StartTable();
3626   }
3627   LowPowerMicAccessReleaseBuilder &operator=(const LowPowerMicAccessReleaseBuilder &);
3628   flatbuffers::Offset<LowPowerMicAccessRelease> Finish() {
3629     const auto end = fbb_.EndTable(start_);
3630     auto o = flatbuffers::Offset<LowPowerMicAccessRelease>(end);
3631     return o;
3632   }
3633 };
3634 
3635 inline flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(
3636     flatbuffers::FlatBufferBuilder &_fbb) {
3637   LowPowerMicAccessReleaseBuilder builder_(_fbb);
3638   return builder_.Finish();
3639 }
3640 
3641 flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3642 
3643 struct SettingChangeMessageT : public flatbuffers::NativeTable {
3644   typedef SettingChangeMessage TableType;
3645   chre::fbs::Setting setting;
3646   chre::fbs::SettingState state;
3647   SettingChangeMessageT()
3648       : setting(chre::fbs::Setting::LOCATION),
3649         state(chre::fbs::SettingState::DISABLED) {
3650   }
3651 };
3652 
3653 /// Notification from the host that a system setting has changed
3654 struct SettingChangeMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3655   typedef SettingChangeMessageT NativeTableType;
3656   typedef SettingChangeMessageBuilder Builder;
3657   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3658     VT_SETTING = 4,
3659     VT_STATE = 6
3660   };
3661   /// The setting that has changed
3662   chre::fbs::Setting setting() const {
3663     return static_cast<chre::fbs::Setting>(GetField<int8_t>(VT_SETTING, 0));
3664   }
3665   bool mutate_setting(chre::fbs::Setting _setting) {
3666     return SetField<int8_t>(VT_SETTING, static_cast<int8_t>(_setting), 0);
3667   }
3668   /// The new setting value
3669   chre::fbs::SettingState state() const {
3670     return static_cast<chre::fbs::SettingState>(GetField<int8_t>(VT_STATE, 0));
3671   }
3672   bool mutate_state(chre::fbs::SettingState _state) {
3673     return SetField<int8_t>(VT_STATE, static_cast<int8_t>(_state), 0);
3674   }
3675   bool Verify(flatbuffers::Verifier &verifier) const {
3676     return VerifyTableStart(verifier) &&
3677            VerifyField<int8_t>(verifier, VT_SETTING) &&
3678            VerifyField<int8_t>(verifier, VT_STATE) &&
3679            verifier.EndTable();
3680   }
3681   SettingChangeMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3682   void UnPackTo(SettingChangeMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3683   static flatbuffers::Offset<SettingChangeMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3684 };
3685 
3686 struct SettingChangeMessageBuilder {
3687   typedef SettingChangeMessage Table;
3688   flatbuffers::FlatBufferBuilder &fbb_;
3689   flatbuffers::uoffset_t start_;
3690   void add_setting(chre::fbs::Setting setting) {
3691     fbb_.AddElement<int8_t>(SettingChangeMessage::VT_SETTING, static_cast<int8_t>(setting), 0);
3692   }
3693   void add_state(chre::fbs::SettingState state) {
3694     fbb_.AddElement<int8_t>(SettingChangeMessage::VT_STATE, static_cast<int8_t>(state), 0);
3695   }
3696   explicit SettingChangeMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3697         : fbb_(_fbb) {
3698     start_ = fbb_.StartTable();
3699   }
3700   SettingChangeMessageBuilder &operator=(const SettingChangeMessageBuilder &);
3701   flatbuffers::Offset<SettingChangeMessage> Finish() {
3702     const auto end = fbb_.EndTable(start_);
3703     auto o = flatbuffers::Offset<SettingChangeMessage>(end);
3704     return o;
3705   }
3706 };
3707 
3708 inline flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(
3709     flatbuffers::FlatBufferBuilder &_fbb,
3710     chre::fbs::Setting setting = chre::fbs::Setting::LOCATION,
3711     chre::fbs::SettingState state = chre::fbs::SettingState::DISABLED) {
3712   SettingChangeMessageBuilder builder_(_fbb);
3713   builder_.add_state(state);
3714   builder_.add_setting(setting);
3715   return builder_.Finish();
3716 }
3717 
3718 flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3719 
3720 struct LogMessageV2T : public flatbuffers::NativeTable {
3721   typedef LogMessageV2 TableType;
3722   std::vector<int8_t> buffer;
3723   uint32_t num_logs_dropped;
3724   LogMessageV2T()
3725       : num_logs_dropped(0) {
3726   }
3727 };
3728 
3729 /// Represents V2 log messages from CHRE.
3730 struct LogMessageV2 FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3731   typedef LogMessageV2T NativeTableType;
3732   typedef LogMessageV2Builder Builder;
3733   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3734     VT_BUFFER = 4,
3735     VT_NUM_LOGS_DROPPED = 6
3736   };
3737   /// A buffer containing formatted log data. A flat array is used here to avoid
3738   /// overhead in serializing and deserializing. The format is as follows:
3739   ///
3740   /// uint8_t                 - Log metadata, encoded as follows:
3741   ///                           [EI(Upper nibble) | Level(Lower nibble)]
3742   ///                            * Log Type
3743   ///                              (0 = No encoding, 1 = Tokenized log,
3744   ///                               2 = BT snoop log, 3 = Nanoapp Tokenized log)
3745   ///                            * LogBuffer log level (1 = error, 2 = warn,
3746   ///                                                   3 = info,  4 = debug,
3747   ///                                                   5 = verbose)
3748   /// uint32_t, little-endian - timestamp in milliseconds
3749   /// char[]                  - Log data buffer
3750   ///
3751   /// The log data buffer format is as follows:
3752   /// * Unencoded (string) logs: The log buffer can be interpreted as a NULL
3753   ///   terminated string (eg: pass to string manipulation functions, get its
3754   ///   size via strlen(), etc.).
3755   ///
3756   /// * Tokenized logs: The first byte of the log buffer indicates the size of
3757   ///   the actual encoded data to follow. For example, if a tokenized log of
3758   ///   size 24 bytes were to be represented, a buffer of size 25 bytes would
3759   ///   be needed to encode this as: [Size(1B) | Data(24B)]. A decoder would
3760   ///   then have to decode this starting from a 1 byte offset from the
3761   ///   received buffer.
3762   ///
3763   /// * Bt Snoop logs: The first byte of the log buffer indicates the direction
3764   ///   of the bt snoop log, depending on whether it is incoming for the BT
3765   ///   controller or outgoing to the arbiter. The second byte indicates the size
3766   ///   of the actual BT payload followed. For example, if a bt snoop log of
3767   ///   size 24 bytes were to be represented, a buffer of size 26 bytes would
3768   ///   be needed to encode this as: [Direction(1B) | Size(1B) | Data(24B)].
3769   ///
3770   /// * Tokenized nanoapp logs: This log type is specifically for nanoapps with
3771   ///   tokenized logs enabled. The first two bytes is the instance ID of the
3772   ///   nanoapp which sends this tokenized log message. This instance ID will be
3773   ///   used to map to the corresponding detokenizer in the log message parser.
3774   ///   The rest is similar to tokenized logs with one byte of the size followed
3775   ///   by the payload. For example, if a nanoapp tokenized log of size 24 bytes
3776   ///   were to be sent, a buffer of size 27 bytes would be to encoded as:
3777   ///   [InstanceId (2B) | Size(1B) | Data(24B)].
3778   ///
3779   /// This pattern repeats until the end of the buffer for multiple log
3780   /// messages. The last byte will always be a null-terminator. There are no
3781   /// padding bytes between these fields. Treat this like a packed struct and be
3782   /// cautious with unaligned access when reading/writing this buffer.
3783   /// Note that the log message might not be null-terminated if an encoding is
3784   /// used.
3785   const flatbuffers::Vector<int8_t> *buffer() const {
3786     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_BUFFER);
3787   }
3788   flatbuffers::Vector<int8_t> *mutable_buffer() {
3789     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_BUFFER);
3790   }
3791   /// The number of logs dropped since CHRE started
3792   uint32_t num_logs_dropped() const {
3793     return GetField<uint32_t>(VT_NUM_LOGS_DROPPED, 0);
3794   }
3795   bool mutate_num_logs_dropped(uint32_t _num_logs_dropped) {
3796     return SetField<uint32_t>(VT_NUM_LOGS_DROPPED, _num_logs_dropped, 0);
3797   }
3798   bool Verify(flatbuffers::Verifier &verifier) const {
3799     return VerifyTableStart(verifier) &&
3800            VerifyOffset(verifier, VT_BUFFER) &&
3801            verifier.VerifyVector(buffer()) &&
3802            VerifyField<uint32_t>(verifier, VT_NUM_LOGS_DROPPED) &&
3803            verifier.EndTable();
3804   }
3805   LogMessageV2T *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3806   void UnPackTo(LogMessageV2T *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3807   static flatbuffers::Offset<LogMessageV2> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3808 };
3809 
3810 struct LogMessageV2Builder {
3811   typedef LogMessageV2 Table;
3812   flatbuffers::FlatBufferBuilder &fbb_;
3813   flatbuffers::uoffset_t start_;
3814   void add_buffer(flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer) {
3815     fbb_.AddOffset(LogMessageV2::VT_BUFFER, buffer);
3816   }
3817   void add_num_logs_dropped(uint32_t num_logs_dropped) {
3818     fbb_.AddElement<uint32_t>(LogMessageV2::VT_NUM_LOGS_DROPPED, num_logs_dropped, 0);
3819   }
3820   explicit LogMessageV2Builder(flatbuffers::FlatBufferBuilder &_fbb)
3821         : fbb_(_fbb) {
3822     start_ = fbb_.StartTable();
3823   }
3824   LogMessageV2Builder &operator=(const LogMessageV2Builder &);
3825   flatbuffers::Offset<LogMessageV2> Finish() {
3826     const auto end = fbb_.EndTable(start_);
3827     auto o = flatbuffers::Offset<LogMessageV2>(end);
3828     return o;
3829   }
3830 };
3831 
3832 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(
3833     flatbuffers::FlatBufferBuilder &_fbb,
3834     flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer = 0,
3835     uint32_t num_logs_dropped = 0) {
3836   LogMessageV2Builder builder_(_fbb);
3837   builder_.add_num_logs_dropped(num_logs_dropped);
3838   builder_.add_buffer(buffer);
3839   return builder_.Finish();
3840 }
3841 
3842 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2Direct(
3843     flatbuffers::FlatBufferBuilder &_fbb,
3844     const std::vector<int8_t> *buffer = nullptr,
3845     uint32_t num_logs_dropped = 0) {
3846   auto buffer__ = buffer ? _fbb.CreateVector<int8_t>(*buffer) : 0;
3847   return chre::fbs::CreateLogMessageV2(
3848       _fbb,
3849       buffer__,
3850       num_logs_dropped);
3851 }
3852 
3853 flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3854 
3855 struct SelfTestRequestT : public flatbuffers::NativeTable {
3856   typedef SelfTestRequest TableType;
3857   SelfTestRequestT() {
3858   }
3859 };
3860 
3861 struct SelfTestRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3862   typedef SelfTestRequestT NativeTableType;
3863   typedef SelfTestRequestBuilder Builder;
3864   bool Verify(flatbuffers::Verifier &verifier) const {
3865     return VerifyTableStart(verifier) &&
3866            verifier.EndTable();
3867   }
3868   SelfTestRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3869   void UnPackTo(SelfTestRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3870   static flatbuffers::Offset<SelfTestRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3871 };
3872 
3873 struct SelfTestRequestBuilder {
3874   typedef SelfTestRequest Table;
3875   flatbuffers::FlatBufferBuilder &fbb_;
3876   flatbuffers::uoffset_t start_;
3877   explicit SelfTestRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3878         : fbb_(_fbb) {
3879     start_ = fbb_.StartTable();
3880   }
3881   SelfTestRequestBuilder &operator=(const SelfTestRequestBuilder &);
3882   flatbuffers::Offset<SelfTestRequest> Finish() {
3883     const auto end = fbb_.EndTable(start_);
3884     auto o = flatbuffers::Offset<SelfTestRequest>(end);
3885     return o;
3886   }
3887 };
3888 
3889 inline flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(
3890     flatbuffers::FlatBufferBuilder &_fbb) {
3891   SelfTestRequestBuilder builder_(_fbb);
3892   return builder_.Finish();
3893 }
3894 
3895 flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3896 
3897 struct SelfTestResponseT : public flatbuffers::NativeTable {
3898   typedef SelfTestResponse TableType;
3899   bool success;
3900   SelfTestResponseT()
3901       : success(false) {
3902   }
3903 };
3904 
3905 struct SelfTestResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3906   typedef SelfTestResponseT NativeTableType;
3907   typedef SelfTestResponseBuilder Builder;
3908   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3909     VT_SUCCESS = 4
3910   };
3911   bool success() const {
3912     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
3913   }
3914   bool mutate_success(bool _success) {
3915     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
3916   }
3917   bool Verify(flatbuffers::Verifier &verifier) const {
3918     return VerifyTableStart(verifier) &&
3919            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
3920            verifier.EndTable();
3921   }
3922   SelfTestResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3923   void UnPackTo(SelfTestResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3924   static flatbuffers::Offset<SelfTestResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3925 };
3926 
3927 struct SelfTestResponseBuilder {
3928   typedef SelfTestResponse Table;
3929   flatbuffers::FlatBufferBuilder &fbb_;
3930   flatbuffers::uoffset_t start_;
3931   void add_success(bool success) {
3932     fbb_.AddElement<uint8_t>(SelfTestResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
3933   }
3934   explicit SelfTestResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3935         : fbb_(_fbb) {
3936     start_ = fbb_.StartTable();
3937   }
3938   SelfTestResponseBuilder &operator=(const SelfTestResponseBuilder &);
3939   flatbuffers::Offset<SelfTestResponse> Finish() {
3940     const auto end = fbb_.EndTable(start_);
3941     auto o = flatbuffers::Offset<SelfTestResponse>(end);
3942     return o;
3943   }
3944 };
3945 
3946 inline flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(
3947     flatbuffers::FlatBufferBuilder &_fbb,
3948     bool success = false) {
3949   SelfTestResponseBuilder builder_(_fbb);
3950   builder_.add_success(success);
3951   return builder_.Finish();
3952 }
3953 
3954 flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3955 
3956 struct HostEndpointConnectedT : public flatbuffers::NativeTable {
3957   typedef HostEndpointConnected TableType;
3958   uint16_t host_endpoint;
3959   uint8_t type;
3960   std::vector<int8_t> package_name;
3961   std::vector<int8_t> attribution_tag;
3962   HostEndpointConnectedT()
3963       : host_endpoint(0),
3964         type(0) {
3965   }
3966 };
3967 
3968 struct HostEndpointConnected FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3969   typedef HostEndpointConnectedT NativeTableType;
3970   typedef HostEndpointConnectedBuilder Builder;
3971   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3972     VT_HOST_ENDPOINT = 4,
3973     VT_TYPE = 6,
3974     VT_PACKAGE_NAME = 8,
3975     VT_ATTRIBUTION_TAG = 10
3976   };
3977   /// The host-side endpoint that has connected to the framework.
3978   uint16_t host_endpoint() const {
3979     return GetField<uint16_t>(VT_HOST_ENDPOINT, 0);
3980   }
3981   bool mutate_host_endpoint(uint16_t _host_endpoint) {
3982     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 0);
3983   }
3984   /// The type of host endpoint, which should be any of the CHRE_HOST_ENDPOINT_TYPE_*
3985   /// values defined in the chre_api/chre/event.h.
3986   uint8_t type() const {
3987     return GetField<uint8_t>(VT_TYPE, 0);
3988   }
3989   bool mutate_type(uint8_t _type) {
3990     return SetField<uint8_t>(VT_TYPE, _type, 0);
3991   }
3992   /// The (optional) package name associated with the host endpoint.
3993   const flatbuffers::Vector<int8_t> *package_name() const {
3994     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_PACKAGE_NAME);
3995   }
3996   flatbuffers::Vector<int8_t> *mutable_package_name() {
3997     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_PACKAGE_NAME);
3998   }
3999   /// The (optional) attribution tag associated with this host.
4000   const flatbuffers::Vector<int8_t> *attribution_tag() const {
4001     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_ATTRIBUTION_TAG);
4002   }
4003   flatbuffers::Vector<int8_t> *mutable_attribution_tag() {
4004     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_ATTRIBUTION_TAG);
4005   }
4006   bool Verify(flatbuffers::Verifier &verifier) const {
4007     return VerifyTableStart(verifier) &&
4008            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
4009            VerifyField<uint8_t>(verifier, VT_TYPE) &&
4010            VerifyOffset(verifier, VT_PACKAGE_NAME) &&
4011            verifier.VerifyVector(package_name()) &&
4012            VerifyOffset(verifier, VT_ATTRIBUTION_TAG) &&
4013            verifier.VerifyVector(attribution_tag()) &&
4014            verifier.EndTable();
4015   }
4016   HostEndpointConnectedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4017   void UnPackTo(HostEndpointConnectedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4018   static flatbuffers::Offset<HostEndpointConnected> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4019 };
4020 
4021 struct HostEndpointConnectedBuilder {
4022   typedef HostEndpointConnected Table;
4023   flatbuffers::FlatBufferBuilder &fbb_;
4024   flatbuffers::uoffset_t start_;
4025   void add_host_endpoint(uint16_t host_endpoint) {
4026     fbb_.AddElement<uint16_t>(HostEndpointConnected::VT_HOST_ENDPOINT, host_endpoint, 0);
4027   }
4028   void add_type(uint8_t type) {
4029     fbb_.AddElement<uint8_t>(HostEndpointConnected::VT_TYPE, type, 0);
4030   }
4031   void add_package_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> package_name) {
4032     fbb_.AddOffset(HostEndpointConnected::VT_PACKAGE_NAME, package_name);
4033   }
4034   void add_attribution_tag(flatbuffers::Offset<flatbuffers::Vector<int8_t>> attribution_tag) {
4035     fbb_.AddOffset(HostEndpointConnected::VT_ATTRIBUTION_TAG, attribution_tag);
4036   }
4037   explicit HostEndpointConnectedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4038         : fbb_(_fbb) {
4039     start_ = fbb_.StartTable();
4040   }
4041   HostEndpointConnectedBuilder &operator=(const HostEndpointConnectedBuilder &);
4042   flatbuffers::Offset<HostEndpointConnected> Finish() {
4043     const auto end = fbb_.EndTable(start_);
4044     auto o = flatbuffers::Offset<HostEndpointConnected>(end);
4045     return o;
4046   }
4047 };
4048 
4049 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(
4050     flatbuffers::FlatBufferBuilder &_fbb,
4051     uint16_t host_endpoint = 0,
4052     uint8_t type = 0,
4053     flatbuffers::Offset<flatbuffers::Vector<int8_t>> package_name = 0,
4054     flatbuffers::Offset<flatbuffers::Vector<int8_t>> attribution_tag = 0) {
4055   HostEndpointConnectedBuilder builder_(_fbb);
4056   builder_.add_attribution_tag(attribution_tag);
4057   builder_.add_package_name(package_name);
4058   builder_.add_host_endpoint(host_endpoint);
4059   builder_.add_type(type);
4060   return builder_.Finish();
4061 }
4062 
4063 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnectedDirect(
4064     flatbuffers::FlatBufferBuilder &_fbb,
4065     uint16_t host_endpoint = 0,
4066     uint8_t type = 0,
4067     const std::vector<int8_t> *package_name = nullptr,
4068     const std::vector<int8_t> *attribution_tag = nullptr) {
4069   auto package_name__ = package_name ? _fbb.CreateVector<int8_t>(*package_name) : 0;
4070   auto attribution_tag__ = attribution_tag ? _fbb.CreateVector<int8_t>(*attribution_tag) : 0;
4071   return chre::fbs::CreateHostEndpointConnected(
4072       _fbb,
4073       host_endpoint,
4074       type,
4075       package_name__,
4076       attribution_tag__);
4077 }
4078 
4079 flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4080 
4081 struct HostEndpointDisconnectedT : public flatbuffers::NativeTable {
4082   typedef HostEndpointDisconnected TableType;
4083   uint16_t host_endpoint;
4084   HostEndpointDisconnectedT()
4085       : host_endpoint(0) {
4086   }
4087 };
4088 
4089 struct HostEndpointDisconnected FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4090   typedef HostEndpointDisconnectedT NativeTableType;
4091   typedef HostEndpointDisconnectedBuilder Builder;
4092   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4093     VT_HOST_ENDPOINT = 4
4094   };
4095   /// The host-side endpoint that has disconnected from the framework.
4096   uint16_t host_endpoint() const {
4097     return GetField<uint16_t>(VT_HOST_ENDPOINT, 0);
4098   }
4099   bool mutate_host_endpoint(uint16_t _host_endpoint) {
4100     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 0);
4101   }
4102   bool Verify(flatbuffers::Verifier &verifier) const {
4103     return VerifyTableStart(verifier) &&
4104            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
4105            verifier.EndTable();
4106   }
4107   HostEndpointDisconnectedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4108   void UnPackTo(HostEndpointDisconnectedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4109   static flatbuffers::Offset<HostEndpointDisconnected> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4110 };
4111 
4112 struct HostEndpointDisconnectedBuilder {
4113   typedef HostEndpointDisconnected Table;
4114   flatbuffers::FlatBufferBuilder &fbb_;
4115   flatbuffers::uoffset_t start_;
4116   void add_host_endpoint(uint16_t host_endpoint) {
4117     fbb_.AddElement<uint16_t>(HostEndpointDisconnected::VT_HOST_ENDPOINT, host_endpoint, 0);
4118   }
4119   explicit HostEndpointDisconnectedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4120         : fbb_(_fbb) {
4121     start_ = fbb_.StartTable();
4122   }
4123   HostEndpointDisconnectedBuilder &operator=(const HostEndpointDisconnectedBuilder &);
4124   flatbuffers::Offset<HostEndpointDisconnected> Finish() {
4125     const auto end = fbb_.EndTable(start_);
4126     auto o = flatbuffers::Offset<HostEndpointDisconnected>(end);
4127     return o;
4128   }
4129 };
4130 
4131 inline flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(
4132     flatbuffers::FlatBufferBuilder &_fbb,
4133     uint16_t host_endpoint = 0) {
4134   HostEndpointDisconnectedBuilder builder_(_fbb);
4135   builder_.add_host_endpoint(host_endpoint);
4136   return builder_.Finish();
4137 }
4138 
4139 flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4140 
4141 struct MetricLogT : public flatbuffers::NativeTable {
4142   typedef MetricLog TableType;
4143   uint32_t id;
4144   std::vector<int8_t> encoded_metric;
4145   MetricLogT()
4146       : id(0) {
4147   }
4148 };
4149 
4150 struct MetricLog FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4151   typedef MetricLogT NativeTableType;
4152   typedef MetricLogBuilder Builder;
4153   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4154     VT_ID = 4,
4155     VT_ENCODED_METRIC = 6
4156   };
4157   uint32_t id() const {
4158     return GetField<uint32_t>(VT_ID, 0);
4159   }
4160   bool mutate_id(uint32_t _id) {
4161     return SetField<uint32_t>(VT_ID, _id, 0);
4162   }
4163   const flatbuffers::Vector<int8_t> *encoded_metric() const {
4164     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_ENCODED_METRIC);
4165   }
4166   flatbuffers::Vector<int8_t> *mutable_encoded_metric() {
4167     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_ENCODED_METRIC);
4168   }
4169   bool Verify(flatbuffers::Verifier &verifier) const {
4170     return VerifyTableStart(verifier) &&
4171            VerifyField<uint32_t>(verifier, VT_ID) &&
4172            VerifyOffset(verifier, VT_ENCODED_METRIC) &&
4173            verifier.VerifyVector(encoded_metric()) &&
4174            verifier.EndTable();
4175   }
4176   MetricLogT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4177   void UnPackTo(MetricLogT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4178   static flatbuffers::Offset<MetricLog> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4179 };
4180 
4181 struct MetricLogBuilder {
4182   typedef MetricLog Table;
4183   flatbuffers::FlatBufferBuilder &fbb_;
4184   flatbuffers::uoffset_t start_;
4185   void add_id(uint32_t id) {
4186     fbb_.AddElement<uint32_t>(MetricLog::VT_ID, id, 0);
4187   }
4188   void add_encoded_metric(flatbuffers::Offset<flatbuffers::Vector<int8_t>> encoded_metric) {
4189     fbb_.AddOffset(MetricLog::VT_ENCODED_METRIC, encoded_metric);
4190   }
4191   explicit MetricLogBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4192         : fbb_(_fbb) {
4193     start_ = fbb_.StartTable();
4194   }
4195   MetricLogBuilder &operator=(const MetricLogBuilder &);
4196   flatbuffers::Offset<MetricLog> Finish() {
4197     const auto end = fbb_.EndTable(start_);
4198     auto o = flatbuffers::Offset<MetricLog>(end);
4199     return o;
4200   }
4201 };
4202 
4203 inline flatbuffers::Offset<MetricLog> CreateMetricLog(
4204     flatbuffers::FlatBufferBuilder &_fbb,
4205     uint32_t id = 0,
4206     flatbuffers::Offset<flatbuffers::Vector<int8_t>> encoded_metric = 0) {
4207   MetricLogBuilder builder_(_fbb);
4208   builder_.add_encoded_metric(encoded_metric);
4209   builder_.add_id(id);
4210   return builder_.Finish();
4211 }
4212 
4213 inline flatbuffers::Offset<MetricLog> CreateMetricLogDirect(
4214     flatbuffers::FlatBufferBuilder &_fbb,
4215     uint32_t id = 0,
4216     const std::vector<int8_t> *encoded_metric = nullptr) {
4217   auto encoded_metric__ = encoded_metric ? _fbb.CreateVector<int8_t>(*encoded_metric) : 0;
4218   return chre::fbs::CreateMetricLog(
4219       _fbb,
4220       id,
4221       encoded_metric__);
4222 }
4223 
4224 flatbuffers::Offset<MetricLog> CreateMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4225 
4226 struct BatchedMetricLogT : public flatbuffers::NativeTable {
4227   typedef BatchedMetricLog TableType;
4228   std::vector<std::unique_ptr<chre::fbs::MetricLogT>> metrics;
4229   BatchedMetricLogT() {
4230   }
4231 };
4232 
4233 struct BatchedMetricLog FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4234   typedef BatchedMetricLogT NativeTableType;
4235   typedef BatchedMetricLogBuilder Builder;
4236   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4237     VT_METRICS = 4
4238   };
4239   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *metrics() const {
4240     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *>(VT_METRICS);
4241   }
4242   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *mutable_metrics() {
4243     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *>(VT_METRICS);
4244   }
4245   bool Verify(flatbuffers::Verifier &verifier) const {
4246     return VerifyTableStart(verifier) &&
4247            VerifyOffset(verifier, VT_METRICS) &&
4248            verifier.VerifyVector(metrics()) &&
4249            verifier.VerifyVectorOfTables(metrics()) &&
4250            verifier.EndTable();
4251   }
4252   BatchedMetricLogT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4253   void UnPackTo(BatchedMetricLogT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4254   static flatbuffers::Offset<BatchedMetricLog> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4255 };
4256 
4257 struct BatchedMetricLogBuilder {
4258   typedef BatchedMetricLog Table;
4259   flatbuffers::FlatBufferBuilder &fbb_;
4260   flatbuffers::uoffset_t start_;
4261   void add_metrics(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>>> metrics) {
4262     fbb_.AddOffset(BatchedMetricLog::VT_METRICS, metrics);
4263   }
4264   explicit BatchedMetricLogBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4265         : fbb_(_fbb) {
4266     start_ = fbb_.StartTable();
4267   }
4268   BatchedMetricLogBuilder &operator=(const BatchedMetricLogBuilder &);
4269   flatbuffers::Offset<BatchedMetricLog> Finish() {
4270     const auto end = fbb_.EndTable(start_);
4271     auto o = flatbuffers::Offset<BatchedMetricLog>(end);
4272     return o;
4273   }
4274 };
4275 
4276 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(
4277     flatbuffers::FlatBufferBuilder &_fbb,
4278     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>>> metrics = 0) {
4279   BatchedMetricLogBuilder builder_(_fbb);
4280   builder_.add_metrics(metrics);
4281   return builder_.Finish();
4282 }
4283 
4284 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLogDirect(
4285     flatbuffers::FlatBufferBuilder &_fbb,
4286     const std::vector<flatbuffers::Offset<chre::fbs::MetricLog>> *metrics = nullptr) {
4287   auto metrics__ = metrics ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::MetricLog>>(*metrics) : 0;
4288   return chre::fbs::CreateBatchedMetricLog(
4289       _fbb,
4290       metrics__);
4291 }
4292 
4293 flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4294 
4295 struct NanConfigurationRequestT : public flatbuffers::NativeTable {
4296   typedef NanConfigurationRequest TableType;
4297   bool enable;
4298   NanConfigurationRequestT()
4299       : enable(false) {
4300   }
4301 };
4302 
4303 struct NanConfigurationRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4304   typedef NanConfigurationRequestT NativeTableType;
4305   typedef NanConfigurationRequestBuilder Builder;
4306   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4307     VT_ENABLE = 4
4308   };
4309   bool enable() const {
4310     return GetField<uint8_t>(VT_ENABLE, 0) != 0;
4311   }
4312   bool mutate_enable(bool _enable) {
4313     return SetField<uint8_t>(VT_ENABLE, static_cast<uint8_t>(_enable), 0);
4314   }
4315   bool Verify(flatbuffers::Verifier &verifier) const {
4316     return VerifyTableStart(verifier) &&
4317            VerifyField<uint8_t>(verifier, VT_ENABLE) &&
4318            verifier.EndTable();
4319   }
4320   NanConfigurationRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4321   void UnPackTo(NanConfigurationRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4322   static flatbuffers::Offset<NanConfigurationRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4323 };
4324 
4325 struct NanConfigurationRequestBuilder {
4326   typedef NanConfigurationRequest Table;
4327   flatbuffers::FlatBufferBuilder &fbb_;
4328   flatbuffers::uoffset_t start_;
4329   void add_enable(bool enable) {
4330     fbb_.AddElement<uint8_t>(NanConfigurationRequest::VT_ENABLE, static_cast<uint8_t>(enable), 0);
4331   }
4332   explicit NanConfigurationRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4333         : fbb_(_fbb) {
4334     start_ = fbb_.StartTable();
4335   }
4336   NanConfigurationRequestBuilder &operator=(const NanConfigurationRequestBuilder &);
4337   flatbuffers::Offset<NanConfigurationRequest> Finish() {
4338     const auto end = fbb_.EndTable(start_);
4339     auto o = flatbuffers::Offset<NanConfigurationRequest>(end);
4340     return o;
4341   }
4342 };
4343 
4344 inline flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(
4345     flatbuffers::FlatBufferBuilder &_fbb,
4346     bool enable = false) {
4347   NanConfigurationRequestBuilder builder_(_fbb);
4348   builder_.add_enable(enable);
4349   return builder_.Finish();
4350 }
4351 
4352 flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4353 
4354 struct NanConfigurationUpdateT : public flatbuffers::NativeTable {
4355   typedef NanConfigurationUpdate TableType;
4356   bool enabled;
4357   NanConfigurationUpdateT()
4358       : enabled(false) {
4359   }
4360 };
4361 
4362 struct NanConfigurationUpdate FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4363   typedef NanConfigurationUpdateT NativeTableType;
4364   typedef NanConfigurationUpdateBuilder Builder;
4365   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4366     VT_ENABLED = 4
4367   };
4368   bool enabled() const {
4369     return GetField<uint8_t>(VT_ENABLED, 0) != 0;
4370   }
4371   bool mutate_enabled(bool _enabled) {
4372     return SetField<uint8_t>(VT_ENABLED, static_cast<uint8_t>(_enabled), 0);
4373   }
4374   bool Verify(flatbuffers::Verifier &verifier) const {
4375     return VerifyTableStart(verifier) &&
4376            VerifyField<uint8_t>(verifier, VT_ENABLED) &&
4377            verifier.EndTable();
4378   }
4379   NanConfigurationUpdateT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4380   void UnPackTo(NanConfigurationUpdateT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4381   static flatbuffers::Offset<NanConfigurationUpdate> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4382 };
4383 
4384 struct NanConfigurationUpdateBuilder {
4385   typedef NanConfigurationUpdate Table;
4386   flatbuffers::FlatBufferBuilder &fbb_;
4387   flatbuffers::uoffset_t start_;
4388   void add_enabled(bool enabled) {
4389     fbb_.AddElement<uint8_t>(NanConfigurationUpdate::VT_ENABLED, static_cast<uint8_t>(enabled), 0);
4390   }
4391   explicit NanConfigurationUpdateBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4392         : fbb_(_fbb) {
4393     start_ = fbb_.StartTable();
4394   }
4395   NanConfigurationUpdateBuilder &operator=(const NanConfigurationUpdateBuilder &);
4396   flatbuffers::Offset<NanConfigurationUpdate> Finish() {
4397     const auto end = fbb_.EndTable(start_);
4398     auto o = flatbuffers::Offset<NanConfigurationUpdate>(end);
4399     return o;
4400   }
4401 };
4402 
4403 inline flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(
4404     flatbuffers::FlatBufferBuilder &_fbb,
4405     bool enabled = false) {
4406   NanConfigurationUpdateBuilder builder_(_fbb);
4407   builder_.add_enabled(enabled);
4408   return builder_.Finish();
4409 }
4410 
4411 flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4412 
4413 struct DebugConfigurationT : public flatbuffers::NativeTable {
4414   typedef DebugConfiguration TableType;
4415   bool health_monitor_failure_crash;
4416   DebugConfigurationT()
4417       : health_monitor_failure_crash(false) {
4418   }
4419 };
4420 
4421 struct DebugConfiguration FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4422   typedef DebugConfigurationT NativeTableType;
4423   typedef DebugConfigurationBuilder Builder;
4424   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4425     VT_HEALTH_MONITOR_FAILURE_CRASH = 4
4426   };
4427   bool health_monitor_failure_crash() const {
4428     return GetField<uint8_t>(VT_HEALTH_MONITOR_FAILURE_CRASH, 0) != 0;
4429   }
4430   bool mutate_health_monitor_failure_crash(bool _health_monitor_failure_crash) {
4431     return SetField<uint8_t>(VT_HEALTH_MONITOR_FAILURE_CRASH, static_cast<uint8_t>(_health_monitor_failure_crash), 0);
4432   }
4433   bool Verify(flatbuffers::Verifier &verifier) const {
4434     return VerifyTableStart(verifier) &&
4435            VerifyField<uint8_t>(verifier, VT_HEALTH_MONITOR_FAILURE_CRASH) &&
4436            verifier.EndTable();
4437   }
4438   DebugConfigurationT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4439   void UnPackTo(DebugConfigurationT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4440   static flatbuffers::Offset<DebugConfiguration> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4441 };
4442 
4443 struct DebugConfigurationBuilder {
4444   typedef DebugConfiguration Table;
4445   flatbuffers::FlatBufferBuilder &fbb_;
4446   flatbuffers::uoffset_t start_;
4447   void add_health_monitor_failure_crash(bool health_monitor_failure_crash) {
4448     fbb_.AddElement<uint8_t>(DebugConfiguration::VT_HEALTH_MONITOR_FAILURE_CRASH, static_cast<uint8_t>(health_monitor_failure_crash), 0);
4449   }
4450   explicit DebugConfigurationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4451         : fbb_(_fbb) {
4452     start_ = fbb_.StartTable();
4453   }
4454   DebugConfigurationBuilder &operator=(const DebugConfigurationBuilder &);
4455   flatbuffers::Offset<DebugConfiguration> Finish() {
4456     const auto end = fbb_.EndTable(start_);
4457     auto o = flatbuffers::Offset<DebugConfiguration>(end);
4458     return o;
4459   }
4460 };
4461 
4462 inline flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(
4463     flatbuffers::FlatBufferBuilder &_fbb,
4464     bool health_monitor_failure_crash = false) {
4465   DebugConfigurationBuilder builder_(_fbb);
4466   builder_.add_health_monitor_failure_crash(health_monitor_failure_crash);
4467   return builder_.Finish();
4468 }
4469 
4470 flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4471 
4472 struct PulseRequestT : public flatbuffers::NativeTable {
4473   typedef PulseRequest TableType;
4474   PulseRequestT() {
4475   }
4476 };
4477 
4478 struct PulseRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4479   typedef PulseRequestT NativeTableType;
4480   typedef PulseRequestBuilder Builder;
4481   bool Verify(flatbuffers::Verifier &verifier) const {
4482     return VerifyTableStart(verifier) &&
4483            verifier.EndTable();
4484   }
4485   PulseRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4486   void UnPackTo(PulseRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4487   static flatbuffers::Offset<PulseRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PulseRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4488 };
4489 
4490 struct PulseRequestBuilder {
4491   typedef PulseRequest Table;
4492   flatbuffers::FlatBufferBuilder &fbb_;
4493   flatbuffers::uoffset_t start_;
4494   explicit PulseRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4495         : fbb_(_fbb) {
4496     start_ = fbb_.StartTable();
4497   }
4498   PulseRequestBuilder &operator=(const PulseRequestBuilder &);
4499   flatbuffers::Offset<PulseRequest> Finish() {
4500     const auto end = fbb_.EndTable(start_);
4501     auto o = flatbuffers::Offset<PulseRequest>(end);
4502     return o;
4503   }
4504 };
4505 
4506 inline flatbuffers::Offset<PulseRequest> CreatePulseRequest(
4507     flatbuffers::FlatBufferBuilder &_fbb) {
4508   PulseRequestBuilder builder_(_fbb);
4509   return builder_.Finish();
4510 }
4511 
4512 flatbuffers::Offset<PulseRequest> CreatePulseRequest(flatbuffers::FlatBufferBuilder &_fbb, const PulseRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4513 
4514 struct PulseResponseT : public flatbuffers::NativeTable {
4515   typedef PulseResponse TableType;
4516   PulseResponseT() {
4517   }
4518 };
4519 
4520 struct PulseResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4521   typedef PulseResponseT NativeTableType;
4522   typedef PulseResponseBuilder Builder;
4523   bool Verify(flatbuffers::Verifier &verifier) const {
4524     return VerifyTableStart(verifier) &&
4525            verifier.EndTable();
4526   }
4527   PulseResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4528   void UnPackTo(PulseResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4529   static flatbuffers::Offset<PulseResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const PulseResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4530 };
4531 
4532 struct PulseResponseBuilder {
4533   typedef PulseResponse Table;
4534   flatbuffers::FlatBufferBuilder &fbb_;
4535   flatbuffers::uoffset_t start_;
4536   explicit PulseResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4537         : fbb_(_fbb) {
4538     start_ = fbb_.StartTable();
4539   }
4540   PulseResponseBuilder &operator=(const PulseResponseBuilder &);
4541   flatbuffers::Offset<PulseResponse> Finish() {
4542     const auto end = fbb_.EndTable(start_);
4543     auto o = flatbuffers::Offset<PulseResponse>(end);
4544     return o;
4545   }
4546 };
4547 
4548 inline flatbuffers::Offset<PulseResponse> CreatePulseResponse(
4549     flatbuffers::FlatBufferBuilder &_fbb) {
4550   PulseResponseBuilder builder_(_fbb);
4551   return builder_.Finish();
4552 }
4553 
4554 flatbuffers::Offset<PulseResponse> CreatePulseResponse(flatbuffers::FlatBufferBuilder &_fbb, const PulseResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4555 
4556 struct LeCocChannelInfoT : public flatbuffers::NativeTable {
4557   typedef LeCocChannelInfo TableType;
4558   int32_t localCid;
4559   int32_t remoteCid;
4560   int32_t psm;
4561   int32_t localMtu;
4562   int32_t remoteMtu;
4563   int32_t localMps;
4564   int32_t remoteMps;
4565   int32_t initialRxCredits;
4566   int32_t initialTxCredits;
4567   LeCocChannelInfoT()
4568       : localCid(0),
4569         remoteCid(0),
4570         psm(0),
4571         localMtu(0),
4572         remoteMtu(0),
4573         localMps(0),
4574         remoteMps(0),
4575         initialRxCredits(0),
4576         initialTxCredits(0) {
4577   }
4578 };
4579 
4580 struct LeCocChannelInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4581   typedef LeCocChannelInfoT NativeTableType;
4582   typedef LeCocChannelInfoBuilder Builder;
4583   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4584     VT_LOCALCID = 4,
4585     VT_REMOTECID = 6,
4586     VT_PSM = 8,
4587     VT_LOCALMTU = 10,
4588     VT_REMOTEMTU = 12,
4589     VT_LOCALMPS = 14,
4590     VT_REMOTEMPS = 16,
4591     VT_INITIALRXCREDITS = 18,
4592     VT_INITIALTXCREDITS = 20
4593   };
4594   int32_t localCid() const {
4595     return GetField<int32_t>(VT_LOCALCID, 0);
4596   }
4597   bool mutate_localCid(int32_t _localCid) {
4598     return SetField<int32_t>(VT_LOCALCID, _localCid, 0);
4599   }
4600   int32_t remoteCid() const {
4601     return GetField<int32_t>(VT_REMOTECID, 0);
4602   }
4603   bool mutate_remoteCid(int32_t _remoteCid) {
4604     return SetField<int32_t>(VT_REMOTECID, _remoteCid, 0);
4605   }
4606   int32_t psm() const {
4607     return GetField<int32_t>(VT_PSM, 0);
4608   }
4609   bool mutate_psm(int32_t _psm) {
4610     return SetField<int32_t>(VT_PSM, _psm, 0);
4611   }
4612   int32_t localMtu() const {
4613     return GetField<int32_t>(VT_LOCALMTU, 0);
4614   }
4615   bool mutate_localMtu(int32_t _localMtu) {
4616     return SetField<int32_t>(VT_LOCALMTU, _localMtu, 0);
4617   }
4618   int32_t remoteMtu() const {
4619     return GetField<int32_t>(VT_REMOTEMTU, 0);
4620   }
4621   bool mutate_remoteMtu(int32_t _remoteMtu) {
4622     return SetField<int32_t>(VT_REMOTEMTU, _remoteMtu, 0);
4623   }
4624   int32_t localMps() const {
4625     return GetField<int32_t>(VT_LOCALMPS, 0);
4626   }
4627   bool mutate_localMps(int32_t _localMps) {
4628     return SetField<int32_t>(VT_LOCALMPS, _localMps, 0);
4629   }
4630   int32_t remoteMps() const {
4631     return GetField<int32_t>(VT_REMOTEMPS, 0);
4632   }
4633   bool mutate_remoteMps(int32_t _remoteMps) {
4634     return SetField<int32_t>(VT_REMOTEMPS, _remoteMps, 0);
4635   }
4636   int32_t initialRxCredits() const {
4637     return GetField<int32_t>(VT_INITIALRXCREDITS, 0);
4638   }
4639   bool mutate_initialRxCredits(int32_t _initialRxCredits) {
4640     return SetField<int32_t>(VT_INITIALRXCREDITS, _initialRxCredits, 0);
4641   }
4642   int32_t initialTxCredits() const {
4643     return GetField<int32_t>(VT_INITIALTXCREDITS, 0);
4644   }
4645   bool mutate_initialTxCredits(int32_t _initialTxCredits) {
4646     return SetField<int32_t>(VT_INITIALTXCREDITS, _initialTxCredits, 0);
4647   }
4648   bool Verify(flatbuffers::Verifier &verifier) const {
4649     return VerifyTableStart(verifier) &&
4650            VerifyField<int32_t>(verifier, VT_LOCALCID) &&
4651            VerifyField<int32_t>(verifier, VT_REMOTECID) &&
4652            VerifyField<int32_t>(verifier, VT_PSM) &&
4653            VerifyField<int32_t>(verifier, VT_LOCALMTU) &&
4654            VerifyField<int32_t>(verifier, VT_REMOTEMTU) &&
4655            VerifyField<int32_t>(verifier, VT_LOCALMPS) &&
4656            VerifyField<int32_t>(verifier, VT_REMOTEMPS) &&
4657            VerifyField<int32_t>(verifier, VT_INITIALRXCREDITS) &&
4658            VerifyField<int32_t>(verifier, VT_INITIALTXCREDITS) &&
4659            verifier.EndTable();
4660   }
4661   LeCocChannelInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4662   void UnPackTo(LeCocChannelInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4663   static flatbuffers::Offset<LeCocChannelInfo> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeCocChannelInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4664 };
4665 
4666 struct LeCocChannelInfoBuilder {
4667   typedef LeCocChannelInfo Table;
4668   flatbuffers::FlatBufferBuilder &fbb_;
4669   flatbuffers::uoffset_t start_;
4670   void add_localCid(int32_t localCid) {
4671     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_LOCALCID, localCid, 0);
4672   }
4673   void add_remoteCid(int32_t remoteCid) {
4674     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_REMOTECID, remoteCid, 0);
4675   }
4676   void add_psm(int32_t psm) {
4677     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_PSM, psm, 0);
4678   }
4679   void add_localMtu(int32_t localMtu) {
4680     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_LOCALMTU, localMtu, 0);
4681   }
4682   void add_remoteMtu(int32_t remoteMtu) {
4683     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_REMOTEMTU, remoteMtu, 0);
4684   }
4685   void add_localMps(int32_t localMps) {
4686     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_LOCALMPS, localMps, 0);
4687   }
4688   void add_remoteMps(int32_t remoteMps) {
4689     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_REMOTEMPS, remoteMps, 0);
4690   }
4691   void add_initialRxCredits(int32_t initialRxCredits) {
4692     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_INITIALRXCREDITS, initialRxCredits, 0);
4693   }
4694   void add_initialTxCredits(int32_t initialTxCredits) {
4695     fbb_.AddElement<int32_t>(LeCocChannelInfo::VT_INITIALTXCREDITS, initialTxCredits, 0);
4696   }
4697   explicit LeCocChannelInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4698         : fbb_(_fbb) {
4699     start_ = fbb_.StartTable();
4700   }
4701   LeCocChannelInfoBuilder &operator=(const LeCocChannelInfoBuilder &);
4702   flatbuffers::Offset<LeCocChannelInfo> Finish() {
4703     const auto end = fbb_.EndTable(start_);
4704     auto o = flatbuffers::Offset<LeCocChannelInfo>(end);
4705     return o;
4706   }
4707 };
4708 
4709 inline flatbuffers::Offset<LeCocChannelInfo> CreateLeCocChannelInfo(
4710     flatbuffers::FlatBufferBuilder &_fbb,
4711     int32_t localCid = 0,
4712     int32_t remoteCid = 0,
4713     int32_t psm = 0,
4714     int32_t localMtu = 0,
4715     int32_t remoteMtu = 0,
4716     int32_t localMps = 0,
4717     int32_t remoteMps = 0,
4718     int32_t initialRxCredits = 0,
4719     int32_t initialTxCredits = 0) {
4720   LeCocChannelInfoBuilder builder_(_fbb);
4721   builder_.add_initialTxCredits(initialTxCredits);
4722   builder_.add_initialRxCredits(initialRxCredits);
4723   builder_.add_remoteMps(remoteMps);
4724   builder_.add_localMps(localMps);
4725   builder_.add_remoteMtu(remoteMtu);
4726   builder_.add_localMtu(localMtu);
4727   builder_.add_psm(psm);
4728   builder_.add_remoteCid(remoteCid);
4729   builder_.add_localCid(localCid);
4730   return builder_.Finish();
4731 }
4732 
4733 flatbuffers::Offset<LeCocChannelInfo> CreateLeCocChannelInfo(flatbuffers::FlatBufferBuilder &_fbb, const LeCocChannelInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4734 
4735 struct BtSocketOpenT : public flatbuffers::NativeTable {
4736   typedef BtSocketOpen TableType;
4737   int64_t socketId;
4738   std::vector<int8_t> name;
4739   int32_t aclConnectionHandle;
4740   chre::fbs::ChannelInfoUnion channelInfo;
4741   int64_t hubId;
4742   int64_t endpointId;
4743   BtSocketOpenT()
4744       : socketId(0),
4745         aclConnectionHandle(0),
4746         hubId(0),
4747         endpointId(0) {
4748   }
4749 };
4750 
4751 struct BtSocketOpen FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4752   typedef BtSocketOpenT NativeTableType;
4753   typedef BtSocketOpenBuilder Builder;
4754   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4755     VT_SOCKETID = 4,
4756     VT_NAME = 6,
4757     VT_ACLCONNECTIONHANDLE = 8,
4758     VT_CHANNELINFO_TYPE = 10,
4759     VT_CHANNELINFO = 12,
4760     VT_HUBID = 14,
4761     VT_ENDPOINTID = 16
4762   };
4763   int64_t socketId() const {
4764     return GetField<int64_t>(VT_SOCKETID, 0);
4765   }
4766   bool mutate_socketId(int64_t _socketId) {
4767     return SetField<int64_t>(VT_SOCKETID, _socketId, 0);
4768   }
4769   const flatbuffers::Vector<int8_t> *name() const {
4770     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
4771   }
4772   flatbuffers::Vector<int8_t> *mutable_name() {
4773     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
4774   }
4775   int32_t aclConnectionHandle() const {
4776     return GetField<int32_t>(VT_ACLCONNECTIONHANDLE, 0);
4777   }
4778   bool mutate_aclConnectionHandle(int32_t _aclConnectionHandle) {
4779     return SetField<int32_t>(VT_ACLCONNECTIONHANDLE, _aclConnectionHandle, 0);
4780   }
4781   chre::fbs::ChannelInfo channelInfo_type() const {
4782     return static_cast<chre::fbs::ChannelInfo>(GetField<uint8_t>(VT_CHANNELINFO_TYPE, 0));
4783   }
4784   const void *channelInfo() const {
4785     return GetPointer<const void *>(VT_CHANNELINFO);
4786   }
4787   template<typename T> const T *channelInfo_as() const;
4788   const chre::fbs::LeCocChannelInfo *channelInfo_as_LeCocChannelInfo() const {
4789     return channelInfo_type() == chre::fbs::ChannelInfo::LeCocChannelInfo ? static_cast<const chre::fbs::LeCocChannelInfo *>(channelInfo()) : nullptr;
4790   }
4791   void *mutable_channelInfo() {
4792     return GetPointer<void *>(VT_CHANNELINFO);
4793   }
4794   int64_t hubId() const {
4795     return GetField<int64_t>(VT_HUBID, 0);
4796   }
4797   bool mutate_hubId(int64_t _hubId) {
4798     return SetField<int64_t>(VT_HUBID, _hubId, 0);
4799   }
4800   int64_t endpointId() const {
4801     return GetField<int64_t>(VT_ENDPOINTID, 0);
4802   }
4803   bool mutate_endpointId(int64_t _endpointId) {
4804     return SetField<int64_t>(VT_ENDPOINTID, _endpointId, 0);
4805   }
4806   bool Verify(flatbuffers::Verifier &verifier) const {
4807     return VerifyTableStart(verifier) &&
4808            VerifyField<int64_t>(verifier, VT_SOCKETID) &&
4809            VerifyOffset(verifier, VT_NAME) &&
4810            verifier.VerifyVector(name()) &&
4811            VerifyField<int32_t>(verifier, VT_ACLCONNECTIONHANDLE) &&
4812            VerifyField<uint8_t>(verifier, VT_CHANNELINFO_TYPE) &&
4813            VerifyOffset(verifier, VT_CHANNELINFO) &&
4814            VerifyChannelInfo(verifier, channelInfo(), channelInfo_type()) &&
4815            VerifyField<int64_t>(verifier, VT_HUBID) &&
4816            VerifyField<int64_t>(verifier, VT_ENDPOINTID) &&
4817            verifier.EndTable();
4818   }
4819   BtSocketOpenT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4820   void UnPackTo(BtSocketOpenT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4821   static flatbuffers::Offset<BtSocketOpen> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4822 };
4823 
4824 template<> inline const chre::fbs::LeCocChannelInfo *BtSocketOpen::channelInfo_as<chre::fbs::LeCocChannelInfo>() const {
4825   return channelInfo_as_LeCocChannelInfo();
4826 }
4827 
4828 struct BtSocketOpenBuilder {
4829   typedef BtSocketOpen Table;
4830   flatbuffers::FlatBufferBuilder &fbb_;
4831   flatbuffers::uoffset_t start_;
4832   void add_socketId(int64_t socketId) {
4833     fbb_.AddElement<int64_t>(BtSocketOpen::VT_SOCKETID, socketId, 0);
4834   }
4835   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
4836     fbb_.AddOffset(BtSocketOpen::VT_NAME, name);
4837   }
4838   void add_aclConnectionHandle(int32_t aclConnectionHandle) {
4839     fbb_.AddElement<int32_t>(BtSocketOpen::VT_ACLCONNECTIONHANDLE, aclConnectionHandle, 0);
4840   }
4841   void add_channelInfo_type(chre::fbs::ChannelInfo channelInfo_type) {
4842     fbb_.AddElement<uint8_t>(BtSocketOpen::VT_CHANNELINFO_TYPE, static_cast<uint8_t>(channelInfo_type), 0);
4843   }
4844   void add_channelInfo(flatbuffers::Offset<void> channelInfo) {
4845     fbb_.AddOffset(BtSocketOpen::VT_CHANNELINFO, channelInfo);
4846   }
4847   void add_hubId(int64_t hubId) {
4848     fbb_.AddElement<int64_t>(BtSocketOpen::VT_HUBID, hubId, 0);
4849   }
4850   void add_endpointId(int64_t endpointId) {
4851     fbb_.AddElement<int64_t>(BtSocketOpen::VT_ENDPOINTID, endpointId, 0);
4852   }
4853   explicit BtSocketOpenBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4854         : fbb_(_fbb) {
4855     start_ = fbb_.StartTable();
4856   }
4857   BtSocketOpenBuilder &operator=(const BtSocketOpenBuilder &);
4858   flatbuffers::Offset<BtSocketOpen> Finish() {
4859     const auto end = fbb_.EndTable(start_);
4860     auto o = flatbuffers::Offset<BtSocketOpen>(end);
4861     return o;
4862   }
4863 };
4864 
4865 inline flatbuffers::Offset<BtSocketOpen> CreateBtSocketOpen(
4866     flatbuffers::FlatBufferBuilder &_fbb,
4867     int64_t socketId = 0,
4868     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
4869     int32_t aclConnectionHandle = 0,
4870     chre::fbs::ChannelInfo channelInfo_type = chre::fbs::ChannelInfo::NONE,
4871     flatbuffers::Offset<void> channelInfo = 0,
4872     int64_t hubId = 0,
4873     int64_t endpointId = 0) {
4874   BtSocketOpenBuilder builder_(_fbb);
4875   builder_.add_endpointId(endpointId);
4876   builder_.add_hubId(hubId);
4877   builder_.add_socketId(socketId);
4878   builder_.add_channelInfo(channelInfo);
4879   builder_.add_aclConnectionHandle(aclConnectionHandle);
4880   builder_.add_name(name);
4881   builder_.add_channelInfo_type(channelInfo_type);
4882   return builder_.Finish();
4883 }
4884 
4885 inline flatbuffers::Offset<BtSocketOpen> CreateBtSocketOpenDirect(
4886     flatbuffers::FlatBufferBuilder &_fbb,
4887     int64_t socketId = 0,
4888     const std::vector<int8_t> *name = nullptr,
4889     int32_t aclConnectionHandle = 0,
4890     chre::fbs::ChannelInfo channelInfo_type = chre::fbs::ChannelInfo::NONE,
4891     flatbuffers::Offset<void> channelInfo = 0,
4892     int64_t hubId = 0,
4893     int64_t endpointId = 0) {
4894   auto name__ = name ? _fbb.CreateVector<int8_t>(*name) : 0;
4895   return chre::fbs::CreateBtSocketOpen(
4896       _fbb,
4897       socketId,
4898       name__,
4899       aclConnectionHandle,
4900       channelInfo_type,
4901       channelInfo,
4902       hubId,
4903       endpointId);
4904 }
4905 
4906 flatbuffers::Offset<BtSocketOpen> CreateBtSocketOpen(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4907 
4908 struct BtSocketOpenResponseT : public flatbuffers::NativeTable {
4909   typedef BtSocketOpenResponse TableType;
4910   int64_t socketId;
4911   chre::fbs::BtSocketOpenStatus status;
4912   std::vector<int8_t> reason;
4913   BtSocketOpenResponseT()
4914       : socketId(0),
4915         status(chre::fbs::BtSocketOpenStatus::SUCCESS) {
4916   }
4917 };
4918 
4919 struct BtSocketOpenResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
4920   typedef BtSocketOpenResponseT NativeTableType;
4921   typedef BtSocketOpenResponseBuilder Builder;
4922   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
4923     VT_SOCKETID = 4,
4924     VT_STATUS = 6,
4925     VT_REASON = 8
4926   };
4927   int64_t socketId() const {
4928     return GetField<int64_t>(VT_SOCKETID, 0);
4929   }
4930   bool mutate_socketId(int64_t _socketId) {
4931     return SetField<int64_t>(VT_SOCKETID, _socketId, 0);
4932   }
4933   chre::fbs::BtSocketOpenStatus status() const {
4934     return static_cast<chre::fbs::BtSocketOpenStatus>(GetField<int8_t>(VT_STATUS, 0));
4935   }
4936   bool mutate_status(chre::fbs::BtSocketOpenStatus _status) {
4937     return SetField<int8_t>(VT_STATUS, static_cast<int8_t>(_status), 0);
4938   }
4939   const flatbuffers::Vector<int8_t> *reason() const {
4940     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_REASON);
4941   }
4942   flatbuffers::Vector<int8_t> *mutable_reason() {
4943     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_REASON);
4944   }
4945   bool Verify(flatbuffers::Verifier &verifier) const {
4946     return VerifyTableStart(verifier) &&
4947            VerifyField<int64_t>(verifier, VT_SOCKETID) &&
4948            VerifyField<int8_t>(verifier, VT_STATUS) &&
4949            VerifyOffset(verifier, VT_REASON) &&
4950            verifier.VerifyVector(reason()) &&
4951            verifier.EndTable();
4952   }
4953   BtSocketOpenResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4954   void UnPackTo(BtSocketOpenResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
4955   static flatbuffers::Offset<BtSocketOpenResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
4956 };
4957 
4958 struct BtSocketOpenResponseBuilder {
4959   typedef BtSocketOpenResponse Table;
4960   flatbuffers::FlatBufferBuilder &fbb_;
4961   flatbuffers::uoffset_t start_;
4962   void add_socketId(int64_t socketId) {
4963     fbb_.AddElement<int64_t>(BtSocketOpenResponse::VT_SOCKETID, socketId, 0);
4964   }
4965   void add_status(chre::fbs::BtSocketOpenStatus status) {
4966     fbb_.AddElement<int8_t>(BtSocketOpenResponse::VT_STATUS, static_cast<int8_t>(status), 0);
4967   }
4968   void add_reason(flatbuffers::Offset<flatbuffers::Vector<int8_t>> reason) {
4969     fbb_.AddOffset(BtSocketOpenResponse::VT_REASON, reason);
4970   }
4971   explicit BtSocketOpenResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
4972         : fbb_(_fbb) {
4973     start_ = fbb_.StartTable();
4974   }
4975   BtSocketOpenResponseBuilder &operator=(const BtSocketOpenResponseBuilder &);
4976   flatbuffers::Offset<BtSocketOpenResponse> Finish() {
4977     const auto end = fbb_.EndTable(start_);
4978     auto o = flatbuffers::Offset<BtSocketOpenResponse>(end);
4979     return o;
4980   }
4981 };
4982 
4983 inline flatbuffers::Offset<BtSocketOpenResponse> CreateBtSocketOpenResponse(
4984     flatbuffers::FlatBufferBuilder &_fbb,
4985     int64_t socketId = 0,
4986     chre::fbs::BtSocketOpenStatus status = chre::fbs::BtSocketOpenStatus::SUCCESS,
4987     flatbuffers::Offset<flatbuffers::Vector<int8_t>> reason = 0) {
4988   BtSocketOpenResponseBuilder builder_(_fbb);
4989   builder_.add_socketId(socketId);
4990   builder_.add_reason(reason);
4991   builder_.add_status(status);
4992   return builder_.Finish();
4993 }
4994 
4995 inline flatbuffers::Offset<BtSocketOpenResponse> CreateBtSocketOpenResponseDirect(
4996     flatbuffers::FlatBufferBuilder &_fbb,
4997     int64_t socketId = 0,
4998     chre::fbs::BtSocketOpenStatus status = chre::fbs::BtSocketOpenStatus::SUCCESS,
4999     const std::vector<int8_t> *reason = nullptr) {
5000   auto reason__ = reason ? _fbb.CreateVector<int8_t>(*reason) : 0;
5001   return chre::fbs::CreateBtSocketOpenResponse(
5002       _fbb,
5003       socketId,
5004       status,
5005       reason__);
5006 }
5007 
5008 flatbuffers::Offset<BtSocketOpenResponse> CreateBtSocketOpenResponse(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5009 
5010 struct BtSocketCloseT : public flatbuffers::NativeTable {
5011   typedef BtSocketClose TableType;
5012   int64_t socketId;
5013   std::vector<int8_t> reason;
5014   BtSocketCloseT()
5015       : socketId(0) {
5016   }
5017 };
5018 
5019 struct BtSocketClose FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5020   typedef BtSocketCloseT NativeTableType;
5021   typedef BtSocketCloseBuilder Builder;
5022   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5023     VT_SOCKETID = 4,
5024     VT_REASON = 6
5025   };
5026   int64_t socketId() const {
5027     return GetField<int64_t>(VT_SOCKETID, 0);
5028   }
5029   bool mutate_socketId(int64_t _socketId) {
5030     return SetField<int64_t>(VT_SOCKETID, _socketId, 0);
5031   }
5032   const flatbuffers::Vector<int8_t> *reason() const {
5033     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_REASON);
5034   }
5035   flatbuffers::Vector<int8_t> *mutable_reason() {
5036     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_REASON);
5037   }
5038   bool Verify(flatbuffers::Verifier &verifier) const {
5039     return VerifyTableStart(verifier) &&
5040            VerifyField<int64_t>(verifier, VT_SOCKETID) &&
5041            VerifyOffset(verifier, VT_REASON) &&
5042            verifier.VerifyVector(reason()) &&
5043            verifier.EndTable();
5044   }
5045   BtSocketCloseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5046   void UnPackTo(BtSocketCloseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5047   static flatbuffers::Offset<BtSocketClose> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5048 };
5049 
5050 struct BtSocketCloseBuilder {
5051   typedef BtSocketClose Table;
5052   flatbuffers::FlatBufferBuilder &fbb_;
5053   flatbuffers::uoffset_t start_;
5054   void add_socketId(int64_t socketId) {
5055     fbb_.AddElement<int64_t>(BtSocketClose::VT_SOCKETID, socketId, 0);
5056   }
5057   void add_reason(flatbuffers::Offset<flatbuffers::Vector<int8_t>> reason) {
5058     fbb_.AddOffset(BtSocketClose::VT_REASON, reason);
5059   }
5060   explicit BtSocketCloseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5061         : fbb_(_fbb) {
5062     start_ = fbb_.StartTable();
5063   }
5064   BtSocketCloseBuilder &operator=(const BtSocketCloseBuilder &);
5065   flatbuffers::Offset<BtSocketClose> Finish() {
5066     const auto end = fbb_.EndTable(start_);
5067     auto o = flatbuffers::Offset<BtSocketClose>(end);
5068     return o;
5069   }
5070 };
5071 
5072 inline flatbuffers::Offset<BtSocketClose> CreateBtSocketClose(
5073     flatbuffers::FlatBufferBuilder &_fbb,
5074     int64_t socketId = 0,
5075     flatbuffers::Offset<flatbuffers::Vector<int8_t>> reason = 0) {
5076   BtSocketCloseBuilder builder_(_fbb);
5077   builder_.add_socketId(socketId);
5078   builder_.add_reason(reason);
5079   return builder_.Finish();
5080 }
5081 
5082 inline flatbuffers::Offset<BtSocketClose> CreateBtSocketCloseDirect(
5083     flatbuffers::FlatBufferBuilder &_fbb,
5084     int64_t socketId = 0,
5085     const std::vector<int8_t> *reason = nullptr) {
5086   auto reason__ = reason ? _fbb.CreateVector<int8_t>(*reason) : 0;
5087   return chre::fbs::CreateBtSocketClose(
5088       _fbb,
5089       socketId,
5090       reason__);
5091 }
5092 
5093 flatbuffers::Offset<BtSocketClose> CreateBtSocketClose(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5094 
5095 struct BtSocketCloseResponseT : public flatbuffers::NativeTable {
5096   typedef BtSocketCloseResponse TableType;
5097   int64_t socketId;
5098   BtSocketCloseResponseT()
5099       : socketId(0) {
5100   }
5101 };
5102 
5103 struct BtSocketCloseResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5104   typedef BtSocketCloseResponseT NativeTableType;
5105   typedef BtSocketCloseResponseBuilder Builder;
5106   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5107     VT_SOCKETID = 4
5108   };
5109   int64_t socketId() const {
5110     return GetField<int64_t>(VT_SOCKETID, 0);
5111   }
5112   bool mutate_socketId(int64_t _socketId) {
5113     return SetField<int64_t>(VT_SOCKETID, _socketId, 0);
5114   }
5115   bool Verify(flatbuffers::Verifier &verifier) const {
5116     return VerifyTableStart(verifier) &&
5117            VerifyField<int64_t>(verifier, VT_SOCKETID) &&
5118            verifier.EndTable();
5119   }
5120   BtSocketCloseResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5121   void UnPackTo(BtSocketCloseResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5122   static flatbuffers::Offset<BtSocketCloseResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5123 };
5124 
5125 struct BtSocketCloseResponseBuilder {
5126   typedef BtSocketCloseResponse Table;
5127   flatbuffers::FlatBufferBuilder &fbb_;
5128   flatbuffers::uoffset_t start_;
5129   void add_socketId(int64_t socketId) {
5130     fbb_.AddElement<int64_t>(BtSocketCloseResponse::VT_SOCKETID, socketId, 0);
5131   }
5132   explicit BtSocketCloseResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5133         : fbb_(_fbb) {
5134     start_ = fbb_.StartTable();
5135   }
5136   BtSocketCloseResponseBuilder &operator=(const BtSocketCloseResponseBuilder &);
5137   flatbuffers::Offset<BtSocketCloseResponse> Finish() {
5138     const auto end = fbb_.EndTable(start_);
5139     auto o = flatbuffers::Offset<BtSocketCloseResponse>(end);
5140     return o;
5141   }
5142 };
5143 
5144 inline flatbuffers::Offset<BtSocketCloseResponse> CreateBtSocketCloseResponse(
5145     flatbuffers::FlatBufferBuilder &_fbb,
5146     int64_t socketId = 0) {
5147   BtSocketCloseResponseBuilder builder_(_fbb);
5148   builder_.add_socketId(socketId);
5149   return builder_.Finish();
5150 }
5151 
5152 flatbuffers::Offset<BtSocketCloseResponse> CreateBtSocketCloseResponse(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5153 
5154 struct VendorHubInfoT : public flatbuffers::NativeTable {
5155   typedef VendorHubInfo TableType;
5156   std::vector<int8_t> name;
5157   uint32_t version;
5158   std::vector<uint8_t> extended_info;
5159   VendorHubInfoT()
5160       : version(0) {
5161   }
5162 };
5163 
5164 struct VendorHubInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5165   typedef VendorHubInfoT NativeTableType;
5166   typedef VendorHubInfoBuilder Builder;
5167   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5168     VT_NAME = 4,
5169     VT_VERSION = 6,
5170     VT_EXTENDED_INFO = 8
5171   };
5172   /// The name of the hub. Nominally a UTF-8 string, but note that we're not
5173   /// using the built-in "string" data type from FlatBuffers here, because the
5174   /// generated C++ uses std::string which is not well-supported in CHRE.
5175   const flatbuffers::Vector<int8_t> *name() const {
5176     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
5177   }
5178   flatbuffers::Vector<int8_t> *mutable_name() {
5179     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
5180   }
5181   /// Hub version
5182   uint32_t version() const {
5183     return GetField<uint32_t>(VT_VERSION, 0);
5184   }
5185   bool mutate_version(uint32_t _version) {
5186     return SetField<uint32_t>(VT_VERSION, _version, 0);
5187   }
5188   /// Additional vendor-defined data
5189   const flatbuffers::Vector<uint8_t> *extended_info() const {
5190     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_EXTENDED_INFO);
5191   }
5192   flatbuffers::Vector<uint8_t> *mutable_extended_info() {
5193     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_EXTENDED_INFO);
5194   }
5195   bool Verify(flatbuffers::Verifier &verifier) const {
5196     return VerifyTableStart(verifier) &&
5197            VerifyOffset(verifier, VT_NAME) &&
5198            verifier.VerifyVector(name()) &&
5199            VerifyField<uint32_t>(verifier, VT_VERSION) &&
5200            VerifyOffset(verifier, VT_EXTENDED_INFO) &&
5201            verifier.VerifyVector(extended_info()) &&
5202            verifier.EndTable();
5203   }
5204   VendorHubInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5205   void UnPackTo(VendorHubInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5206   static flatbuffers::Offset<VendorHubInfo> Pack(flatbuffers::FlatBufferBuilder &_fbb, const VendorHubInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5207 };
5208 
5209 struct VendorHubInfoBuilder {
5210   typedef VendorHubInfo Table;
5211   flatbuffers::FlatBufferBuilder &fbb_;
5212   flatbuffers::uoffset_t start_;
5213   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
5214     fbb_.AddOffset(VendorHubInfo::VT_NAME, name);
5215   }
5216   void add_version(uint32_t version) {
5217     fbb_.AddElement<uint32_t>(VendorHubInfo::VT_VERSION, version, 0);
5218   }
5219   void add_extended_info(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> extended_info) {
5220     fbb_.AddOffset(VendorHubInfo::VT_EXTENDED_INFO, extended_info);
5221   }
5222   explicit VendorHubInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5223         : fbb_(_fbb) {
5224     start_ = fbb_.StartTable();
5225   }
5226   VendorHubInfoBuilder &operator=(const VendorHubInfoBuilder &);
5227   flatbuffers::Offset<VendorHubInfo> Finish() {
5228     const auto end = fbb_.EndTable(start_);
5229     auto o = flatbuffers::Offset<VendorHubInfo>(end);
5230     return o;
5231   }
5232 };
5233 
5234 inline flatbuffers::Offset<VendorHubInfo> CreateVendorHubInfo(
5235     flatbuffers::FlatBufferBuilder &_fbb,
5236     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
5237     uint32_t version = 0,
5238     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> extended_info = 0) {
5239   VendorHubInfoBuilder builder_(_fbb);
5240   builder_.add_extended_info(extended_info);
5241   builder_.add_version(version);
5242   builder_.add_name(name);
5243   return builder_.Finish();
5244 }
5245 
5246 inline flatbuffers::Offset<VendorHubInfo> CreateVendorHubInfoDirect(
5247     flatbuffers::FlatBufferBuilder &_fbb,
5248     const std::vector<int8_t> *name = nullptr,
5249     uint32_t version = 0,
5250     const std::vector<uint8_t> *extended_info = nullptr) {
5251   auto name__ = name ? _fbb.CreateVector<int8_t>(*name) : 0;
5252   auto extended_info__ = extended_info ? _fbb.CreateVector<uint8_t>(*extended_info) : 0;
5253   return chre::fbs::CreateVendorHubInfo(
5254       _fbb,
5255       name__,
5256       version,
5257       extended_info__);
5258 }
5259 
5260 flatbuffers::Offset<VendorHubInfo> CreateVendorHubInfo(flatbuffers::FlatBufferBuilder &_fbb, const VendorHubInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5261 
5262 struct MessageHubT : public flatbuffers::NativeTable {
5263   typedef MessageHub TableType;
5264   int64_t id;
5265   chre::fbs::MessageHubDetailsUnion details;
5266   MessageHubT()
5267       : id(0) {
5268   }
5269 };
5270 
5271 struct MessageHub FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5272   typedef MessageHubT NativeTableType;
5273   typedef MessageHubBuilder Builder;
5274   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5275     VT_ID = 4,
5276     VT_DETAILS_TYPE = 6,
5277     VT_DETAILS = 8
5278   };
5279   /// The hub id. -1 is reserved and 0 is invalid. 0x416e64726f696400 represents
5280   /// the ContextHub service.
5281   int64_t id() const {
5282     return GetField<int64_t>(VT_ID, 0);
5283   }
5284   bool mutate_id(int64_t _id) {
5285     return SetField<int64_t>(VT_ID, _id, 0);
5286   }
5287   chre::fbs::MessageHubDetails details_type() const {
5288     return static_cast<chre::fbs::MessageHubDetails>(GetField<uint8_t>(VT_DETAILS_TYPE, 0));
5289   }
5290   /// Details of the message hub.
5291   const void *details() const {
5292     return GetPointer<const void *>(VT_DETAILS);
5293   }
5294   template<typename T> const T *details_as() const;
5295   const chre::fbs::HubInfoResponse *details_as_HubInfoResponse() const {
5296     return details_type() == chre::fbs::MessageHubDetails::HubInfoResponse ? static_cast<const chre::fbs::HubInfoResponse *>(details()) : nullptr;
5297   }
5298   const chre::fbs::VendorHubInfo *details_as_VendorHubInfo() const {
5299     return details_type() == chre::fbs::MessageHubDetails::VendorHubInfo ? static_cast<const chre::fbs::VendorHubInfo *>(details()) : nullptr;
5300   }
5301   void *mutable_details() {
5302     return GetPointer<void *>(VT_DETAILS);
5303   }
5304   bool Verify(flatbuffers::Verifier &verifier) const {
5305     return VerifyTableStart(verifier) &&
5306            VerifyField<int64_t>(verifier, VT_ID) &&
5307            VerifyField<uint8_t>(verifier, VT_DETAILS_TYPE) &&
5308            VerifyOffset(verifier, VT_DETAILS) &&
5309            VerifyMessageHubDetails(verifier, details(), details_type()) &&
5310            verifier.EndTable();
5311   }
5312   MessageHubT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5313   void UnPackTo(MessageHubT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5314   static flatbuffers::Offset<MessageHub> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5315 };
5316 
5317 template<> inline const chre::fbs::HubInfoResponse *MessageHub::details_as<chre::fbs::HubInfoResponse>() const {
5318   return details_as_HubInfoResponse();
5319 }
5320 
5321 template<> inline const chre::fbs::VendorHubInfo *MessageHub::details_as<chre::fbs::VendorHubInfo>() const {
5322   return details_as_VendorHubInfo();
5323 }
5324 
5325 struct MessageHubBuilder {
5326   typedef MessageHub Table;
5327   flatbuffers::FlatBufferBuilder &fbb_;
5328   flatbuffers::uoffset_t start_;
5329   void add_id(int64_t id) {
5330     fbb_.AddElement<int64_t>(MessageHub::VT_ID, id, 0);
5331   }
5332   void add_details_type(chre::fbs::MessageHubDetails details_type) {
5333     fbb_.AddElement<uint8_t>(MessageHub::VT_DETAILS_TYPE, static_cast<uint8_t>(details_type), 0);
5334   }
5335   void add_details(flatbuffers::Offset<void> details) {
5336     fbb_.AddOffset(MessageHub::VT_DETAILS, details);
5337   }
5338   explicit MessageHubBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5339         : fbb_(_fbb) {
5340     start_ = fbb_.StartTable();
5341   }
5342   MessageHubBuilder &operator=(const MessageHubBuilder &);
5343   flatbuffers::Offset<MessageHub> Finish() {
5344     const auto end = fbb_.EndTable(start_);
5345     auto o = flatbuffers::Offset<MessageHub>(end);
5346     return o;
5347   }
5348 };
5349 
5350 inline flatbuffers::Offset<MessageHub> CreateMessageHub(
5351     flatbuffers::FlatBufferBuilder &_fbb,
5352     int64_t id = 0,
5353     chre::fbs::MessageHubDetails details_type = chre::fbs::MessageHubDetails::NONE,
5354     flatbuffers::Offset<void> details = 0) {
5355   MessageHubBuilder builder_(_fbb);
5356   builder_.add_id(id);
5357   builder_.add_details(details);
5358   builder_.add_details_type(details_type);
5359   return builder_.Finish();
5360 }
5361 
5362 flatbuffers::Offset<MessageHub> CreateMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const MessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5363 
5364 struct RegisterMessageHubT : public flatbuffers::NativeTable {
5365   typedef RegisterMessageHub TableType;
5366   std::unique_ptr<chre::fbs::MessageHubT> hub;
5367   RegisterMessageHubT() {
5368   }
5369 };
5370 
5371 struct RegisterMessageHub FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5372   typedef RegisterMessageHubT NativeTableType;
5373   typedef RegisterMessageHubBuilder Builder;
5374   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5375     VT_HUB = 4
5376   };
5377   const chre::fbs::MessageHub *hub() const {
5378     return GetPointer<const chre::fbs::MessageHub *>(VT_HUB);
5379   }
5380   chre::fbs::MessageHub *mutable_hub() {
5381     return GetPointer<chre::fbs::MessageHub *>(VT_HUB);
5382   }
5383   bool Verify(flatbuffers::Verifier &verifier) const {
5384     return VerifyTableStart(verifier) &&
5385            VerifyOffset(verifier, VT_HUB) &&
5386            verifier.VerifyTable(hub()) &&
5387            verifier.EndTable();
5388   }
5389   RegisterMessageHubT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5390   void UnPackTo(RegisterMessageHubT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5391   static flatbuffers::Offset<RegisterMessageHub> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegisterMessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5392 };
5393 
5394 struct RegisterMessageHubBuilder {
5395   typedef RegisterMessageHub Table;
5396   flatbuffers::FlatBufferBuilder &fbb_;
5397   flatbuffers::uoffset_t start_;
5398   void add_hub(flatbuffers::Offset<chre::fbs::MessageHub> hub) {
5399     fbb_.AddOffset(RegisterMessageHub::VT_HUB, hub);
5400   }
5401   explicit RegisterMessageHubBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5402         : fbb_(_fbb) {
5403     start_ = fbb_.StartTable();
5404   }
5405   RegisterMessageHubBuilder &operator=(const RegisterMessageHubBuilder &);
5406   flatbuffers::Offset<RegisterMessageHub> Finish() {
5407     const auto end = fbb_.EndTable(start_);
5408     auto o = flatbuffers::Offset<RegisterMessageHub>(end);
5409     return o;
5410   }
5411 };
5412 
5413 inline flatbuffers::Offset<RegisterMessageHub> CreateRegisterMessageHub(
5414     flatbuffers::FlatBufferBuilder &_fbb,
5415     flatbuffers::Offset<chre::fbs::MessageHub> hub = 0) {
5416   RegisterMessageHubBuilder builder_(_fbb);
5417   builder_.add_hub(hub);
5418   return builder_.Finish();
5419 }
5420 
5421 flatbuffers::Offset<RegisterMessageHub> CreateRegisterMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const RegisterMessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5422 
5423 struct UnregisterMessageHubT : public flatbuffers::NativeTable {
5424   typedef UnregisterMessageHub TableType;
5425   int64_t id;
5426   UnregisterMessageHubT()
5427       : id(0) {
5428   }
5429 };
5430 
5431 struct UnregisterMessageHub FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5432   typedef UnregisterMessageHubT NativeTableType;
5433   typedef UnregisterMessageHubBuilder Builder;
5434   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5435     VT_ID = 4
5436   };
5437   int64_t id() const {
5438     return GetField<int64_t>(VT_ID, 0);
5439   }
5440   bool mutate_id(int64_t _id) {
5441     return SetField<int64_t>(VT_ID, _id, 0);
5442   }
5443   bool Verify(flatbuffers::Verifier &verifier) const {
5444     return VerifyTableStart(verifier) &&
5445            VerifyField<int64_t>(verifier, VT_ID) &&
5446            verifier.EndTable();
5447   }
5448   UnregisterMessageHubT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5449   void UnPackTo(UnregisterMessageHubT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5450   static flatbuffers::Offset<UnregisterMessageHub> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterMessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5451 };
5452 
5453 struct UnregisterMessageHubBuilder {
5454   typedef UnregisterMessageHub Table;
5455   flatbuffers::FlatBufferBuilder &fbb_;
5456   flatbuffers::uoffset_t start_;
5457   void add_id(int64_t id) {
5458     fbb_.AddElement<int64_t>(UnregisterMessageHub::VT_ID, id, 0);
5459   }
5460   explicit UnregisterMessageHubBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5461         : fbb_(_fbb) {
5462     start_ = fbb_.StartTable();
5463   }
5464   UnregisterMessageHubBuilder &operator=(const UnregisterMessageHubBuilder &);
5465   flatbuffers::Offset<UnregisterMessageHub> Finish() {
5466     const auto end = fbb_.EndTable(start_);
5467     auto o = flatbuffers::Offset<UnregisterMessageHub>(end);
5468     return o;
5469   }
5470 };
5471 
5472 inline flatbuffers::Offset<UnregisterMessageHub> CreateUnregisterMessageHub(
5473     flatbuffers::FlatBufferBuilder &_fbb,
5474     int64_t id = 0) {
5475   UnregisterMessageHubBuilder builder_(_fbb);
5476   builder_.add_id(id);
5477   return builder_.Finish();
5478 }
5479 
5480 flatbuffers::Offset<UnregisterMessageHub> CreateUnregisterMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterMessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5481 
5482 struct EndpointIdT : public flatbuffers::NativeTable {
5483   typedef EndpointId TableType;
5484   int64_t hubId;
5485   int64_t id;
5486   EndpointIdT()
5487       : hubId(0),
5488         id(0) {
5489   }
5490 };
5491 
5492 struct EndpointId FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5493   typedef EndpointIdT NativeTableType;
5494   typedef EndpointIdBuilder Builder;
5495   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5496     VT_HUBID = 4,
5497     VT_ID = 6
5498   };
5499   /// Id of the hub hosting the endpoint
5500   int64_t hubId() const {
5501     return GetField<int64_t>(VT_HUBID, 0);
5502   }
5503   bool mutate_hubId(int64_t _hubId) {
5504     return SetField<int64_t>(VT_HUBID, _hubId, 0);
5505   }
5506   /// The id of the endpoint scoped to the hub
5507   int64_t id() const {
5508     return GetField<int64_t>(VT_ID, 0);
5509   }
5510   bool mutate_id(int64_t _id) {
5511     return SetField<int64_t>(VT_ID, _id, 0);
5512   }
5513   bool Verify(flatbuffers::Verifier &verifier) const {
5514     return VerifyTableStart(verifier) &&
5515            VerifyField<int64_t>(verifier, VT_HUBID) &&
5516            VerifyField<int64_t>(verifier, VT_ID) &&
5517            verifier.EndTable();
5518   }
5519   EndpointIdT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5520   void UnPackTo(EndpointIdT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5521   static flatbuffers::Offset<EndpointId> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointIdT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5522 };
5523 
5524 struct EndpointIdBuilder {
5525   typedef EndpointId Table;
5526   flatbuffers::FlatBufferBuilder &fbb_;
5527   flatbuffers::uoffset_t start_;
5528   void add_hubId(int64_t hubId) {
5529     fbb_.AddElement<int64_t>(EndpointId::VT_HUBID, hubId, 0);
5530   }
5531   void add_id(int64_t id) {
5532     fbb_.AddElement<int64_t>(EndpointId::VT_ID, id, 0);
5533   }
5534   explicit EndpointIdBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5535         : fbb_(_fbb) {
5536     start_ = fbb_.StartTable();
5537   }
5538   EndpointIdBuilder &operator=(const EndpointIdBuilder &);
5539   flatbuffers::Offset<EndpointId> Finish() {
5540     const auto end = fbb_.EndTable(start_);
5541     auto o = flatbuffers::Offset<EndpointId>(end);
5542     return o;
5543   }
5544 };
5545 
5546 inline flatbuffers::Offset<EndpointId> CreateEndpointId(
5547     flatbuffers::FlatBufferBuilder &_fbb,
5548     int64_t hubId = 0,
5549     int64_t id = 0) {
5550   EndpointIdBuilder builder_(_fbb);
5551   builder_.add_id(id);
5552   builder_.add_hubId(hubId);
5553   return builder_.Finish();
5554 }
5555 
5556 flatbuffers::Offset<EndpointId> CreateEndpointId(flatbuffers::FlatBufferBuilder &_fbb, const EndpointIdT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5557 
5558 struct ServiceT : public flatbuffers::NativeTable {
5559   typedef Service TableType;
5560   chre::fbs::RpcFormat format;
5561   std::vector<int8_t> descriptor;
5562   uint32_t major_version;
5563   uint32_t minor_version;
5564   ServiceT()
5565       : format(chre::fbs::RpcFormat::CUSTOM),
5566         major_version(0),
5567         minor_version(0) {
5568   }
5569 };
5570 
5571 struct Service FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5572   typedef ServiceT NativeTableType;
5573   typedef ServiceBuilder Builder;
5574   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5575     VT_FORMAT = 4,
5576     VT_DESCRIPTOR = 6,
5577     VT_MAJOR_VERSION = 8,
5578     VT_MINOR_VERSION = 10
5579   };
5580   chre::fbs::RpcFormat format() const {
5581     return static_cast<chre::fbs::RpcFormat>(GetField<uint8_t>(VT_FORMAT, 0));
5582   }
5583   bool mutate_format(chre::fbs::RpcFormat _format) {
5584     return SetField<uint8_t>(VT_FORMAT, static_cast<uint8_t>(_format), 0);
5585   }
5586   /// Service descriptor. Nominally a UTF-8 string, but note that we're not
5587   /// using the built-in "string" data type from FlatBuffers here, because the
5588   /// generated C++ uses std::string which is not well-supported in CHRE.
5589   const flatbuffers::Vector<int8_t> *descriptor() const {
5590     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_DESCRIPTOR);
5591   }
5592   flatbuffers::Vector<int8_t> *mutable_descriptor() {
5593     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_DESCRIPTOR);
5594   }
5595   /// Breaking changes should bump the major version.
5596   uint32_t major_version() const {
5597     return GetField<uint32_t>(VT_MAJOR_VERSION, 0);
5598   }
5599   bool mutate_major_version(uint32_t _major_version) {
5600     return SetField<uint32_t>(VT_MAJOR_VERSION, _major_version, 0);
5601   }
5602   /// Monotonically increasing minor version.
5603   uint32_t minor_version() const {
5604     return GetField<uint32_t>(VT_MINOR_VERSION, 0);
5605   }
5606   bool mutate_minor_version(uint32_t _minor_version) {
5607     return SetField<uint32_t>(VT_MINOR_VERSION, _minor_version, 0);
5608   }
5609   bool Verify(flatbuffers::Verifier &verifier) const {
5610     return VerifyTableStart(verifier) &&
5611            VerifyField<uint8_t>(verifier, VT_FORMAT) &&
5612            VerifyOffset(verifier, VT_DESCRIPTOR) &&
5613            verifier.VerifyVector(descriptor()) &&
5614            VerifyField<uint32_t>(verifier, VT_MAJOR_VERSION) &&
5615            VerifyField<uint32_t>(verifier, VT_MINOR_VERSION) &&
5616            verifier.EndTable();
5617   }
5618   ServiceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5619   void UnPackTo(ServiceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5620   static flatbuffers::Offset<Service> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5621 };
5622 
5623 struct ServiceBuilder {
5624   typedef Service Table;
5625   flatbuffers::FlatBufferBuilder &fbb_;
5626   flatbuffers::uoffset_t start_;
5627   void add_format(chre::fbs::RpcFormat format) {
5628     fbb_.AddElement<uint8_t>(Service::VT_FORMAT, static_cast<uint8_t>(format), 0);
5629   }
5630   void add_descriptor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> descriptor) {
5631     fbb_.AddOffset(Service::VT_DESCRIPTOR, descriptor);
5632   }
5633   void add_major_version(uint32_t major_version) {
5634     fbb_.AddElement<uint32_t>(Service::VT_MAJOR_VERSION, major_version, 0);
5635   }
5636   void add_minor_version(uint32_t minor_version) {
5637     fbb_.AddElement<uint32_t>(Service::VT_MINOR_VERSION, minor_version, 0);
5638   }
5639   explicit ServiceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5640         : fbb_(_fbb) {
5641     start_ = fbb_.StartTable();
5642   }
5643   ServiceBuilder &operator=(const ServiceBuilder &);
5644   flatbuffers::Offset<Service> Finish() {
5645     const auto end = fbb_.EndTable(start_);
5646     auto o = flatbuffers::Offset<Service>(end);
5647     return o;
5648   }
5649 };
5650 
5651 inline flatbuffers::Offset<Service> CreateService(
5652     flatbuffers::FlatBufferBuilder &_fbb,
5653     chre::fbs::RpcFormat format = chre::fbs::RpcFormat::CUSTOM,
5654     flatbuffers::Offset<flatbuffers::Vector<int8_t>> descriptor = 0,
5655     uint32_t major_version = 0,
5656     uint32_t minor_version = 0) {
5657   ServiceBuilder builder_(_fbb);
5658   builder_.add_minor_version(minor_version);
5659   builder_.add_major_version(major_version);
5660   builder_.add_descriptor(descriptor);
5661   builder_.add_format(format);
5662   return builder_.Finish();
5663 }
5664 
5665 inline flatbuffers::Offset<Service> CreateServiceDirect(
5666     flatbuffers::FlatBufferBuilder &_fbb,
5667     chre::fbs::RpcFormat format = chre::fbs::RpcFormat::CUSTOM,
5668     const std::vector<int8_t> *descriptor = nullptr,
5669     uint32_t major_version = 0,
5670     uint32_t minor_version = 0) {
5671   auto descriptor__ = descriptor ? _fbb.CreateVector<int8_t>(*descriptor) : 0;
5672   return chre::fbs::CreateService(
5673       _fbb,
5674       format,
5675       descriptor__,
5676       major_version,
5677       minor_version);
5678 }
5679 
5680 flatbuffers::Offset<Service> CreateService(flatbuffers::FlatBufferBuilder &_fbb, const ServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5681 
5682 struct EndpointInfoT : public flatbuffers::NativeTable {
5683   typedef EndpointInfo TableType;
5684   std::unique_ptr<chre::fbs::EndpointIdT> id;
5685   chre::fbs::EndpointType type;
5686   std::vector<int8_t> name;
5687   uint32_t version;
5688   uint32_t required_permissions;
5689   std::vector<std::unique_ptr<chre::fbs::ServiceT>> services;
5690   EndpointInfoT()
5691       : type(chre::fbs::EndpointType::INVALID),
5692         version(0),
5693         required_permissions(0) {
5694   }
5695 };
5696 
5697 struct EndpointInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5698   typedef EndpointInfoT NativeTableType;
5699   typedef EndpointInfoBuilder Builder;
5700   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5701     VT_ID = 4,
5702     VT_TYPE = 6,
5703     VT_NAME = 8,
5704     VT_VERSION = 10,
5705     VT_REQUIRED_PERMISSIONS = 12,
5706     VT_SERVICES = 14
5707   };
5708   const chre::fbs::EndpointId *id() const {
5709     return GetPointer<const chre::fbs::EndpointId *>(VT_ID);
5710   }
5711   chre::fbs::EndpointId *mutable_id() {
5712     return GetPointer<chre::fbs::EndpointId *>(VT_ID);
5713   }
5714   chre::fbs::EndpointType type() const {
5715     return static_cast<chre::fbs::EndpointType>(GetField<uint8_t>(VT_TYPE, 0));
5716   }
5717   bool mutate_type(chre::fbs::EndpointType _type) {
5718     return SetField<uint8_t>(VT_TYPE, static_cast<uint8_t>(_type), 0);
5719   }
5720   /// Endpoing name. Nominally a UTF-8 string, but note that we're not using
5721   /// the built-in "string" data type from FlatBuffers here, because the
5722   /// generated C++ uses std::string which is not well-supported in CHRE.
5723   const flatbuffers::Vector<int8_t> *name() const {
5724     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
5725   }
5726   flatbuffers::Vector<int8_t> *mutable_name() {
5727     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
5728   }
5729   uint32_t version() const {
5730     return GetField<uint32_t>(VT_VERSION, 0);
5731   }
5732   bool mutate_version(uint32_t _version) {
5733     return SetField<uint32_t>(VT_VERSION, _version, 0);
5734   }
5735   /// Values from CHRE_MESSAGE_PERMISSION_*
5736   uint32_t required_permissions() const {
5737     return GetField<uint32_t>(VT_REQUIRED_PERMISSIONS, 0);
5738   }
5739   bool mutate_required_permissions(uint32_t _required_permissions) {
5740     return SetField<uint32_t>(VT_REQUIRED_PERMISSIONS, _required_permissions, 0);
5741   }
5742   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>> *services() const {
5743     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>> *>(VT_SERVICES);
5744   }
5745   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>> *mutable_services() {
5746     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>> *>(VT_SERVICES);
5747   }
5748   bool Verify(flatbuffers::Verifier &verifier) const {
5749     return VerifyTableStart(verifier) &&
5750            VerifyOffset(verifier, VT_ID) &&
5751            verifier.VerifyTable(id()) &&
5752            VerifyField<uint8_t>(verifier, VT_TYPE) &&
5753            VerifyOffset(verifier, VT_NAME) &&
5754            verifier.VerifyVector(name()) &&
5755            VerifyField<uint32_t>(verifier, VT_VERSION) &&
5756            VerifyField<uint32_t>(verifier, VT_REQUIRED_PERMISSIONS) &&
5757            VerifyOffset(verifier, VT_SERVICES) &&
5758            verifier.VerifyVector(services()) &&
5759            verifier.VerifyVectorOfTables(services()) &&
5760            verifier.EndTable();
5761   }
5762   EndpointInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5763   void UnPackTo(EndpointInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5764   static flatbuffers::Offset<EndpointInfo> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5765 };
5766 
5767 struct EndpointInfoBuilder {
5768   typedef EndpointInfo Table;
5769   flatbuffers::FlatBufferBuilder &fbb_;
5770   flatbuffers::uoffset_t start_;
5771   void add_id(flatbuffers::Offset<chre::fbs::EndpointId> id) {
5772     fbb_.AddOffset(EndpointInfo::VT_ID, id);
5773   }
5774   void add_type(chre::fbs::EndpointType type) {
5775     fbb_.AddElement<uint8_t>(EndpointInfo::VT_TYPE, static_cast<uint8_t>(type), 0);
5776   }
5777   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
5778     fbb_.AddOffset(EndpointInfo::VT_NAME, name);
5779   }
5780   void add_version(uint32_t version) {
5781     fbb_.AddElement<uint32_t>(EndpointInfo::VT_VERSION, version, 0);
5782   }
5783   void add_required_permissions(uint32_t required_permissions) {
5784     fbb_.AddElement<uint32_t>(EndpointInfo::VT_REQUIRED_PERMISSIONS, required_permissions, 0);
5785   }
5786   void add_services(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>>> services) {
5787     fbb_.AddOffset(EndpointInfo::VT_SERVICES, services);
5788   }
5789   explicit EndpointInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5790         : fbb_(_fbb) {
5791     start_ = fbb_.StartTable();
5792   }
5793   EndpointInfoBuilder &operator=(const EndpointInfoBuilder &);
5794   flatbuffers::Offset<EndpointInfo> Finish() {
5795     const auto end = fbb_.EndTable(start_);
5796     auto o = flatbuffers::Offset<EndpointInfo>(end);
5797     return o;
5798   }
5799 };
5800 
5801 inline flatbuffers::Offset<EndpointInfo> CreateEndpointInfo(
5802     flatbuffers::FlatBufferBuilder &_fbb,
5803     flatbuffers::Offset<chre::fbs::EndpointId> id = 0,
5804     chre::fbs::EndpointType type = chre::fbs::EndpointType::INVALID,
5805     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
5806     uint32_t version = 0,
5807     uint32_t required_permissions = 0,
5808     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::Service>>> services = 0) {
5809   EndpointInfoBuilder builder_(_fbb);
5810   builder_.add_services(services);
5811   builder_.add_required_permissions(required_permissions);
5812   builder_.add_version(version);
5813   builder_.add_name(name);
5814   builder_.add_id(id);
5815   builder_.add_type(type);
5816   return builder_.Finish();
5817 }
5818 
5819 inline flatbuffers::Offset<EndpointInfo> CreateEndpointInfoDirect(
5820     flatbuffers::FlatBufferBuilder &_fbb,
5821     flatbuffers::Offset<chre::fbs::EndpointId> id = 0,
5822     chre::fbs::EndpointType type = chre::fbs::EndpointType::INVALID,
5823     const std::vector<int8_t> *name = nullptr,
5824     uint32_t version = 0,
5825     uint32_t required_permissions = 0,
5826     const std::vector<flatbuffers::Offset<chre::fbs::Service>> *services = nullptr) {
5827   auto name__ = name ? _fbb.CreateVector<int8_t>(*name) : 0;
5828   auto services__ = services ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::Service>>(*services) : 0;
5829   return chre::fbs::CreateEndpointInfo(
5830       _fbb,
5831       id,
5832       type,
5833       name__,
5834       version,
5835       required_permissions,
5836       services__);
5837 }
5838 
5839 flatbuffers::Offset<EndpointInfo> CreateEndpointInfo(flatbuffers::FlatBufferBuilder &_fbb, const EndpointInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5840 
5841 struct RegisterEndpointT : public flatbuffers::NativeTable {
5842   typedef RegisterEndpoint TableType;
5843   std::unique_ptr<chre::fbs::EndpointInfoT> endpoint;
5844   RegisterEndpointT() {
5845   }
5846 };
5847 
5848 struct RegisterEndpoint FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5849   typedef RegisterEndpointT NativeTableType;
5850   typedef RegisterEndpointBuilder Builder;
5851   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5852     VT_ENDPOINT = 4
5853   };
5854   const chre::fbs::EndpointInfo *endpoint() const {
5855     return GetPointer<const chre::fbs::EndpointInfo *>(VT_ENDPOINT);
5856   }
5857   chre::fbs::EndpointInfo *mutable_endpoint() {
5858     return GetPointer<chre::fbs::EndpointInfo *>(VT_ENDPOINT);
5859   }
5860   bool Verify(flatbuffers::Verifier &verifier) const {
5861     return VerifyTableStart(verifier) &&
5862            VerifyOffset(verifier, VT_ENDPOINT) &&
5863            verifier.VerifyTable(endpoint()) &&
5864            verifier.EndTable();
5865   }
5866   RegisterEndpointT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5867   void UnPackTo(RegisterEndpointT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5868   static flatbuffers::Offset<RegisterEndpoint> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegisterEndpointT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5869 };
5870 
5871 struct RegisterEndpointBuilder {
5872   typedef RegisterEndpoint Table;
5873   flatbuffers::FlatBufferBuilder &fbb_;
5874   flatbuffers::uoffset_t start_;
5875   void add_endpoint(flatbuffers::Offset<chre::fbs::EndpointInfo> endpoint) {
5876     fbb_.AddOffset(RegisterEndpoint::VT_ENDPOINT, endpoint);
5877   }
5878   explicit RegisterEndpointBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5879         : fbb_(_fbb) {
5880     start_ = fbb_.StartTable();
5881   }
5882   RegisterEndpointBuilder &operator=(const RegisterEndpointBuilder &);
5883   flatbuffers::Offset<RegisterEndpoint> Finish() {
5884     const auto end = fbb_.EndTable(start_);
5885     auto o = flatbuffers::Offset<RegisterEndpoint>(end);
5886     return o;
5887   }
5888 };
5889 
5890 inline flatbuffers::Offset<RegisterEndpoint> CreateRegisterEndpoint(
5891     flatbuffers::FlatBufferBuilder &_fbb,
5892     flatbuffers::Offset<chre::fbs::EndpointInfo> endpoint = 0) {
5893   RegisterEndpointBuilder builder_(_fbb);
5894   builder_.add_endpoint(endpoint);
5895   return builder_.Finish();
5896 }
5897 
5898 flatbuffers::Offset<RegisterEndpoint> CreateRegisterEndpoint(flatbuffers::FlatBufferBuilder &_fbb, const RegisterEndpointT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5899 
5900 struct UnregisterEndpointT : public flatbuffers::NativeTable {
5901   typedef UnregisterEndpoint TableType;
5902   std::unique_ptr<chre::fbs::EndpointIdT> endpoint;
5903   UnregisterEndpointT() {
5904   }
5905 };
5906 
5907 struct UnregisterEndpoint FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5908   typedef UnregisterEndpointT NativeTableType;
5909   typedef UnregisterEndpointBuilder Builder;
5910   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
5911     VT_ENDPOINT = 4
5912   };
5913   const chre::fbs::EndpointId *endpoint() const {
5914     return GetPointer<const chre::fbs::EndpointId *>(VT_ENDPOINT);
5915   }
5916   chre::fbs::EndpointId *mutable_endpoint() {
5917     return GetPointer<chre::fbs::EndpointId *>(VT_ENDPOINT);
5918   }
5919   bool Verify(flatbuffers::Verifier &verifier) const {
5920     return VerifyTableStart(verifier) &&
5921            VerifyOffset(verifier, VT_ENDPOINT) &&
5922            verifier.VerifyTable(endpoint()) &&
5923            verifier.EndTable();
5924   }
5925   UnregisterEndpointT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5926   void UnPackTo(UnregisterEndpointT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5927   static flatbuffers::Offset<UnregisterEndpoint> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterEndpointT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5928 };
5929 
5930 struct UnregisterEndpointBuilder {
5931   typedef UnregisterEndpoint Table;
5932   flatbuffers::FlatBufferBuilder &fbb_;
5933   flatbuffers::uoffset_t start_;
5934   void add_endpoint(flatbuffers::Offset<chre::fbs::EndpointId> endpoint) {
5935     fbb_.AddOffset(UnregisterEndpoint::VT_ENDPOINT, endpoint);
5936   }
5937   explicit UnregisterEndpointBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5938         : fbb_(_fbb) {
5939     start_ = fbb_.StartTable();
5940   }
5941   UnregisterEndpointBuilder &operator=(const UnregisterEndpointBuilder &);
5942   flatbuffers::Offset<UnregisterEndpoint> Finish() {
5943     const auto end = fbb_.EndTable(start_);
5944     auto o = flatbuffers::Offset<UnregisterEndpoint>(end);
5945     return o;
5946   }
5947 };
5948 
5949 inline flatbuffers::Offset<UnregisterEndpoint> CreateUnregisterEndpoint(
5950     flatbuffers::FlatBufferBuilder &_fbb,
5951     flatbuffers::Offset<chre::fbs::EndpointId> endpoint = 0) {
5952   UnregisterEndpointBuilder builder_(_fbb);
5953   builder_.add_endpoint(endpoint);
5954   return builder_.Finish();
5955 }
5956 
5957 flatbuffers::Offset<UnregisterEndpoint> CreateUnregisterEndpoint(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterEndpointT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5958 
5959 struct GetMessageHubsAndEndpointsRequestT : public flatbuffers::NativeTable {
5960   typedef GetMessageHubsAndEndpointsRequest TableType;
5961   GetMessageHubsAndEndpointsRequestT() {
5962   }
5963 };
5964 
5965 /// HAL->CHRE, indicates the HAL is coming up
5966 struct GetMessageHubsAndEndpointsRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
5967   typedef GetMessageHubsAndEndpointsRequestT NativeTableType;
5968   typedef GetMessageHubsAndEndpointsRequestBuilder Builder;
5969   bool Verify(flatbuffers::Verifier &verifier) const {
5970     return VerifyTableStart(verifier) &&
5971            verifier.EndTable();
5972   }
5973   GetMessageHubsAndEndpointsRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5974   void UnPackTo(GetMessageHubsAndEndpointsRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
5975   static flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
5976 };
5977 
5978 struct GetMessageHubsAndEndpointsRequestBuilder {
5979   typedef GetMessageHubsAndEndpointsRequest Table;
5980   flatbuffers::FlatBufferBuilder &fbb_;
5981   flatbuffers::uoffset_t start_;
5982   explicit GetMessageHubsAndEndpointsRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
5983         : fbb_(_fbb) {
5984     start_ = fbb_.StartTable();
5985   }
5986   GetMessageHubsAndEndpointsRequestBuilder &operator=(const GetMessageHubsAndEndpointsRequestBuilder &);
5987   flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> Finish() {
5988     const auto end = fbb_.EndTable(start_);
5989     auto o = flatbuffers::Offset<GetMessageHubsAndEndpointsRequest>(end);
5990     return o;
5991   }
5992 };
5993 
5994 inline flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> CreateGetMessageHubsAndEndpointsRequest(
5995     flatbuffers::FlatBufferBuilder &_fbb) {
5996   GetMessageHubsAndEndpointsRequestBuilder builder_(_fbb);
5997   return builder_.Finish();
5998 }
5999 
6000 flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> CreateGetMessageHubsAndEndpointsRequest(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6001 
6002 struct GetMessageHubsAndEndpointsResponseT : public flatbuffers::NativeTable {
6003   typedef GetMessageHubsAndEndpointsResponse TableType;
6004   std::vector<std::unique_ptr<chre::fbs::MessageHubT>> hubs;
6005   std::vector<std::unique_ptr<chre::fbs::EndpointInfoT>> endpoints;
6006   GetMessageHubsAndEndpointsResponseT() {
6007   }
6008 };
6009 
6010 struct GetMessageHubsAndEndpointsResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6011   typedef GetMessageHubsAndEndpointsResponseT NativeTableType;
6012   typedef GetMessageHubsAndEndpointsResponseBuilder Builder;
6013   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6014     VT_HUBS = 4,
6015     VT_ENDPOINTS = 6
6016   };
6017   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>> *hubs() const {
6018     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>> *>(VT_HUBS);
6019   }
6020   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>> *mutable_hubs() {
6021     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>> *>(VT_HUBS);
6022   }
6023   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>> *endpoints() const {
6024     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>> *>(VT_ENDPOINTS);
6025   }
6026   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>> *mutable_endpoints() {
6027     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>> *>(VT_ENDPOINTS);
6028   }
6029   bool Verify(flatbuffers::Verifier &verifier) const {
6030     return VerifyTableStart(verifier) &&
6031            VerifyOffset(verifier, VT_HUBS) &&
6032            verifier.VerifyVector(hubs()) &&
6033            verifier.VerifyVectorOfTables(hubs()) &&
6034            VerifyOffset(verifier, VT_ENDPOINTS) &&
6035            verifier.VerifyVector(endpoints()) &&
6036            verifier.VerifyVectorOfTables(endpoints()) &&
6037            verifier.EndTable();
6038   }
6039   GetMessageHubsAndEndpointsResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6040   void UnPackTo(GetMessageHubsAndEndpointsResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6041   static flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6042 };
6043 
6044 struct GetMessageHubsAndEndpointsResponseBuilder {
6045   typedef GetMessageHubsAndEndpointsResponse Table;
6046   flatbuffers::FlatBufferBuilder &fbb_;
6047   flatbuffers::uoffset_t start_;
6048   void add_hubs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>>> hubs) {
6049     fbb_.AddOffset(GetMessageHubsAndEndpointsResponse::VT_HUBS, hubs);
6050   }
6051   void add_endpoints(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>>> endpoints) {
6052     fbb_.AddOffset(GetMessageHubsAndEndpointsResponse::VT_ENDPOINTS, endpoints);
6053   }
6054   explicit GetMessageHubsAndEndpointsResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6055         : fbb_(_fbb) {
6056     start_ = fbb_.StartTable();
6057   }
6058   GetMessageHubsAndEndpointsResponseBuilder &operator=(const GetMessageHubsAndEndpointsResponseBuilder &);
6059   flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> Finish() {
6060     const auto end = fbb_.EndTable(start_);
6061     auto o = flatbuffers::Offset<GetMessageHubsAndEndpointsResponse>(end);
6062     return o;
6063   }
6064 };
6065 
6066 inline flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> CreateGetMessageHubsAndEndpointsResponse(
6067     flatbuffers::FlatBufferBuilder &_fbb,
6068     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MessageHub>>> hubs = 0,
6069     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::EndpointInfo>>> endpoints = 0) {
6070   GetMessageHubsAndEndpointsResponseBuilder builder_(_fbb);
6071   builder_.add_endpoints(endpoints);
6072   builder_.add_hubs(hubs);
6073   return builder_.Finish();
6074 }
6075 
6076 inline flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> CreateGetMessageHubsAndEndpointsResponseDirect(
6077     flatbuffers::FlatBufferBuilder &_fbb,
6078     const std::vector<flatbuffers::Offset<chre::fbs::MessageHub>> *hubs = nullptr,
6079     const std::vector<flatbuffers::Offset<chre::fbs::EndpointInfo>> *endpoints = nullptr) {
6080   auto hubs__ = hubs ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::MessageHub>>(*hubs) : 0;
6081   auto endpoints__ = endpoints ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::EndpointInfo>>(*endpoints) : 0;
6082   return chre::fbs::CreateGetMessageHubsAndEndpointsResponse(
6083       _fbb,
6084       hubs__,
6085       endpoints__);
6086 }
6087 
6088 flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> CreateGetMessageHubsAndEndpointsResponse(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6089 
6090 struct OpenEndpointSessionRequestT : public flatbuffers::NativeTable {
6091   typedef OpenEndpointSessionRequest TableType;
6092   uint16_t id;
6093   std::unique_ptr<chre::fbs::EndpointIdT> fromEndpoint;
6094   std::unique_ptr<chre::fbs::EndpointIdT> toEndpoint;
6095   std::vector<int8_t> serviceDescriptor;
6096   OpenEndpointSessionRequestT()
6097       : id(0) {
6098   }
6099 };
6100 
6101 struct OpenEndpointSessionRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6102   typedef OpenEndpointSessionRequestT NativeTableType;
6103   typedef OpenEndpointSessionRequestBuilder Builder;
6104   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6105     VT_ID = 4,
6106     VT_FROMENDPOINT = 6,
6107     VT_TOENDPOINT = 8,
6108     VT_SERVICEDESCRIPTOR = 10
6109   };
6110   uint16_t id() const {
6111     return GetField<uint16_t>(VT_ID, 0);
6112   }
6113   bool mutate_id(uint16_t _id) {
6114     return SetField<uint16_t>(VT_ID, _id, 0);
6115   }
6116   const chre::fbs::EndpointId *fromEndpoint() const {
6117     return GetPointer<const chre::fbs::EndpointId *>(VT_FROMENDPOINT);
6118   }
6119   chre::fbs::EndpointId *mutable_fromEndpoint() {
6120     return GetPointer<chre::fbs::EndpointId *>(VT_FROMENDPOINT);
6121   }
6122   const chre::fbs::EndpointId *toEndpoint() const {
6123     return GetPointer<const chre::fbs::EndpointId *>(VT_TOENDPOINT);
6124   }
6125   chre::fbs::EndpointId *mutable_toEndpoint() {
6126     return GetPointer<chre::fbs::EndpointId *>(VT_TOENDPOINT);
6127   }
6128   /// If present, describes the service definition used over the session
6129   const flatbuffers::Vector<int8_t> *serviceDescriptor() const {
6130     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_SERVICEDESCRIPTOR);
6131   }
6132   flatbuffers::Vector<int8_t> *mutable_serviceDescriptor() {
6133     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_SERVICEDESCRIPTOR);
6134   }
6135   bool Verify(flatbuffers::Verifier &verifier) const {
6136     return VerifyTableStart(verifier) &&
6137            VerifyField<uint16_t>(verifier, VT_ID) &&
6138            VerifyOffset(verifier, VT_FROMENDPOINT) &&
6139            verifier.VerifyTable(fromEndpoint()) &&
6140            VerifyOffset(verifier, VT_TOENDPOINT) &&
6141            verifier.VerifyTable(toEndpoint()) &&
6142            VerifyOffset(verifier, VT_SERVICEDESCRIPTOR) &&
6143            verifier.VerifyVector(serviceDescriptor()) &&
6144            verifier.EndTable();
6145   }
6146   OpenEndpointSessionRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6147   void UnPackTo(OpenEndpointSessionRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6148   static flatbuffers::Offset<OpenEndpointSessionRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const OpenEndpointSessionRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6149 };
6150 
6151 struct OpenEndpointSessionRequestBuilder {
6152   typedef OpenEndpointSessionRequest Table;
6153   flatbuffers::FlatBufferBuilder &fbb_;
6154   flatbuffers::uoffset_t start_;
6155   void add_id(uint16_t id) {
6156     fbb_.AddElement<uint16_t>(OpenEndpointSessionRequest::VT_ID, id, 0);
6157   }
6158   void add_fromEndpoint(flatbuffers::Offset<chre::fbs::EndpointId> fromEndpoint) {
6159     fbb_.AddOffset(OpenEndpointSessionRequest::VT_FROMENDPOINT, fromEndpoint);
6160   }
6161   void add_toEndpoint(flatbuffers::Offset<chre::fbs::EndpointId> toEndpoint) {
6162     fbb_.AddOffset(OpenEndpointSessionRequest::VT_TOENDPOINT, toEndpoint);
6163   }
6164   void add_serviceDescriptor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> serviceDescriptor) {
6165     fbb_.AddOffset(OpenEndpointSessionRequest::VT_SERVICEDESCRIPTOR, serviceDescriptor);
6166   }
6167   explicit OpenEndpointSessionRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6168         : fbb_(_fbb) {
6169     start_ = fbb_.StartTable();
6170   }
6171   OpenEndpointSessionRequestBuilder &operator=(const OpenEndpointSessionRequestBuilder &);
6172   flatbuffers::Offset<OpenEndpointSessionRequest> Finish() {
6173     const auto end = fbb_.EndTable(start_);
6174     auto o = flatbuffers::Offset<OpenEndpointSessionRequest>(end);
6175     return o;
6176   }
6177 };
6178 
6179 inline flatbuffers::Offset<OpenEndpointSessionRequest> CreateOpenEndpointSessionRequest(
6180     flatbuffers::FlatBufferBuilder &_fbb,
6181     uint16_t id = 0,
6182     flatbuffers::Offset<chre::fbs::EndpointId> fromEndpoint = 0,
6183     flatbuffers::Offset<chre::fbs::EndpointId> toEndpoint = 0,
6184     flatbuffers::Offset<flatbuffers::Vector<int8_t>> serviceDescriptor = 0) {
6185   OpenEndpointSessionRequestBuilder builder_(_fbb);
6186   builder_.add_serviceDescriptor(serviceDescriptor);
6187   builder_.add_toEndpoint(toEndpoint);
6188   builder_.add_fromEndpoint(fromEndpoint);
6189   builder_.add_id(id);
6190   return builder_.Finish();
6191 }
6192 
6193 inline flatbuffers::Offset<OpenEndpointSessionRequest> CreateOpenEndpointSessionRequestDirect(
6194     flatbuffers::FlatBufferBuilder &_fbb,
6195     uint16_t id = 0,
6196     flatbuffers::Offset<chre::fbs::EndpointId> fromEndpoint = 0,
6197     flatbuffers::Offset<chre::fbs::EndpointId> toEndpoint = 0,
6198     const std::vector<int8_t> *serviceDescriptor = nullptr) {
6199   auto serviceDescriptor__ = serviceDescriptor ? _fbb.CreateVector<int8_t>(*serviceDescriptor) : 0;
6200   return chre::fbs::CreateOpenEndpointSessionRequest(
6201       _fbb,
6202       id,
6203       fromEndpoint,
6204       toEndpoint,
6205       serviceDescriptor__);
6206 }
6207 
6208 flatbuffers::Offset<OpenEndpointSessionRequest> CreateOpenEndpointSessionRequest(flatbuffers::FlatBufferBuilder &_fbb, const OpenEndpointSessionRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6209 
6210 struct EndpointSessionOpenedT : public flatbuffers::NativeTable {
6211   typedef EndpointSessionOpened TableType;
6212   uint16_t id;
6213   EndpointSessionOpenedT()
6214       : id(0) {
6215   }
6216 };
6217 
6218 struct EndpointSessionOpened FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6219   typedef EndpointSessionOpenedT NativeTableType;
6220   typedef EndpointSessionOpenedBuilder Builder;
6221   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6222     VT_ID = 4
6223   };
6224   uint16_t id() const {
6225     return GetField<uint16_t>(VT_ID, 0);
6226   }
6227   bool mutate_id(uint16_t _id) {
6228     return SetField<uint16_t>(VT_ID, _id, 0);
6229   }
6230   bool Verify(flatbuffers::Verifier &verifier) const {
6231     return VerifyTableStart(verifier) &&
6232            VerifyField<uint16_t>(verifier, VT_ID) &&
6233            verifier.EndTable();
6234   }
6235   EndpointSessionOpenedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6236   void UnPackTo(EndpointSessionOpenedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6237   static flatbuffers::Offset<EndpointSessionOpened> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionOpenedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6238 };
6239 
6240 struct EndpointSessionOpenedBuilder {
6241   typedef EndpointSessionOpened Table;
6242   flatbuffers::FlatBufferBuilder &fbb_;
6243   flatbuffers::uoffset_t start_;
6244   void add_id(uint16_t id) {
6245     fbb_.AddElement<uint16_t>(EndpointSessionOpened::VT_ID, id, 0);
6246   }
6247   explicit EndpointSessionOpenedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6248         : fbb_(_fbb) {
6249     start_ = fbb_.StartTable();
6250   }
6251   EndpointSessionOpenedBuilder &operator=(const EndpointSessionOpenedBuilder &);
6252   flatbuffers::Offset<EndpointSessionOpened> Finish() {
6253     const auto end = fbb_.EndTable(start_);
6254     auto o = flatbuffers::Offset<EndpointSessionOpened>(end);
6255     return o;
6256   }
6257 };
6258 
6259 inline flatbuffers::Offset<EndpointSessionOpened> CreateEndpointSessionOpened(
6260     flatbuffers::FlatBufferBuilder &_fbb,
6261     uint16_t id = 0) {
6262   EndpointSessionOpenedBuilder builder_(_fbb);
6263   builder_.add_id(id);
6264   return builder_.Finish();
6265 }
6266 
6267 flatbuffers::Offset<EndpointSessionOpened> CreateEndpointSessionOpened(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionOpenedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6268 
6269 struct EndpointSessionClosedT : public flatbuffers::NativeTable {
6270   typedef EndpointSessionClosed TableType;
6271   uint16_t id;
6272   chre::fbs::Reason reason;
6273   EndpointSessionClosedT()
6274       : id(0),
6275         reason(chre::fbs::Reason::UNSPECIFIED) {
6276   }
6277 };
6278 
6279 struct EndpointSessionClosed FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6280   typedef EndpointSessionClosedT NativeTableType;
6281   typedef EndpointSessionClosedBuilder Builder;
6282   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6283     VT_ID = 4,
6284     VT_REASON = 6
6285   };
6286   uint16_t id() const {
6287     return GetField<uint16_t>(VT_ID, 0);
6288   }
6289   bool mutate_id(uint16_t _id) {
6290     return SetField<uint16_t>(VT_ID, _id, 0);
6291   }
6292   chre::fbs::Reason reason() const {
6293     return static_cast<chre::fbs::Reason>(GetField<uint8_t>(VT_REASON, 0));
6294   }
6295   bool mutate_reason(chre::fbs::Reason _reason) {
6296     return SetField<uint8_t>(VT_REASON, static_cast<uint8_t>(_reason), 0);
6297   }
6298   bool Verify(flatbuffers::Verifier &verifier) const {
6299     return VerifyTableStart(verifier) &&
6300            VerifyField<uint16_t>(verifier, VT_ID) &&
6301            VerifyField<uint8_t>(verifier, VT_REASON) &&
6302            verifier.EndTable();
6303   }
6304   EndpointSessionClosedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6305   void UnPackTo(EndpointSessionClosedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6306   static flatbuffers::Offset<EndpointSessionClosed> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionClosedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6307 };
6308 
6309 struct EndpointSessionClosedBuilder {
6310   typedef EndpointSessionClosed Table;
6311   flatbuffers::FlatBufferBuilder &fbb_;
6312   flatbuffers::uoffset_t start_;
6313   void add_id(uint16_t id) {
6314     fbb_.AddElement<uint16_t>(EndpointSessionClosed::VT_ID, id, 0);
6315   }
6316   void add_reason(chre::fbs::Reason reason) {
6317     fbb_.AddElement<uint8_t>(EndpointSessionClosed::VT_REASON, static_cast<uint8_t>(reason), 0);
6318   }
6319   explicit EndpointSessionClosedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6320         : fbb_(_fbb) {
6321     start_ = fbb_.StartTable();
6322   }
6323   EndpointSessionClosedBuilder &operator=(const EndpointSessionClosedBuilder &);
6324   flatbuffers::Offset<EndpointSessionClosed> Finish() {
6325     const auto end = fbb_.EndTable(start_);
6326     auto o = flatbuffers::Offset<EndpointSessionClosed>(end);
6327     return o;
6328   }
6329 };
6330 
6331 inline flatbuffers::Offset<EndpointSessionClosed> CreateEndpointSessionClosed(
6332     flatbuffers::FlatBufferBuilder &_fbb,
6333     uint16_t id = 0,
6334     chre::fbs::Reason reason = chre::fbs::Reason::UNSPECIFIED) {
6335   EndpointSessionClosedBuilder builder_(_fbb);
6336   builder_.add_id(id);
6337   builder_.add_reason(reason);
6338   return builder_.Finish();
6339 }
6340 
6341 flatbuffers::Offset<EndpointSessionClosed> CreateEndpointSessionClosed(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionClosedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6342 
6343 struct EndpointSessionMessageT : public flatbuffers::NativeTable {
6344   typedef EndpointSessionMessage TableType;
6345   uint16_t session_id;
6346   uint32_t type;
6347   uint32_t permissions;
6348   std::vector<uint8_t> data;
6349   uint32_t flags;
6350   uint32_t sequence_number;
6351   EndpointSessionMessageT()
6352       : session_id(0),
6353         type(0),
6354         permissions(0),
6355         flags(0),
6356         sequence_number(0) {
6357   }
6358 };
6359 
6360 struct EndpointSessionMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6361   typedef EndpointSessionMessageT NativeTableType;
6362   typedef EndpointSessionMessageBuilder Builder;
6363   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6364     VT_SESSION_ID = 4,
6365     VT_TYPE = 6,
6366     VT_PERMISSIONS = 8,
6367     VT_DATA = 10,
6368     VT_FLAGS = 12,
6369     VT_SEQUENCE_NUMBER = 14
6370   };
6371   /// Id of session this message is being sent within
6372   uint16_t session_id() const {
6373     return GetField<uint16_t>(VT_SESSION_ID, 0);
6374   }
6375   bool mutate_session_id(uint16_t _session_id) {
6376     return SetField<uint16_t>(VT_SESSION_ID, _session_id, 0);
6377   }
6378   /// Type of the message, specific to the Session protocol
6379   uint32_t type() const {
6380     return GetField<uint32_t>(VT_TYPE, 0);
6381   }
6382   bool mutate_type(uint32_t _type) {
6383     return SetField<uint32_t>(VT_TYPE, _type, 0);
6384   }
6385   /// Values from CHRE_MESSAGE_PERMISSION_*. Permissions required to read the
6386   /// message.
6387   uint32_t permissions() const {
6388     return GetField<uint32_t>(VT_PERMISSIONS, 0);
6389   }
6390   bool mutate_permissions(uint32_t _permissions) {
6391     return SetField<uint32_t>(VT_PERMISSIONS, _permissions, 0);
6392   }
6393   const flatbuffers::Vector<uint8_t> *data() const {
6394     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_DATA);
6395   }
6396   flatbuffers::Vector<uint8_t> *mutable_data() {
6397     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_DATA);
6398   }
6399   /// Bitmask of additional flags applied to the message:
6400   /// - 0x1: Message delivery status required within 1s
6401   uint32_t flags() const {
6402     return GetField<uint32_t>(VT_FLAGS, 0);
6403   }
6404   bool mutate_flags(uint32_t _flags) {
6405     return SetField<uint32_t>(VT_FLAGS, _flags, 0);
6406   }
6407   uint32_t sequence_number() const {
6408     return GetField<uint32_t>(VT_SEQUENCE_NUMBER, 0);
6409   }
6410   bool mutate_sequence_number(uint32_t _sequence_number) {
6411     return SetField<uint32_t>(VT_SEQUENCE_NUMBER, _sequence_number, 0);
6412   }
6413   bool Verify(flatbuffers::Verifier &verifier) const {
6414     return VerifyTableStart(verifier) &&
6415            VerifyField<uint16_t>(verifier, VT_SESSION_ID) &&
6416            VerifyField<uint32_t>(verifier, VT_TYPE) &&
6417            VerifyField<uint32_t>(verifier, VT_PERMISSIONS) &&
6418            VerifyOffset(verifier, VT_DATA) &&
6419            verifier.VerifyVector(data()) &&
6420            VerifyField<uint32_t>(verifier, VT_FLAGS) &&
6421            VerifyField<uint32_t>(verifier, VT_SEQUENCE_NUMBER) &&
6422            verifier.EndTable();
6423   }
6424   EndpointSessionMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6425   void UnPackTo(EndpointSessionMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6426   static flatbuffers::Offset<EndpointSessionMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6427 };
6428 
6429 struct EndpointSessionMessageBuilder {
6430   typedef EndpointSessionMessage Table;
6431   flatbuffers::FlatBufferBuilder &fbb_;
6432   flatbuffers::uoffset_t start_;
6433   void add_session_id(uint16_t session_id) {
6434     fbb_.AddElement<uint16_t>(EndpointSessionMessage::VT_SESSION_ID, session_id, 0);
6435   }
6436   void add_type(uint32_t type) {
6437     fbb_.AddElement<uint32_t>(EndpointSessionMessage::VT_TYPE, type, 0);
6438   }
6439   void add_permissions(uint32_t permissions) {
6440     fbb_.AddElement<uint32_t>(EndpointSessionMessage::VT_PERMISSIONS, permissions, 0);
6441   }
6442   void add_data(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data) {
6443     fbb_.AddOffset(EndpointSessionMessage::VT_DATA, data);
6444   }
6445   void add_flags(uint32_t flags) {
6446     fbb_.AddElement<uint32_t>(EndpointSessionMessage::VT_FLAGS, flags, 0);
6447   }
6448   void add_sequence_number(uint32_t sequence_number) {
6449     fbb_.AddElement<uint32_t>(EndpointSessionMessage::VT_SEQUENCE_NUMBER, sequence_number, 0);
6450   }
6451   explicit EndpointSessionMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6452         : fbb_(_fbb) {
6453     start_ = fbb_.StartTable();
6454   }
6455   EndpointSessionMessageBuilder &operator=(const EndpointSessionMessageBuilder &);
6456   flatbuffers::Offset<EndpointSessionMessage> Finish() {
6457     const auto end = fbb_.EndTable(start_);
6458     auto o = flatbuffers::Offset<EndpointSessionMessage>(end);
6459     return o;
6460   }
6461 };
6462 
6463 inline flatbuffers::Offset<EndpointSessionMessage> CreateEndpointSessionMessage(
6464     flatbuffers::FlatBufferBuilder &_fbb,
6465     uint16_t session_id = 0,
6466     uint32_t type = 0,
6467     uint32_t permissions = 0,
6468     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data = 0,
6469     uint32_t flags = 0,
6470     uint32_t sequence_number = 0) {
6471   EndpointSessionMessageBuilder builder_(_fbb);
6472   builder_.add_sequence_number(sequence_number);
6473   builder_.add_flags(flags);
6474   builder_.add_data(data);
6475   builder_.add_permissions(permissions);
6476   builder_.add_type(type);
6477   builder_.add_session_id(session_id);
6478   return builder_.Finish();
6479 }
6480 
6481 inline flatbuffers::Offset<EndpointSessionMessage> CreateEndpointSessionMessageDirect(
6482     flatbuffers::FlatBufferBuilder &_fbb,
6483     uint16_t session_id = 0,
6484     uint32_t type = 0,
6485     uint32_t permissions = 0,
6486     const std::vector<uint8_t> *data = nullptr,
6487     uint32_t flags = 0,
6488     uint32_t sequence_number = 0) {
6489   auto data__ = data ? _fbb.CreateVector<uint8_t>(*data) : 0;
6490   return chre::fbs::CreateEndpointSessionMessage(
6491       _fbb,
6492       session_id,
6493       type,
6494       permissions,
6495       data__,
6496       flags,
6497       sequence_number);
6498 }
6499 
6500 flatbuffers::Offset<EndpointSessionMessage> CreateEndpointSessionMessage(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6501 
6502 struct EndpointSessionMessageDeliveryStatusT : public flatbuffers::NativeTable {
6503   typedef EndpointSessionMessageDeliveryStatus TableType;
6504   uint16_t session_id;
6505   std::unique_ptr<chre::fbs::MessageDeliveryStatusT> status;
6506   EndpointSessionMessageDeliveryStatusT()
6507       : session_id(0) {
6508   }
6509 };
6510 
6511 struct EndpointSessionMessageDeliveryStatus FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6512   typedef EndpointSessionMessageDeliveryStatusT NativeTableType;
6513   typedef EndpointSessionMessageDeliveryStatusBuilder Builder;
6514   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6515     VT_SESSION_ID = 4,
6516     VT_STATUS = 6
6517   };
6518   /// Id of session the message was sent within
6519   uint16_t session_id() const {
6520     return GetField<uint16_t>(VT_SESSION_ID, 0);
6521   }
6522   bool mutate_session_id(uint16_t _session_id) {
6523     return SetField<uint16_t>(VT_SESSION_ID, _session_id, 0);
6524   }
6525   const chre::fbs::MessageDeliveryStatus *status() const {
6526     return GetPointer<const chre::fbs::MessageDeliveryStatus *>(VT_STATUS);
6527   }
6528   chre::fbs::MessageDeliveryStatus *mutable_status() {
6529     return GetPointer<chre::fbs::MessageDeliveryStatus *>(VT_STATUS);
6530   }
6531   bool Verify(flatbuffers::Verifier &verifier) const {
6532     return VerifyTableStart(verifier) &&
6533            VerifyField<uint16_t>(verifier, VT_SESSION_ID) &&
6534            VerifyOffset(verifier, VT_STATUS) &&
6535            verifier.VerifyTable(status()) &&
6536            verifier.EndTable();
6537   }
6538   EndpointSessionMessageDeliveryStatusT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6539   void UnPackTo(EndpointSessionMessageDeliveryStatusT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6540   static flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageDeliveryStatusT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6541 };
6542 
6543 struct EndpointSessionMessageDeliveryStatusBuilder {
6544   typedef EndpointSessionMessageDeliveryStatus Table;
6545   flatbuffers::FlatBufferBuilder &fbb_;
6546   flatbuffers::uoffset_t start_;
6547   void add_session_id(uint16_t session_id) {
6548     fbb_.AddElement<uint16_t>(EndpointSessionMessageDeliveryStatus::VT_SESSION_ID, session_id, 0);
6549   }
6550   void add_status(flatbuffers::Offset<chre::fbs::MessageDeliveryStatus> status) {
6551     fbb_.AddOffset(EndpointSessionMessageDeliveryStatus::VT_STATUS, status);
6552   }
6553   explicit EndpointSessionMessageDeliveryStatusBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6554         : fbb_(_fbb) {
6555     start_ = fbb_.StartTable();
6556   }
6557   EndpointSessionMessageDeliveryStatusBuilder &operator=(const EndpointSessionMessageDeliveryStatusBuilder &);
6558   flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> Finish() {
6559     const auto end = fbb_.EndTable(start_);
6560     auto o = flatbuffers::Offset<EndpointSessionMessageDeliveryStatus>(end);
6561     return o;
6562   }
6563 };
6564 
6565 inline flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> CreateEndpointSessionMessageDeliveryStatus(
6566     flatbuffers::FlatBufferBuilder &_fbb,
6567     uint16_t session_id = 0,
6568     flatbuffers::Offset<chre::fbs::MessageDeliveryStatus> status = 0) {
6569   EndpointSessionMessageDeliveryStatusBuilder builder_(_fbb);
6570   builder_.add_status(status);
6571   builder_.add_session_id(session_id);
6572   return builder_.Finish();
6573 }
6574 
6575 flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> CreateEndpointSessionMessageDeliveryStatus(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageDeliveryStatusT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6576 
6577 struct MessageContainerT : public flatbuffers::NativeTable {
6578   typedef MessageContainer TableType;
6579   chre::fbs::ChreMessageUnion message;
6580   std::unique_ptr<chre::fbs::HostAddress> host_addr;
6581   MessageContainerT() {
6582   }
6583 };
6584 
6585 /// The top-level container that encapsulates all possible messages. Note that
6586 /// per FlatBuffers requirements, we can't use a union as the top-level
6587 /// structure (root type), so we must wrap it in a table.
6588 struct MessageContainer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
6589   typedef MessageContainerT NativeTableType;
6590   typedef MessageContainerBuilder Builder;
6591   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
6592     VT_MESSAGE_TYPE = 4,
6593     VT_MESSAGE = 6,
6594     VT_HOST_ADDR = 8
6595   };
6596   chre::fbs::ChreMessage message_type() const {
6597     return static_cast<chre::fbs::ChreMessage>(GetField<uint8_t>(VT_MESSAGE_TYPE, 0));
6598   }
6599   const void *message() const {
6600     return GetPointer<const void *>(VT_MESSAGE);
6601   }
6602   template<typename T> const T *message_as() const;
6603   const chre::fbs::NanoappMessage *message_as_NanoappMessage() const {
6604     return message_type() == chre::fbs::ChreMessage::NanoappMessage ? static_cast<const chre::fbs::NanoappMessage *>(message()) : nullptr;
6605   }
6606   const chre::fbs::HubInfoRequest *message_as_HubInfoRequest() const {
6607     return message_type() == chre::fbs::ChreMessage::HubInfoRequest ? static_cast<const chre::fbs::HubInfoRequest *>(message()) : nullptr;
6608   }
6609   const chre::fbs::HubInfoResponse *message_as_HubInfoResponse() const {
6610     return message_type() == chre::fbs::ChreMessage::HubInfoResponse ? static_cast<const chre::fbs::HubInfoResponse *>(message()) : nullptr;
6611   }
6612   const chre::fbs::NanoappListRequest *message_as_NanoappListRequest() const {
6613     return message_type() == chre::fbs::ChreMessage::NanoappListRequest ? static_cast<const chre::fbs::NanoappListRequest *>(message()) : nullptr;
6614   }
6615   const chre::fbs::NanoappListResponse *message_as_NanoappListResponse() const {
6616     return message_type() == chre::fbs::ChreMessage::NanoappListResponse ? static_cast<const chre::fbs::NanoappListResponse *>(message()) : nullptr;
6617   }
6618   const chre::fbs::LoadNanoappRequest *message_as_LoadNanoappRequest() const {
6619     return message_type() == chre::fbs::ChreMessage::LoadNanoappRequest ? static_cast<const chre::fbs::LoadNanoappRequest *>(message()) : nullptr;
6620   }
6621   const chre::fbs::LoadNanoappResponse *message_as_LoadNanoappResponse() const {
6622     return message_type() == chre::fbs::ChreMessage::LoadNanoappResponse ? static_cast<const chre::fbs::LoadNanoappResponse *>(message()) : nullptr;
6623   }
6624   const chre::fbs::UnloadNanoappRequest *message_as_UnloadNanoappRequest() const {
6625     return message_type() == chre::fbs::ChreMessage::UnloadNanoappRequest ? static_cast<const chre::fbs::UnloadNanoappRequest *>(message()) : nullptr;
6626   }
6627   const chre::fbs::UnloadNanoappResponse *message_as_UnloadNanoappResponse() const {
6628     return message_type() == chre::fbs::ChreMessage::UnloadNanoappResponse ? static_cast<const chre::fbs::UnloadNanoappResponse *>(message()) : nullptr;
6629   }
6630   const chre::fbs::LogMessage *message_as_LogMessage() const {
6631     return message_type() == chre::fbs::ChreMessage::LogMessage ? static_cast<const chre::fbs::LogMessage *>(message()) : nullptr;
6632   }
6633   const chre::fbs::TimeSyncMessage *message_as_TimeSyncMessage() const {
6634     return message_type() == chre::fbs::ChreMessage::TimeSyncMessage ? static_cast<const chre::fbs::TimeSyncMessage *>(message()) : nullptr;
6635   }
6636   const chre::fbs::DebugDumpRequest *message_as_DebugDumpRequest() const {
6637     return message_type() == chre::fbs::ChreMessage::DebugDumpRequest ? static_cast<const chre::fbs::DebugDumpRequest *>(message()) : nullptr;
6638   }
6639   const chre::fbs::DebugDumpData *message_as_DebugDumpData() const {
6640     return message_type() == chre::fbs::ChreMessage::DebugDumpData ? static_cast<const chre::fbs::DebugDumpData *>(message()) : nullptr;
6641   }
6642   const chre::fbs::DebugDumpResponse *message_as_DebugDumpResponse() const {
6643     return message_type() == chre::fbs::ChreMessage::DebugDumpResponse ? static_cast<const chre::fbs::DebugDumpResponse *>(message()) : nullptr;
6644   }
6645   const chre::fbs::TimeSyncRequest *message_as_TimeSyncRequest() const {
6646     return message_type() == chre::fbs::ChreMessage::TimeSyncRequest ? static_cast<const chre::fbs::TimeSyncRequest *>(message()) : nullptr;
6647   }
6648   const chre::fbs::LowPowerMicAccessRequest *message_as_LowPowerMicAccessRequest() const {
6649     return message_type() == chre::fbs::ChreMessage::LowPowerMicAccessRequest ? static_cast<const chre::fbs::LowPowerMicAccessRequest *>(message()) : nullptr;
6650   }
6651   const chre::fbs::LowPowerMicAccessRelease *message_as_LowPowerMicAccessRelease() const {
6652     return message_type() == chre::fbs::ChreMessage::LowPowerMicAccessRelease ? static_cast<const chre::fbs::LowPowerMicAccessRelease *>(message()) : nullptr;
6653   }
6654   const chre::fbs::SettingChangeMessage *message_as_SettingChangeMessage() const {
6655     return message_type() == chre::fbs::ChreMessage::SettingChangeMessage ? static_cast<const chre::fbs::SettingChangeMessage *>(message()) : nullptr;
6656   }
6657   const chre::fbs::LogMessageV2 *message_as_LogMessageV2() const {
6658     return message_type() == chre::fbs::ChreMessage::LogMessageV2 ? static_cast<const chre::fbs::LogMessageV2 *>(message()) : nullptr;
6659   }
6660   const chre::fbs::SelfTestRequest *message_as_SelfTestRequest() const {
6661     return message_type() == chre::fbs::ChreMessage::SelfTestRequest ? static_cast<const chre::fbs::SelfTestRequest *>(message()) : nullptr;
6662   }
6663   const chre::fbs::SelfTestResponse *message_as_SelfTestResponse() const {
6664     return message_type() == chre::fbs::ChreMessage::SelfTestResponse ? static_cast<const chre::fbs::SelfTestResponse *>(message()) : nullptr;
6665   }
6666   const chre::fbs::HostEndpointConnected *message_as_HostEndpointConnected() const {
6667     return message_type() == chre::fbs::ChreMessage::HostEndpointConnected ? static_cast<const chre::fbs::HostEndpointConnected *>(message()) : nullptr;
6668   }
6669   const chre::fbs::HostEndpointDisconnected *message_as_HostEndpointDisconnected() const {
6670     return message_type() == chre::fbs::ChreMessage::HostEndpointDisconnected ? static_cast<const chre::fbs::HostEndpointDisconnected *>(message()) : nullptr;
6671   }
6672   const chre::fbs::MetricLog *message_as_MetricLog() const {
6673     return message_type() == chre::fbs::ChreMessage::MetricLog ? static_cast<const chre::fbs::MetricLog *>(message()) : nullptr;
6674   }
6675   const chre::fbs::BatchedMetricLog *message_as_BatchedMetricLog() const {
6676     return message_type() == chre::fbs::ChreMessage::BatchedMetricLog ? static_cast<const chre::fbs::BatchedMetricLog *>(message()) : nullptr;
6677   }
6678   const chre::fbs::NanConfigurationRequest *message_as_NanConfigurationRequest() const {
6679     return message_type() == chre::fbs::ChreMessage::NanConfigurationRequest ? static_cast<const chre::fbs::NanConfigurationRequest *>(message()) : nullptr;
6680   }
6681   const chre::fbs::NanConfigurationUpdate *message_as_NanConfigurationUpdate() const {
6682     return message_type() == chre::fbs::ChreMessage::NanConfigurationUpdate ? static_cast<const chre::fbs::NanConfigurationUpdate *>(message()) : nullptr;
6683   }
6684   const chre::fbs::DebugConfiguration *message_as_DebugConfiguration() const {
6685     return message_type() == chre::fbs::ChreMessage::DebugConfiguration ? static_cast<const chre::fbs::DebugConfiguration *>(message()) : nullptr;
6686   }
6687   const chre::fbs::PulseRequest *message_as_PulseRequest() const {
6688     return message_type() == chre::fbs::ChreMessage::PulseRequest ? static_cast<const chre::fbs::PulseRequest *>(message()) : nullptr;
6689   }
6690   const chre::fbs::PulseResponse *message_as_PulseResponse() const {
6691     return message_type() == chre::fbs::ChreMessage::PulseResponse ? static_cast<const chre::fbs::PulseResponse *>(message()) : nullptr;
6692   }
6693   const chre::fbs::NanoappTokenDatabaseInfo *message_as_NanoappTokenDatabaseInfo() const {
6694     return message_type() == chre::fbs::ChreMessage::NanoappTokenDatabaseInfo ? static_cast<const chre::fbs::NanoappTokenDatabaseInfo *>(message()) : nullptr;
6695   }
6696   const chre::fbs::MessageDeliveryStatus *message_as_MessageDeliveryStatus() const {
6697     return message_type() == chre::fbs::ChreMessage::MessageDeliveryStatus ? static_cast<const chre::fbs::MessageDeliveryStatus *>(message()) : nullptr;
6698   }
6699   const chre::fbs::BtSocketOpen *message_as_BtSocketOpen() const {
6700     return message_type() == chre::fbs::ChreMessage::BtSocketOpen ? static_cast<const chre::fbs::BtSocketOpen *>(message()) : nullptr;
6701   }
6702   const chre::fbs::BtSocketOpenResponse *message_as_BtSocketOpenResponse() const {
6703     return message_type() == chre::fbs::ChreMessage::BtSocketOpenResponse ? static_cast<const chre::fbs::BtSocketOpenResponse *>(message()) : nullptr;
6704   }
6705   const chre::fbs::BtSocketClose *message_as_BtSocketClose() const {
6706     return message_type() == chre::fbs::ChreMessage::BtSocketClose ? static_cast<const chre::fbs::BtSocketClose *>(message()) : nullptr;
6707   }
6708   const chre::fbs::BtSocketCloseResponse *message_as_BtSocketCloseResponse() const {
6709     return message_type() == chre::fbs::ChreMessage::BtSocketCloseResponse ? static_cast<const chre::fbs::BtSocketCloseResponse *>(message()) : nullptr;
6710   }
6711   const chre::fbs::GetMessageHubsAndEndpointsRequest *message_as_GetMessageHubsAndEndpointsRequest() const {
6712     return message_type() == chre::fbs::ChreMessage::GetMessageHubsAndEndpointsRequest ? static_cast<const chre::fbs::GetMessageHubsAndEndpointsRequest *>(message()) : nullptr;
6713   }
6714   const chre::fbs::GetMessageHubsAndEndpointsResponse *message_as_GetMessageHubsAndEndpointsResponse() const {
6715     return message_type() == chre::fbs::ChreMessage::GetMessageHubsAndEndpointsResponse ? static_cast<const chre::fbs::GetMessageHubsAndEndpointsResponse *>(message()) : nullptr;
6716   }
6717   const chre::fbs::RegisterMessageHub *message_as_RegisterMessageHub() const {
6718     return message_type() == chre::fbs::ChreMessage::RegisterMessageHub ? static_cast<const chre::fbs::RegisterMessageHub *>(message()) : nullptr;
6719   }
6720   const chre::fbs::UnregisterMessageHub *message_as_UnregisterMessageHub() const {
6721     return message_type() == chre::fbs::ChreMessage::UnregisterMessageHub ? static_cast<const chre::fbs::UnregisterMessageHub *>(message()) : nullptr;
6722   }
6723   const chre::fbs::RegisterEndpoint *message_as_RegisterEndpoint() const {
6724     return message_type() == chre::fbs::ChreMessage::RegisterEndpoint ? static_cast<const chre::fbs::RegisterEndpoint *>(message()) : nullptr;
6725   }
6726   const chre::fbs::UnregisterEndpoint *message_as_UnregisterEndpoint() const {
6727     return message_type() == chre::fbs::ChreMessage::UnregisterEndpoint ? static_cast<const chre::fbs::UnregisterEndpoint *>(message()) : nullptr;
6728   }
6729   const chre::fbs::OpenEndpointSessionRequest *message_as_OpenEndpointSessionRequest() const {
6730     return message_type() == chre::fbs::ChreMessage::OpenEndpointSessionRequest ? static_cast<const chre::fbs::OpenEndpointSessionRequest *>(message()) : nullptr;
6731   }
6732   const chre::fbs::EndpointSessionOpened *message_as_EndpointSessionOpened() const {
6733     return message_type() == chre::fbs::ChreMessage::EndpointSessionOpened ? static_cast<const chre::fbs::EndpointSessionOpened *>(message()) : nullptr;
6734   }
6735   const chre::fbs::EndpointSessionClosed *message_as_EndpointSessionClosed() const {
6736     return message_type() == chre::fbs::ChreMessage::EndpointSessionClosed ? static_cast<const chre::fbs::EndpointSessionClosed *>(message()) : nullptr;
6737   }
6738   const chre::fbs::EndpointSessionMessage *message_as_EndpointSessionMessage() const {
6739     return message_type() == chre::fbs::ChreMessage::EndpointSessionMessage ? static_cast<const chre::fbs::EndpointSessionMessage *>(message()) : nullptr;
6740   }
6741   const chre::fbs::EndpointSessionMessageDeliveryStatus *message_as_EndpointSessionMessageDeliveryStatus() const {
6742     return message_type() == chre::fbs::ChreMessage::EndpointSessionMessageDeliveryStatus ? static_cast<const chre::fbs::EndpointSessionMessageDeliveryStatus *>(message()) : nullptr;
6743   }
6744   void *mutable_message() {
6745     return GetPointer<void *>(VT_MESSAGE);
6746   }
6747   /// The originating or destination client ID on the host side, used to direct
6748   /// responses only to the client that sent the request. Although initially
6749   /// populated by the requesting client, this is enforced to be the correct
6750   /// value by the entity guarding access to CHRE.
6751   /// This is wrapped in a struct to ensure that it is always included when
6752   /// encoding the message, so it can be mutated by the host daemon.
6753   const chre::fbs::HostAddress *host_addr() const {
6754     return GetStruct<const chre::fbs::HostAddress *>(VT_HOST_ADDR);
6755   }
6756   chre::fbs::HostAddress *mutable_host_addr() {
6757     return GetStruct<chre::fbs::HostAddress *>(VT_HOST_ADDR);
6758   }
6759   bool Verify(flatbuffers::Verifier &verifier) const {
6760     return VerifyTableStart(verifier) &&
6761            VerifyField<uint8_t>(verifier, VT_MESSAGE_TYPE) &&
6762            VerifyOffsetRequired(verifier, VT_MESSAGE) &&
6763            VerifyChreMessage(verifier, message(), message_type()) &&
6764            VerifyFieldRequired<chre::fbs::HostAddress>(verifier, VT_HOST_ADDR) &&
6765            verifier.EndTable();
6766   }
6767   MessageContainerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6768   void UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
6769   static flatbuffers::Offset<MessageContainer> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
6770 };
6771 
6772 template<> inline const chre::fbs::NanoappMessage *MessageContainer::message_as<chre::fbs::NanoappMessage>() const {
6773   return message_as_NanoappMessage();
6774 }
6775 
6776 template<> inline const chre::fbs::HubInfoRequest *MessageContainer::message_as<chre::fbs::HubInfoRequest>() const {
6777   return message_as_HubInfoRequest();
6778 }
6779 
6780 template<> inline const chre::fbs::HubInfoResponse *MessageContainer::message_as<chre::fbs::HubInfoResponse>() const {
6781   return message_as_HubInfoResponse();
6782 }
6783 
6784 template<> inline const chre::fbs::NanoappListRequest *MessageContainer::message_as<chre::fbs::NanoappListRequest>() const {
6785   return message_as_NanoappListRequest();
6786 }
6787 
6788 template<> inline const chre::fbs::NanoappListResponse *MessageContainer::message_as<chre::fbs::NanoappListResponse>() const {
6789   return message_as_NanoappListResponse();
6790 }
6791 
6792 template<> inline const chre::fbs::LoadNanoappRequest *MessageContainer::message_as<chre::fbs::LoadNanoappRequest>() const {
6793   return message_as_LoadNanoappRequest();
6794 }
6795 
6796 template<> inline const chre::fbs::LoadNanoappResponse *MessageContainer::message_as<chre::fbs::LoadNanoappResponse>() const {
6797   return message_as_LoadNanoappResponse();
6798 }
6799 
6800 template<> inline const chre::fbs::UnloadNanoappRequest *MessageContainer::message_as<chre::fbs::UnloadNanoappRequest>() const {
6801   return message_as_UnloadNanoappRequest();
6802 }
6803 
6804 template<> inline const chre::fbs::UnloadNanoappResponse *MessageContainer::message_as<chre::fbs::UnloadNanoappResponse>() const {
6805   return message_as_UnloadNanoappResponse();
6806 }
6807 
6808 template<> inline const chre::fbs::LogMessage *MessageContainer::message_as<chre::fbs::LogMessage>() const {
6809   return message_as_LogMessage();
6810 }
6811 
6812 template<> inline const chre::fbs::TimeSyncMessage *MessageContainer::message_as<chre::fbs::TimeSyncMessage>() const {
6813   return message_as_TimeSyncMessage();
6814 }
6815 
6816 template<> inline const chre::fbs::DebugDumpRequest *MessageContainer::message_as<chre::fbs::DebugDumpRequest>() const {
6817   return message_as_DebugDumpRequest();
6818 }
6819 
6820 template<> inline const chre::fbs::DebugDumpData *MessageContainer::message_as<chre::fbs::DebugDumpData>() const {
6821   return message_as_DebugDumpData();
6822 }
6823 
6824 template<> inline const chre::fbs::DebugDumpResponse *MessageContainer::message_as<chre::fbs::DebugDumpResponse>() const {
6825   return message_as_DebugDumpResponse();
6826 }
6827 
6828 template<> inline const chre::fbs::TimeSyncRequest *MessageContainer::message_as<chre::fbs::TimeSyncRequest>() const {
6829   return message_as_TimeSyncRequest();
6830 }
6831 
6832 template<> inline const chre::fbs::LowPowerMicAccessRequest *MessageContainer::message_as<chre::fbs::LowPowerMicAccessRequest>() const {
6833   return message_as_LowPowerMicAccessRequest();
6834 }
6835 
6836 template<> inline const chre::fbs::LowPowerMicAccessRelease *MessageContainer::message_as<chre::fbs::LowPowerMicAccessRelease>() const {
6837   return message_as_LowPowerMicAccessRelease();
6838 }
6839 
6840 template<> inline const chre::fbs::SettingChangeMessage *MessageContainer::message_as<chre::fbs::SettingChangeMessage>() const {
6841   return message_as_SettingChangeMessage();
6842 }
6843 
6844 template<> inline const chre::fbs::LogMessageV2 *MessageContainer::message_as<chre::fbs::LogMessageV2>() const {
6845   return message_as_LogMessageV2();
6846 }
6847 
6848 template<> inline const chre::fbs::SelfTestRequest *MessageContainer::message_as<chre::fbs::SelfTestRequest>() const {
6849   return message_as_SelfTestRequest();
6850 }
6851 
6852 template<> inline const chre::fbs::SelfTestResponse *MessageContainer::message_as<chre::fbs::SelfTestResponse>() const {
6853   return message_as_SelfTestResponse();
6854 }
6855 
6856 template<> inline const chre::fbs::HostEndpointConnected *MessageContainer::message_as<chre::fbs::HostEndpointConnected>() const {
6857   return message_as_HostEndpointConnected();
6858 }
6859 
6860 template<> inline const chre::fbs::HostEndpointDisconnected *MessageContainer::message_as<chre::fbs::HostEndpointDisconnected>() const {
6861   return message_as_HostEndpointDisconnected();
6862 }
6863 
6864 template<> inline const chre::fbs::MetricLog *MessageContainer::message_as<chre::fbs::MetricLog>() const {
6865   return message_as_MetricLog();
6866 }
6867 
6868 template<> inline const chre::fbs::BatchedMetricLog *MessageContainer::message_as<chre::fbs::BatchedMetricLog>() const {
6869   return message_as_BatchedMetricLog();
6870 }
6871 
6872 template<> inline const chre::fbs::NanConfigurationRequest *MessageContainer::message_as<chre::fbs::NanConfigurationRequest>() const {
6873   return message_as_NanConfigurationRequest();
6874 }
6875 
6876 template<> inline const chre::fbs::NanConfigurationUpdate *MessageContainer::message_as<chre::fbs::NanConfigurationUpdate>() const {
6877   return message_as_NanConfigurationUpdate();
6878 }
6879 
6880 template<> inline const chre::fbs::DebugConfiguration *MessageContainer::message_as<chre::fbs::DebugConfiguration>() const {
6881   return message_as_DebugConfiguration();
6882 }
6883 
6884 template<> inline const chre::fbs::PulseRequest *MessageContainer::message_as<chre::fbs::PulseRequest>() const {
6885   return message_as_PulseRequest();
6886 }
6887 
6888 template<> inline const chre::fbs::PulseResponse *MessageContainer::message_as<chre::fbs::PulseResponse>() const {
6889   return message_as_PulseResponse();
6890 }
6891 
6892 template<> inline const chre::fbs::NanoappTokenDatabaseInfo *MessageContainer::message_as<chre::fbs::NanoappTokenDatabaseInfo>() const {
6893   return message_as_NanoappTokenDatabaseInfo();
6894 }
6895 
6896 template<> inline const chre::fbs::MessageDeliveryStatus *MessageContainer::message_as<chre::fbs::MessageDeliveryStatus>() const {
6897   return message_as_MessageDeliveryStatus();
6898 }
6899 
6900 template<> inline const chre::fbs::BtSocketOpen *MessageContainer::message_as<chre::fbs::BtSocketOpen>() const {
6901   return message_as_BtSocketOpen();
6902 }
6903 
6904 template<> inline const chre::fbs::BtSocketOpenResponse *MessageContainer::message_as<chre::fbs::BtSocketOpenResponse>() const {
6905   return message_as_BtSocketOpenResponse();
6906 }
6907 
6908 template<> inline const chre::fbs::BtSocketClose *MessageContainer::message_as<chre::fbs::BtSocketClose>() const {
6909   return message_as_BtSocketClose();
6910 }
6911 
6912 template<> inline const chre::fbs::BtSocketCloseResponse *MessageContainer::message_as<chre::fbs::BtSocketCloseResponse>() const {
6913   return message_as_BtSocketCloseResponse();
6914 }
6915 
6916 template<> inline const chre::fbs::GetMessageHubsAndEndpointsRequest *MessageContainer::message_as<chre::fbs::GetMessageHubsAndEndpointsRequest>() const {
6917   return message_as_GetMessageHubsAndEndpointsRequest();
6918 }
6919 
6920 template<> inline const chre::fbs::GetMessageHubsAndEndpointsResponse *MessageContainer::message_as<chre::fbs::GetMessageHubsAndEndpointsResponse>() const {
6921   return message_as_GetMessageHubsAndEndpointsResponse();
6922 }
6923 
6924 template<> inline const chre::fbs::RegisterMessageHub *MessageContainer::message_as<chre::fbs::RegisterMessageHub>() const {
6925   return message_as_RegisterMessageHub();
6926 }
6927 
6928 template<> inline const chre::fbs::UnregisterMessageHub *MessageContainer::message_as<chre::fbs::UnregisterMessageHub>() const {
6929   return message_as_UnregisterMessageHub();
6930 }
6931 
6932 template<> inline const chre::fbs::RegisterEndpoint *MessageContainer::message_as<chre::fbs::RegisterEndpoint>() const {
6933   return message_as_RegisterEndpoint();
6934 }
6935 
6936 template<> inline const chre::fbs::UnregisterEndpoint *MessageContainer::message_as<chre::fbs::UnregisterEndpoint>() const {
6937   return message_as_UnregisterEndpoint();
6938 }
6939 
6940 template<> inline const chre::fbs::OpenEndpointSessionRequest *MessageContainer::message_as<chre::fbs::OpenEndpointSessionRequest>() const {
6941   return message_as_OpenEndpointSessionRequest();
6942 }
6943 
6944 template<> inline const chre::fbs::EndpointSessionOpened *MessageContainer::message_as<chre::fbs::EndpointSessionOpened>() const {
6945   return message_as_EndpointSessionOpened();
6946 }
6947 
6948 template<> inline const chre::fbs::EndpointSessionClosed *MessageContainer::message_as<chre::fbs::EndpointSessionClosed>() const {
6949   return message_as_EndpointSessionClosed();
6950 }
6951 
6952 template<> inline const chre::fbs::EndpointSessionMessage *MessageContainer::message_as<chre::fbs::EndpointSessionMessage>() const {
6953   return message_as_EndpointSessionMessage();
6954 }
6955 
6956 template<> inline const chre::fbs::EndpointSessionMessageDeliveryStatus *MessageContainer::message_as<chre::fbs::EndpointSessionMessageDeliveryStatus>() const {
6957   return message_as_EndpointSessionMessageDeliveryStatus();
6958 }
6959 
6960 struct MessageContainerBuilder {
6961   typedef MessageContainer Table;
6962   flatbuffers::FlatBufferBuilder &fbb_;
6963   flatbuffers::uoffset_t start_;
6964   void add_message_type(chre::fbs::ChreMessage message_type) {
6965     fbb_.AddElement<uint8_t>(MessageContainer::VT_MESSAGE_TYPE, static_cast<uint8_t>(message_type), 0);
6966   }
6967   void add_message(flatbuffers::Offset<void> message) {
6968     fbb_.AddOffset(MessageContainer::VT_MESSAGE, message);
6969   }
6970   void add_host_addr(const chre::fbs::HostAddress *host_addr) {
6971     fbb_.AddStruct(MessageContainer::VT_HOST_ADDR, host_addr);
6972   }
6973   explicit MessageContainerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
6974         : fbb_(_fbb) {
6975     start_ = fbb_.StartTable();
6976   }
6977   MessageContainerBuilder &operator=(const MessageContainerBuilder &);
6978   flatbuffers::Offset<MessageContainer> Finish() {
6979     const auto end = fbb_.EndTable(start_);
6980     auto o = flatbuffers::Offset<MessageContainer>(end);
6981     fbb_.Required(o, MessageContainer::VT_MESSAGE);
6982     fbb_.Required(o, MessageContainer::VT_HOST_ADDR);
6983     return o;
6984   }
6985 };
6986 
6987 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(
6988     flatbuffers::FlatBufferBuilder &_fbb,
6989     chre::fbs::ChreMessage message_type = chre::fbs::ChreMessage::NONE,
6990     flatbuffers::Offset<void> message = 0,
6991     const chre::fbs::HostAddress *host_addr = 0) {
6992   MessageContainerBuilder builder_(_fbb);
6993   builder_.add_host_addr(host_addr);
6994   builder_.add_message(message);
6995   builder_.add_message_type(message_type);
6996   return builder_.Finish();
6997 }
6998 
6999 flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
7000 
7001 inline NanoappMessageT *NanoappMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7002   std::unique_ptr<chre::fbs::NanoappMessageT> _o = std::unique_ptr<chre::fbs::NanoappMessageT>(new NanoappMessageT());
7003   UnPackTo(_o.get(), _resolver);
7004   return _o.release();
7005 }
7006 
7007 inline void NanoappMessage::UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7008   (void)_o;
7009   (void)_resolver;
7010   { auto _e = app_id(); _o->app_id = _e; }
7011   { auto _e = message_type(); _o->message_type = _e; }
7012   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
7013   { auto _e = message(); if (_e) { _o->message.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->message[_i] = _e->Get(_i); } } }
7014   { auto _e = message_permissions(); _o->message_permissions = _e; }
7015   { auto _e = permissions(); _o->permissions = _e; }
7016   { auto _e = woke_host(); _o->woke_host = _e; }
7017   { auto _e = is_reliable(); _o->is_reliable = _e; }
7018   { auto _e = message_sequence_number(); _o->message_sequence_number = _e; }
7019 }
7020 
7021 inline flatbuffers::Offset<NanoappMessage> NanoappMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7022   return CreateNanoappMessage(_fbb, _o, _rehasher);
7023 }
7024 
7025 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7026   (void)_rehasher;
7027   (void)_o;
7028   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7029   auto _app_id = _o->app_id;
7030   auto _message_type = _o->message_type;
7031   auto _host_endpoint = _o->host_endpoint;
7032   auto _message = _fbb.CreateVector(_o->message);
7033   auto _message_permissions = _o->message_permissions;
7034   auto _permissions = _o->permissions;
7035   auto _woke_host = _o->woke_host;
7036   auto _is_reliable = _o->is_reliable;
7037   auto _message_sequence_number = _o->message_sequence_number;
7038   return chre::fbs::CreateNanoappMessage(
7039       _fbb,
7040       _app_id,
7041       _message_type,
7042       _host_endpoint,
7043       _message,
7044       _message_permissions,
7045       _permissions,
7046       _woke_host,
7047       _is_reliable,
7048       _message_sequence_number);
7049 }
7050 
7051 inline MessageDeliveryStatusT *MessageDeliveryStatus::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7052   std::unique_ptr<chre::fbs::MessageDeliveryStatusT> _o = std::unique_ptr<chre::fbs::MessageDeliveryStatusT>(new MessageDeliveryStatusT());
7053   UnPackTo(_o.get(), _resolver);
7054   return _o.release();
7055 }
7056 
7057 inline void MessageDeliveryStatus::UnPackTo(MessageDeliveryStatusT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7058   (void)_o;
7059   (void)_resolver;
7060   { auto _e = message_sequence_number(); _o->message_sequence_number = _e; }
7061   { auto _e = error_code(); _o->error_code = _e; }
7062 }
7063 
7064 inline flatbuffers::Offset<MessageDeliveryStatus> MessageDeliveryStatus::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageDeliveryStatusT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7065   return CreateMessageDeliveryStatus(_fbb, _o, _rehasher);
7066 }
7067 
7068 inline flatbuffers::Offset<MessageDeliveryStatus> CreateMessageDeliveryStatus(flatbuffers::FlatBufferBuilder &_fbb, const MessageDeliveryStatusT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7069   (void)_rehasher;
7070   (void)_o;
7071   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MessageDeliveryStatusT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7072   auto _message_sequence_number = _o->message_sequence_number;
7073   auto _error_code = _o->error_code;
7074   return chre::fbs::CreateMessageDeliveryStatus(
7075       _fbb,
7076       _message_sequence_number,
7077       _error_code);
7078 }
7079 
7080 inline HubInfoRequestT *HubInfoRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7081   std::unique_ptr<chre::fbs::HubInfoRequestT> _o = std::unique_ptr<chre::fbs::HubInfoRequestT>(new HubInfoRequestT());
7082   UnPackTo(_o.get(), _resolver);
7083   return _o.release();
7084 }
7085 
7086 inline void HubInfoRequest::UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7087   (void)_o;
7088   (void)_resolver;
7089 }
7090 
7091 inline flatbuffers::Offset<HubInfoRequest> HubInfoRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7092   return CreateHubInfoRequest(_fbb, _o, _rehasher);
7093 }
7094 
7095 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7096   (void)_rehasher;
7097   (void)_o;
7098   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HubInfoRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7099   return chre::fbs::CreateHubInfoRequest(
7100       _fbb);
7101 }
7102 
7103 inline HubInfoResponseT *HubInfoResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7104   std::unique_ptr<chre::fbs::HubInfoResponseT> _o = std::unique_ptr<chre::fbs::HubInfoResponseT>(new HubInfoResponseT());
7105   UnPackTo(_o.get(), _resolver);
7106   return _o.release();
7107 }
7108 
7109 inline void HubInfoResponse::UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7110   (void)_o;
7111   (void)_resolver;
7112   { auto _e = name(); if (_e) { _o->name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->name[_i] = _e->Get(_i); } } }
7113   { auto _e = vendor(); if (_e) { _o->vendor.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vendor[_i] = _e->Get(_i); } } }
7114   { auto _e = toolchain(); if (_e) { _o->toolchain.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->toolchain[_i] = _e->Get(_i); } } }
7115   { auto _e = platform_version(); _o->platform_version = _e; }
7116   { auto _e = toolchain_version(); _o->toolchain_version = _e; }
7117   { auto _e = peak_mips(); _o->peak_mips = _e; }
7118   { auto _e = stopped_power(); _o->stopped_power = _e; }
7119   { auto _e = sleep_power(); _o->sleep_power = _e; }
7120   { auto _e = peak_power(); _o->peak_power = _e; }
7121   { auto _e = max_msg_len(); _o->max_msg_len = _e; }
7122   { auto _e = platform_id(); _o->platform_id = _e; }
7123   { auto _e = chre_platform_version(); _o->chre_platform_version = _e; }
7124   { auto _e = supports_reliable_messages(); _o->supports_reliable_messages = _e; }
7125 }
7126 
7127 inline flatbuffers::Offset<HubInfoResponse> HubInfoResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7128   return CreateHubInfoResponse(_fbb, _o, _rehasher);
7129 }
7130 
7131 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7132   (void)_rehasher;
7133   (void)_o;
7134   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HubInfoResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7135   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
7136   auto _vendor = _o->vendor.size() ? _fbb.CreateVector(_o->vendor) : 0;
7137   auto _toolchain = _o->toolchain.size() ? _fbb.CreateVector(_o->toolchain) : 0;
7138   auto _platform_version = _o->platform_version;
7139   auto _toolchain_version = _o->toolchain_version;
7140   auto _peak_mips = _o->peak_mips;
7141   auto _stopped_power = _o->stopped_power;
7142   auto _sleep_power = _o->sleep_power;
7143   auto _peak_power = _o->peak_power;
7144   auto _max_msg_len = _o->max_msg_len;
7145   auto _platform_id = _o->platform_id;
7146   auto _chre_platform_version = _o->chre_platform_version;
7147   auto _supports_reliable_messages = _o->supports_reliable_messages;
7148   return chre::fbs::CreateHubInfoResponse(
7149       _fbb,
7150       _name,
7151       _vendor,
7152       _toolchain,
7153       _platform_version,
7154       _toolchain_version,
7155       _peak_mips,
7156       _stopped_power,
7157       _sleep_power,
7158       _peak_power,
7159       _max_msg_len,
7160       _platform_id,
7161       _chre_platform_version,
7162       _supports_reliable_messages);
7163 }
7164 
7165 inline NanoappListRequestT *NanoappListRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7166   std::unique_ptr<chre::fbs::NanoappListRequestT> _o = std::unique_ptr<chre::fbs::NanoappListRequestT>(new NanoappListRequestT());
7167   UnPackTo(_o.get(), _resolver);
7168   return _o.release();
7169 }
7170 
7171 inline void NanoappListRequest::UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7172   (void)_o;
7173   (void)_resolver;
7174 }
7175 
7176 inline flatbuffers::Offset<NanoappListRequest> NanoappListRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7177   return CreateNanoappListRequest(_fbb, _o, _rehasher);
7178 }
7179 
7180 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7181   (void)_rehasher;
7182   (void)_o;
7183   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7184   return chre::fbs::CreateNanoappListRequest(
7185       _fbb);
7186 }
7187 
7188 inline NanoappRpcServiceT *NanoappRpcService::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7189   std::unique_ptr<chre::fbs::NanoappRpcServiceT> _o = std::unique_ptr<chre::fbs::NanoappRpcServiceT>(new NanoappRpcServiceT());
7190   UnPackTo(_o.get(), _resolver);
7191   return _o.release();
7192 }
7193 
7194 inline void NanoappRpcService::UnPackTo(NanoappRpcServiceT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7195   (void)_o;
7196   (void)_resolver;
7197   { auto _e = id(); _o->id = _e; }
7198   { auto _e = version(); _o->version = _e; }
7199 }
7200 
7201 inline flatbuffers::Offset<NanoappRpcService> NanoappRpcService::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7202   return CreateNanoappRpcService(_fbb, _o, _rehasher);
7203 }
7204 
7205 inline flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7206   (void)_rehasher;
7207   (void)_o;
7208   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappRpcServiceT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7209   auto _id = _o->id;
7210   auto _version = _o->version;
7211   return chre::fbs::CreateNanoappRpcService(
7212       _fbb,
7213       _id,
7214       _version);
7215 }
7216 
7217 inline NanoappListEntryT *NanoappListEntry::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7218   std::unique_ptr<chre::fbs::NanoappListEntryT> _o = std::unique_ptr<chre::fbs::NanoappListEntryT>(new NanoappListEntryT());
7219   UnPackTo(_o.get(), _resolver);
7220   return _o.release();
7221 }
7222 
7223 inline void NanoappListEntry::UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7224   (void)_o;
7225   (void)_resolver;
7226   { auto _e = app_id(); _o->app_id = _e; }
7227   { auto _e = version(); _o->version = _e; }
7228   { auto _e = enabled(); _o->enabled = _e; }
7229   { auto _e = is_system(); _o->is_system = _e; }
7230   { auto _e = permissions(); _o->permissions = _e; }
7231   { auto _e = rpc_services(); if (_e) { _o->rpc_services.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rpc_services[_i] = std::unique_ptr<chre::fbs::NanoappRpcServiceT>(_e->Get(_i)->UnPack(_resolver)); } } }
7232 }
7233 
7234 inline flatbuffers::Offset<NanoappListEntry> NanoappListEntry::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7235   return CreateNanoappListEntry(_fbb, _o, _rehasher);
7236 }
7237 
7238 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7239   (void)_rehasher;
7240   (void)_o;
7241   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListEntryT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7242   auto _app_id = _o->app_id;
7243   auto _version = _o->version;
7244   auto _enabled = _o->enabled;
7245   auto _is_system = _o->is_system;
7246   auto _permissions = _o->permissions;
7247   auto _rpc_services = _o->rpc_services.size() ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> (_o->rpc_services.size(), [](size_t i, _VectorArgs *__va) { return CreateNanoappRpcService(*__va->__fbb, __va->__o->rpc_services[i].get(), __va->__rehasher); }, &_va ) : 0;
7248   return chre::fbs::CreateNanoappListEntry(
7249       _fbb,
7250       _app_id,
7251       _version,
7252       _enabled,
7253       _is_system,
7254       _permissions,
7255       _rpc_services);
7256 }
7257 
7258 inline NanoappListResponseT *NanoappListResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7259   std::unique_ptr<chre::fbs::NanoappListResponseT> _o = std::unique_ptr<chre::fbs::NanoappListResponseT>(new NanoappListResponseT());
7260   UnPackTo(_o.get(), _resolver);
7261   return _o.release();
7262 }
7263 
7264 inline void NanoappListResponse::UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7265   (void)_o;
7266   (void)_resolver;
7267   { auto _e = nanoapps(); if (_e) { _o->nanoapps.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->nanoapps[_i] = std::unique_ptr<chre::fbs::NanoappListEntryT>(_e->Get(_i)->UnPack(_resolver)); } } }
7268 }
7269 
7270 inline flatbuffers::Offset<NanoappListResponse> NanoappListResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7271   return CreateNanoappListResponse(_fbb, _o, _rehasher);
7272 }
7273 
7274 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7275   (void)_rehasher;
7276   (void)_o;
7277   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7278   auto _nanoapps = _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> (_o->nanoapps.size(), [](size_t i, _VectorArgs *__va) { return CreateNanoappListEntry(*__va->__fbb, __va->__o->nanoapps[i].get(), __va->__rehasher); }, &_va );
7279   return chre::fbs::CreateNanoappListResponse(
7280       _fbb,
7281       _nanoapps);
7282 }
7283 
7284 inline LoadNanoappRequestT *LoadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7285   std::unique_ptr<chre::fbs::LoadNanoappRequestT> _o = std::unique_ptr<chre::fbs::LoadNanoappRequestT>(new LoadNanoappRequestT());
7286   UnPackTo(_o.get(), _resolver);
7287   return _o.release();
7288 }
7289 
7290 inline void LoadNanoappRequest::UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7291   (void)_o;
7292   (void)_resolver;
7293   { auto _e = transaction_id(); _o->transaction_id = _e; }
7294   { auto _e = app_id(); _o->app_id = _e; }
7295   { auto _e = app_version(); _o->app_version = _e; }
7296   { auto _e = target_api_version(); _o->target_api_version = _e; }
7297   { auto _e = app_binary(); if (_e) { _o->app_binary.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->app_binary[_i] = _e->Get(_i); } } }
7298   { auto _e = fragment_id(); _o->fragment_id = _e; }
7299   { auto _e = total_app_size(); _o->total_app_size = _e; }
7300   { auto _e = app_binary_file_name(); if (_e) { _o->app_binary_file_name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->app_binary_file_name[_i] = _e->Get(_i); } } }
7301   { auto _e = app_flags(); _o->app_flags = _e; }
7302   { auto _e = respond_before_start(); _o->respond_before_start = _e; }
7303 }
7304 
7305 inline flatbuffers::Offset<LoadNanoappRequest> LoadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7306   return CreateLoadNanoappRequest(_fbb, _o, _rehasher);
7307 }
7308 
7309 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7310   (void)_rehasher;
7311   (void)_o;
7312   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LoadNanoappRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7313   auto _transaction_id = _o->transaction_id;
7314   auto _app_id = _o->app_id;
7315   auto _app_version = _o->app_version;
7316   auto _target_api_version = _o->target_api_version;
7317   auto _app_binary = _fbb.CreateVector(_o->app_binary);
7318   auto _fragment_id = _o->fragment_id;
7319   auto _total_app_size = _o->total_app_size;
7320   auto _app_binary_file_name = _o->app_binary_file_name.size() ? _fbb.CreateVector(_o->app_binary_file_name) : 0;
7321   auto _app_flags = _o->app_flags;
7322   auto _respond_before_start = _o->respond_before_start;
7323   return chre::fbs::CreateLoadNanoappRequest(
7324       _fbb,
7325       _transaction_id,
7326       _app_id,
7327       _app_version,
7328       _target_api_version,
7329       _app_binary,
7330       _fragment_id,
7331       _total_app_size,
7332       _app_binary_file_name,
7333       _app_flags,
7334       _respond_before_start);
7335 }
7336 
7337 inline LoadNanoappResponseT *LoadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7338   std::unique_ptr<chre::fbs::LoadNanoappResponseT> _o = std::unique_ptr<chre::fbs::LoadNanoappResponseT>(new LoadNanoappResponseT());
7339   UnPackTo(_o.get(), _resolver);
7340   return _o.release();
7341 }
7342 
7343 inline void LoadNanoappResponse::UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7344   (void)_o;
7345   (void)_resolver;
7346   { auto _e = transaction_id(); _o->transaction_id = _e; }
7347   { auto _e = success(); _o->success = _e; }
7348   { auto _e = fragment_id(); _o->fragment_id = _e; }
7349 }
7350 
7351 inline flatbuffers::Offset<LoadNanoappResponse> LoadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7352   return CreateLoadNanoappResponse(_fbb, _o, _rehasher);
7353 }
7354 
7355 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7356   (void)_rehasher;
7357   (void)_o;
7358   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LoadNanoappResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7359   auto _transaction_id = _o->transaction_id;
7360   auto _success = _o->success;
7361   auto _fragment_id = _o->fragment_id;
7362   return chre::fbs::CreateLoadNanoappResponse(
7363       _fbb,
7364       _transaction_id,
7365       _success,
7366       _fragment_id);
7367 }
7368 
7369 inline NanoappTokenDatabaseInfoT *NanoappTokenDatabaseInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7370   std::unique_ptr<chre::fbs::NanoappTokenDatabaseInfoT> _o = std::unique_ptr<chre::fbs::NanoappTokenDatabaseInfoT>(new NanoappTokenDatabaseInfoT());
7371   UnPackTo(_o.get(), _resolver);
7372   return _o.release();
7373 }
7374 
7375 inline void NanoappTokenDatabaseInfo::UnPackTo(NanoappTokenDatabaseInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7376   (void)_o;
7377   (void)_resolver;
7378   { auto _e = instance_id(); _o->instance_id = _e; }
7379   { auto _e = app_id(); _o->app_id = _e; }
7380   { auto _e = database_offset_bytes(); _o->database_offset_bytes = _e; }
7381   { auto _e = database_size_bytes(); _o->database_size_bytes = _e; }
7382 }
7383 
7384 inline flatbuffers::Offset<NanoappTokenDatabaseInfo> NanoappTokenDatabaseInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappTokenDatabaseInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7385   return CreateNanoappTokenDatabaseInfo(_fbb, _o, _rehasher);
7386 }
7387 
7388 inline flatbuffers::Offset<NanoappTokenDatabaseInfo> CreateNanoappTokenDatabaseInfo(flatbuffers::FlatBufferBuilder &_fbb, const NanoappTokenDatabaseInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7389   (void)_rehasher;
7390   (void)_o;
7391   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappTokenDatabaseInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7392   auto _instance_id = _o->instance_id;
7393   auto _app_id = _o->app_id;
7394   auto _database_offset_bytes = _o->database_offset_bytes;
7395   auto _database_size_bytes = _o->database_size_bytes;
7396   return chre::fbs::CreateNanoappTokenDatabaseInfo(
7397       _fbb,
7398       _instance_id,
7399       _app_id,
7400       _database_offset_bytes,
7401       _database_size_bytes);
7402 }
7403 
7404 inline UnloadNanoappRequestT *UnloadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7405   std::unique_ptr<chre::fbs::UnloadNanoappRequestT> _o = std::unique_ptr<chre::fbs::UnloadNanoappRequestT>(new UnloadNanoappRequestT());
7406   UnPackTo(_o.get(), _resolver);
7407   return _o.release();
7408 }
7409 
7410 inline void UnloadNanoappRequest::UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7411   (void)_o;
7412   (void)_resolver;
7413   { auto _e = transaction_id(); _o->transaction_id = _e; }
7414   { auto _e = app_id(); _o->app_id = _e; }
7415   { auto _e = allow_system_nanoapp_unload(); _o->allow_system_nanoapp_unload = _e; }
7416 }
7417 
7418 inline flatbuffers::Offset<UnloadNanoappRequest> UnloadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7419   return CreateUnloadNanoappRequest(_fbb, _o, _rehasher);
7420 }
7421 
7422 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7423   (void)_rehasher;
7424   (void)_o;
7425   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnloadNanoappRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7426   auto _transaction_id = _o->transaction_id;
7427   auto _app_id = _o->app_id;
7428   auto _allow_system_nanoapp_unload = _o->allow_system_nanoapp_unload;
7429   return chre::fbs::CreateUnloadNanoappRequest(
7430       _fbb,
7431       _transaction_id,
7432       _app_id,
7433       _allow_system_nanoapp_unload);
7434 }
7435 
7436 inline UnloadNanoappResponseT *UnloadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7437   std::unique_ptr<chre::fbs::UnloadNanoappResponseT> _o = std::unique_ptr<chre::fbs::UnloadNanoappResponseT>(new UnloadNanoappResponseT());
7438   UnPackTo(_o.get(), _resolver);
7439   return _o.release();
7440 }
7441 
7442 inline void UnloadNanoappResponse::UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7443   (void)_o;
7444   (void)_resolver;
7445   { auto _e = transaction_id(); _o->transaction_id = _e; }
7446   { auto _e = success(); _o->success = _e; }
7447 }
7448 
7449 inline flatbuffers::Offset<UnloadNanoappResponse> UnloadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7450   return CreateUnloadNanoappResponse(_fbb, _o, _rehasher);
7451 }
7452 
7453 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7454   (void)_rehasher;
7455   (void)_o;
7456   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnloadNanoappResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7457   auto _transaction_id = _o->transaction_id;
7458   auto _success = _o->success;
7459   return chre::fbs::CreateUnloadNanoappResponse(
7460       _fbb,
7461       _transaction_id,
7462       _success);
7463 }
7464 
7465 inline LogMessageT *LogMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7466   std::unique_ptr<chre::fbs::LogMessageT> _o = std::unique_ptr<chre::fbs::LogMessageT>(new LogMessageT());
7467   UnPackTo(_o.get(), _resolver);
7468   return _o.release();
7469 }
7470 
7471 inline void LogMessage::UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7472   (void)_o;
7473   (void)_resolver;
7474   { auto _e = buffer(); if (_e) { _o->buffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->buffer[_i] = _e->Get(_i); } } }
7475 }
7476 
7477 inline flatbuffers::Offset<LogMessage> LogMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7478   return CreateLogMessage(_fbb, _o, _rehasher);
7479 }
7480 
7481 inline flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7482   (void)_rehasher;
7483   (void)_o;
7484   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7485   auto _buffer = _o->buffer.size() ? _fbb.CreateVector(_o->buffer) : 0;
7486   return chre::fbs::CreateLogMessage(
7487       _fbb,
7488       _buffer);
7489 }
7490 
7491 inline TimeSyncMessageT *TimeSyncMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7492   std::unique_ptr<chre::fbs::TimeSyncMessageT> _o = std::unique_ptr<chre::fbs::TimeSyncMessageT>(new TimeSyncMessageT());
7493   UnPackTo(_o.get(), _resolver);
7494   return _o.release();
7495 }
7496 
7497 inline void TimeSyncMessage::UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7498   (void)_o;
7499   (void)_resolver;
7500   { auto _e = offset(); _o->offset = _e; }
7501 }
7502 
7503 inline flatbuffers::Offset<TimeSyncMessage> TimeSyncMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7504   return CreateTimeSyncMessage(_fbb, _o, _rehasher);
7505 }
7506 
7507 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7508   (void)_rehasher;
7509   (void)_o;
7510   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TimeSyncMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7511   auto _offset = _o->offset;
7512   return chre::fbs::CreateTimeSyncMessage(
7513       _fbb,
7514       _offset);
7515 }
7516 
7517 inline DebugDumpRequestT *DebugDumpRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7518   std::unique_ptr<chre::fbs::DebugDumpRequestT> _o = std::unique_ptr<chre::fbs::DebugDumpRequestT>(new DebugDumpRequestT());
7519   UnPackTo(_o.get(), _resolver);
7520   return _o.release();
7521 }
7522 
7523 inline void DebugDumpRequest::UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7524   (void)_o;
7525   (void)_resolver;
7526 }
7527 
7528 inline flatbuffers::Offset<DebugDumpRequest> DebugDumpRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7529   return CreateDebugDumpRequest(_fbb, _o, _rehasher);
7530 }
7531 
7532 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7533   (void)_rehasher;
7534   (void)_o;
7535   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7536   return chre::fbs::CreateDebugDumpRequest(
7537       _fbb);
7538 }
7539 
7540 inline DebugDumpDataT *DebugDumpData::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7541   std::unique_ptr<chre::fbs::DebugDumpDataT> _o = std::unique_ptr<chre::fbs::DebugDumpDataT>(new DebugDumpDataT());
7542   UnPackTo(_o.get(), _resolver);
7543   return _o.release();
7544 }
7545 
7546 inline void DebugDumpData::UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7547   (void)_o;
7548   (void)_resolver;
7549   { auto _e = debug_str(); if (_e) { _o->debug_str.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->debug_str[_i] = _e->Get(_i); } } }
7550 }
7551 
7552 inline flatbuffers::Offset<DebugDumpData> DebugDumpData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7553   return CreateDebugDumpData(_fbb, _o, _rehasher);
7554 }
7555 
7556 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7557   (void)_rehasher;
7558   (void)_o;
7559   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7560   auto _debug_str = _o->debug_str.size() ? _fbb.CreateVector(_o->debug_str) : 0;
7561   return chre::fbs::CreateDebugDumpData(
7562       _fbb,
7563       _debug_str);
7564 }
7565 
7566 inline DebugDumpResponseT *DebugDumpResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7567   std::unique_ptr<chre::fbs::DebugDumpResponseT> _o = std::unique_ptr<chre::fbs::DebugDumpResponseT>(new DebugDumpResponseT());
7568   UnPackTo(_o.get(), _resolver);
7569   return _o.release();
7570 }
7571 
7572 inline void DebugDumpResponse::UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7573   (void)_o;
7574   (void)_resolver;
7575   { auto _e = success(); _o->success = _e; }
7576   { auto _e = data_count(); _o->data_count = _e; }
7577 }
7578 
7579 inline flatbuffers::Offset<DebugDumpResponse> DebugDumpResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7580   return CreateDebugDumpResponse(_fbb, _o, _rehasher);
7581 }
7582 
7583 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7584   (void)_rehasher;
7585   (void)_o;
7586   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7587   auto _success = _o->success;
7588   auto _data_count = _o->data_count;
7589   return chre::fbs::CreateDebugDumpResponse(
7590       _fbb,
7591       _success,
7592       _data_count);
7593 }
7594 
7595 inline TimeSyncRequestT *TimeSyncRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7596   std::unique_ptr<chre::fbs::TimeSyncRequestT> _o = std::unique_ptr<chre::fbs::TimeSyncRequestT>(new TimeSyncRequestT());
7597   UnPackTo(_o.get(), _resolver);
7598   return _o.release();
7599 }
7600 
7601 inline void TimeSyncRequest::UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7602   (void)_o;
7603   (void)_resolver;
7604 }
7605 
7606 inline flatbuffers::Offset<TimeSyncRequest> TimeSyncRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7607   return CreateTimeSyncRequest(_fbb, _o, _rehasher);
7608 }
7609 
7610 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7611   (void)_rehasher;
7612   (void)_o;
7613   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TimeSyncRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7614   return chre::fbs::CreateTimeSyncRequest(
7615       _fbb);
7616 }
7617 
7618 inline LowPowerMicAccessRequestT *LowPowerMicAccessRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7619   std::unique_ptr<chre::fbs::LowPowerMicAccessRequestT> _o = std::unique_ptr<chre::fbs::LowPowerMicAccessRequestT>(new LowPowerMicAccessRequestT());
7620   UnPackTo(_o.get(), _resolver);
7621   return _o.release();
7622 }
7623 
7624 inline void LowPowerMicAccessRequest::UnPackTo(LowPowerMicAccessRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7625   (void)_o;
7626   (void)_resolver;
7627 }
7628 
7629 inline flatbuffers::Offset<LowPowerMicAccessRequest> LowPowerMicAccessRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7630   return CreateLowPowerMicAccessRequest(_fbb, _o, _rehasher);
7631 }
7632 
7633 inline flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7634   (void)_rehasher;
7635   (void)_o;
7636   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LowPowerMicAccessRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7637   return chre::fbs::CreateLowPowerMicAccessRequest(
7638       _fbb);
7639 }
7640 
7641 inline LowPowerMicAccessReleaseT *LowPowerMicAccessRelease::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7642   std::unique_ptr<chre::fbs::LowPowerMicAccessReleaseT> _o = std::unique_ptr<chre::fbs::LowPowerMicAccessReleaseT>(new LowPowerMicAccessReleaseT());
7643   UnPackTo(_o.get(), _resolver);
7644   return _o.release();
7645 }
7646 
7647 inline void LowPowerMicAccessRelease::UnPackTo(LowPowerMicAccessReleaseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7648   (void)_o;
7649   (void)_resolver;
7650 }
7651 
7652 inline flatbuffers::Offset<LowPowerMicAccessRelease> LowPowerMicAccessRelease::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7653   return CreateLowPowerMicAccessRelease(_fbb, _o, _rehasher);
7654 }
7655 
7656 inline flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7657   (void)_rehasher;
7658   (void)_o;
7659   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LowPowerMicAccessReleaseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7660   return chre::fbs::CreateLowPowerMicAccessRelease(
7661       _fbb);
7662 }
7663 
7664 inline SettingChangeMessageT *SettingChangeMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7665   std::unique_ptr<chre::fbs::SettingChangeMessageT> _o = std::unique_ptr<chre::fbs::SettingChangeMessageT>(new SettingChangeMessageT());
7666   UnPackTo(_o.get(), _resolver);
7667   return _o.release();
7668 }
7669 
7670 inline void SettingChangeMessage::UnPackTo(SettingChangeMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7671   (void)_o;
7672   (void)_resolver;
7673   { auto _e = setting(); _o->setting = _e; }
7674   { auto _e = state(); _o->state = _e; }
7675 }
7676 
7677 inline flatbuffers::Offset<SettingChangeMessage> SettingChangeMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7678   return CreateSettingChangeMessage(_fbb, _o, _rehasher);
7679 }
7680 
7681 inline flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7682   (void)_rehasher;
7683   (void)_o;
7684   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SettingChangeMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7685   auto _setting = _o->setting;
7686   auto _state = _o->state;
7687   return chre::fbs::CreateSettingChangeMessage(
7688       _fbb,
7689       _setting,
7690       _state);
7691 }
7692 
7693 inline LogMessageV2T *LogMessageV2::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7694   std::unique_ptr<chre::fbs::LogMessageV2T> _o = std::unique_ptr<chre::fbs::LogMessageV2T>(new LogMessageV2T());
7695   UnPackTo(_o.get(), _resolver);
7696   return _o.release();
7697 }
7698 
7699 inline void LogMessageV2::UnPackTo(LogMessageV2T *_o, const flatbuffers::resolver_function_t *_resolver) const {
7700   (void)_o;
7701   (void)_resolver;
7702   { auto _e = buffer(); if (_e) { _o->buffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->buffer[_i] = _e->Get(_i); } } }
7703   { auto _e = num_logs_dropped(); _o->num_logs_dropped = _e; }
7704 }
7705 
7706 inline flatbuffers::Offset<LogMessageV2> LogMessageV2::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7707   return CreateLogMessageV2(_fbb, _o, _rehasher);
7708 }
7709 
7710 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7711   (void)_rehasher;
7712   (void)_o;
7713   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogMessageV2T* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7714   auto _buffer = _o->buffer.size() ? _fbb.CreateVector(_o->buffer) : 0;
7715   auto _num_logs_dropped = _o->num_logs_dropped;
7716   return chre::fbs::CreateLogMessageV2(
7717       _fbb,
7718       _buffer,
7719       _num_logs_dropped);
7720 }
7721 
7722 inline SelfTestRequestT *SelfTestRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7723   std::unique_ptr<chre::fbs::SelfTestRequestT> _o = std::unique_ptr<chre::fbs::SelfTestRequestT>(new SelfTestRequestT());
7724   UnPackTo(_o.get(), _resolver);
7725   return _o.release();
7726 }
7727 
7728 inline void SelfTestRequest::UnPackTo(SelfTestRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7729   (void)_o;
7730   (void)_resolver;
7731 }
7732 
7733 inline flatbuffers::Offset<SelfTestRequest> SelfTestRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7734   return CreateSelfTestRequest(_fbb, _o, _rehasher);
7735 }
7736 
7737 inline flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7738   (void)_rehasher;
7739   (void)_o;
7740   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelfTestRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7741   return chre::fbs::CreateSelfTestRequest(
7742       _fbb);
7743 }
7744 
7745 inline SelfTestResponseT *SelfTestResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7746   std::unique_ptr<chre::fbs::SelfTestResponseT> _o = std::unique_ptr<chre::fbs::SelfTestResponseT>(new SelfTestResponseT());
7747   UnPackTo(_o.get(), _resolver);
7748   return _o.release();
7749 }
7750 
7751 inline void SelfTestResponse::UnPackTo(SelfTestResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7752   (void)_o;
7753   (void)_resolver;
7754   { auto _e = success(); _o->success = _e; }
7755 }
7756 
7757 inline flatbuffers::Offset<SelfTestResponse> SelfTestResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7758   return CreateSelfTestResponse(_fbb, _o, _rehasher);
7759 }
7760 
7761 inline flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7762   (void)_rehasher;
7763   (void)_o;
7764   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelfTestResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7765   auto _success = _o->success;
7766   return chre::fbs::CreateSelfTestResponse(
7767       _fbb,
7768       _success);
7769 }
7770 
7771 inline HostEndpointConnectedT *HostEndpointConnected::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7772   std::unique_ptr<chre::fbs::HostEndpointConnectedT> _o = std::unique_ptr<chre::fbs::HostEndpointConnectedT>(new HostEndpointConnectedT());
7773   UnPackTo(_o.get(), _resolver);
7774   return _o.release();
7775 }
7776 
7777 inline void HostEndpointConnected::UnPackTo(HostEndpointConnectedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7778   (void)_o;
7779   (void)_resolver;
7780   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
7781   { auto _e = type(); _o->type = _e; }
7782   { auto _e = package_name(); if (_e) { _o->package_name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->package_name[_i] = _e->Get(_i); } } }
7783   { auto _e = attribution_tag(); if (_e) { _o->attribution_tag.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->attribution_tag[_i] = _e->Get(_i); } } }
7784 }
7785 
7786 inline flatbuffers::Offset<HostEndpointConnected> HostEndpointConnected::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7787   return CreateHostEndpointConnected(_fbb, _o, _rehasher);
7788 }
7789 
7790 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7791   (void)_rehasher;
7792   (void)_o;
7793   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HostEndpointConnectedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7794   auto _host_endpoint = _o->host_endpoint;
7795   auto _type = _o->type;
7796   auto _package_name = _o->package_name.size() ? _fbb.CreateVector(_o->package_name) : 0;
7797   auto _attribution_tag = _o->attribution_tag.size() ? _fbb.CreateVector(_o->attribution_tag) : 0;
7798   return chre::fbs::CreateHostEndpointConnected(
7799       _fbb,
7800       _host_endpoint,
7801       _type,
7802       _package_name,
7803       _attribution_tag);
7804 }
7805 
7806 inline HostEndpointDisconnectedT *HostEndpointDisconnected::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7807   std::unique_ptr<chre::fbs::HostEndpointDisconnectedT> _o = std::unique_ptr<chre::fbs::HostEndpointDisconnectedT>(new HostEndpointDisconnectedT());
7808   UnPackTo(_o.get(), _resolver);
7809   return _o.release();
7810 }
7811 
7812 inline void HostEndpointDisconnected::UnPackTo(HostEndpointDisconnectedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7813   (void)_o;
7814   (void)_resolver;
7815   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
7816 }
7817 
7818 inline flatbuffers::Offset<HostEndpointDisconnected> HostEndpointDisconnected::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7819   return CreateHostEndpointDisconnected(_fbb, _o, _rehasher);
7820 }
7821 
7822 inline flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7823   (void)_rehasher;
7824   (void)_o;
7825   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HostEndpointDisconnectedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7826   auto _host_endpoint = _o->host_endpoint;
7827   return chre::fbs::CreateHostEndpointDisconnected(
7828       _fbb,
7829       _host_endpoint);
7830 }
7831 
7832 inline MetricLogT *MetricLog::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7833   std::unique_ptr<chre::fbs::MetricLogT> _o = std::unique_ptr<chre::fbs::MetricLogT>(new MetricLogT());
7834   UnPackTo(_o.get(), _resolver);
7835   return _o.release();
7836 }
7837 
7838 inline void MetricLog::UnPackTo(MetricLogT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7839   (void)_o;
7840   (void)_resolver;
7841   { auto _e = id(); _o->id = _e; }
7842   { auto _e = encoded_metric(); if (_e) { _o->encoded_metric.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->encoded_metric[_i] = _e->Get(_i); } } }
7843 }
7844 
7845 inline flatbuffers::Offset<MetricLog> MetricLog::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7846   return CreateMetricLog(_fbb, _o, _rehasher);
7847 }
7848 
7849 inline flatbuffers::Offset<MetricLog> CreateMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7850   (void)_rehasher;
7851   (void)_o;
7852   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MetricLogT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7853   auto _id = _o->id;
7854   auto _encoded_metric = _o->encoded_metric.size() ? _fbb.CreateVector(_o->encoded_metric) : 0;
7855   return chre::fbs::CreateMetricLog(
7856       _fbb,
7857       _id,
7858       _encoded_metric);
7859 }
7860 
7861 inline BatchedMetricLogT *BatchedMetricLog::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7862   std::unique_ptr<chre::fbs::BatchedMetricLogT> _o = std::unique_ptr<chre::fbs::BatchedMetricLogT>(new BatchedMetricLogT());
7863   UnPackTo(_o.get(), _resolver);
7864   return _o.release();
7865 }
7866 
7867 inline void BatchedMetricLog::UnPackTo(BatchedMetricLogT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7868   (void)_o;
7869   (void)_resolver;
7870   { auto _e = metrics(); if (_e) { _o->metrics.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->metrics[_i] = std::unique_ptr<chre::fbs::MetricLogT>(_e->Get(_i)->UnPack(_resolver)); } } }
7871 }
7872 
7873 inline flatbuffers::Offset<BatchedMetricLog> BatchedMetricLog::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7874   return CreateBatchedMetricLog(_fbb, _o, _rehasher);
7875 }
7876 
7877 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7878   (void)_rehasher;
7879   (void)_o;
7880   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BatchedMetricLogT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7881   auto _metrics = _o->metrics.size() ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::MetricLog>> (_o->metrics.size(), [](size_t i, _VectorArgs *__va) { return CreateMetricLog(*__va->__fbb, __va->__o->metrics[i].get(), __va->__rehasher); }, &_va ) : 0;
7882   return chre::fbs::CreateBatchedMetricLog(
7883       _fbb,
7884       _metrics);
7885 }
7886 
7887 inline NanConfigurationRequestT *NanConfigurationRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7888   std::unique_ptr<chre::fbs::NanConfigurationRequestT> _o = std::unique_ptr<chre::fbs::NanConfigurationRequestT>(new NanConfigurationRequestT());
7889   UnPackTo(_o.get(), _resolver);
7890   return _o.release();
7891 }
7892 
7893 inline void NanConfigurationRequest::UnPackTo(NanConfigurationRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7894   (void)_o;
7895   (void)_resolver;
7896   { auto _e = enable(); _o->enable = _e; }
7897 }
7898 
7899 inline flatbuffers::Offset<NanConfigurationRequest> NanConfigurationRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7900   return CreateNanConfigurationRequest(_fbb, _o, _rehasher);
7901 }
7902 
7903 inline flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7904   (void)_rehasher;
7905   (void)_o;
7906   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanConfigurationRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7907   auto _enable = _o->enable;
7908   return chre::fbs::CreateNanConfigurationRequest(
7909       _fbb,
7910       _enable);
7911 }
7912 
7913 inline NanConfigurationUpdateT *NanConfigurationUpdate::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7914   std::unique_ptr<chre::fbs::NanConfigurationUpdateT> _o = std::unique_ptr<chre::fbs::NanConfigurationUpdateT>(new NanConfigurationUpdateT());
7915   UnPackTo(_o.get(), _resolver);
7916   return _o.release();
7917 }
7918 
7919 inline void NanConfigurationUpdate::UnPackTo(NanConfigurationUpdateT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7920   (void)_o;
7921   (void)_resolver;
7922   { auto _e = enabled(); _o->enabled = _e; }
7923 }
7924 
7925 inline flatbuffers::Offset<NanConfigurationUpdate> NanConfigurationUpdate::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7926   return CreateNanConfigurationUpdate(_fbb, _o, _rehasher);
7927 }
7928 
7929 inline flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7930   (void)_rehasher;
7931   (void)_o;
7932   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanConfigurationUpdateT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7933   auto _enabled = _o->enabled;
7934   return chre::fbs::CreateNanConfigurationUpdate(
7935       _fbb,
7936       _enabled);
7937 }
7938 
7939 inline DebugConfigurationT *DebugConfiguration::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7940   std::unique_ptr<chre::fbs::DebugConfigurationT> _o = std::unique_ptr<chre::fbs::DebugConfigurationT>(new DebugConfigurationT());
7941   UnPackTo(_o.get(), _resolver);
7942   return _o.release();
7943 }
7944 
7945 inline void DebugConfiguration::UnPackTo(DebugConfigurationT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7946   (void)_o;
7947   (void)_resolver;
7948   { auto _e = health_monitor_failure_crash(); _o->health_monitor_failure_crash = _e; }
7949 }
7950 
7951 inline flatbuffers::Offset<DebugConfiguration> DebugConfiguration::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7952   return CreateDebugConfiguration(_fbb, _o, _rehasher);
7953 }
7954 
7955 inline flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7956   (void)_rehasher;
7957   (void)_o;
7958   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugConfigurationT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7959   auto _health_monitor_failure_crash = _o->health_monitor_failure_crash;
7960   return chre::fbs::CreateDebugConfiguration(
7961       _fbb,
7962       _health_monitor_failure_crash);
7963 }
7964 
7965 inline PulseRequestT *PulseRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7966   std::unique_ptr<chre::fbs::PulseRequestT> _o = std::unique_ptr<chre::fbs::PulseRequestT>(new PulseRequestT());
7967   UnPackTo(_o.get(), _resolver);
7968   return _o.release();
7969 }
7970 
7971 inline void PulseRequest::UnPackTo(PulseRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7972   (void)_o;
7973   (void)_resolver;
7974 }
7975 
7976 inline flatbuffers::Offset<PulseRequest> PulseRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PulseRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
7977   return CreatePulseRequest(_fbb, _o, _rehasher);
7978 }
7979 
7980 inline flatbuffers::Offset<PulseRequest> CreatePulseRequest(flatbuffers::FlatBufferBuilder &_fbb, const PulseRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
7981   (void)_rehasher;
7982   (void)_o;
7983   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PulseRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
7984   return chre::fbs::CreatePulseRequest(
7985       _fbb);
7986 }
7987 
7988 inline PulseResponseT *PulseResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
7989   std::unique_ptr<chre::fbs::PulseResponseT> _o = std::unique_ptr<chre::fbs::PulseResponseT>(new PulseResponseT());
7990   UnPackTo(_o.get(), _resolver);
7991   return _o.release();
7992 }
7993 
7994 inline void PulseResponse::UnPackTo(PulseResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
7995   (void)_o;
7996   (void)_resolver;
7997 }
7998 
7999 inline flatbuffers::Offset<PulseResponse> PulseResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PulseResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8000   return CreatePulseResponse(_fbb, _o, _rehasher);
8001 }
8002 
8003 inline flatbuffers::Offset<PulseResponse> CreatePulseResponse(flatbuffers::FlatBufferBuilder &_fbb, const PulseResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8004   (void)_rehasher;
8005   (void)_o;
8006   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PulseResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8007   return chre::fbs::CreatePulseResponse(
8008       _fbb);
8009 }
8010 
8011 inline LeCocChannelInfoT *LeCocChannelInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8012   std::unique_ptr<chre::fbs::LeCocChannelInfoT> _o = std::unique_ptr<chre::fbs::LeCocChannelInfoT>(new LeCocChannelInfoT());
8013   UnPackTo(_o.get(), _resolver);
8014   return _o.release();
8015 }
8016 
8017 inline void LeCocChannelInfo::UnPackTo(LeCocChannelInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8018   (void)_o;
8019   (void)_resolver;
8020   { auto _e = localCid(); _o->localCid = _e; }
8021   { auto _e = remoteCid(); _o->remoteCid = _e; }
8022   { auto _e = psm(); _o->psm = _e; }
8023   { auto _e = localMtu(); _o->localMtu = _e; }
8024   { auto _e = remoteMtu(); _o->remoteMtu = _e; }
8025   { auto _e = localMps(); _o->localMps = _e; }
8026   { auto _e = remoteMps(); _o->remoteMps = _e; }
8027   { auto _e = initialRxCredits(); _o->initialRxCredits = _e; }
8028   { auto _e = initialTxCredits(); _o->initialTxCredits = _e; }
8029 }
8030 
8031 inline flatbuffers::Offset<LeCocChannelInfo> LeCocChannelInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LeCocChannelInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8032   return CreateLeCocChannelInfo(_fbb, _o, _rehasher);
8033 }
8034 
8035 inline flatbuffers::Offset<LeCocChannelInfo> CreateLeCocChannelInfo(flatbuffers::FlatBufferBuilder &_fbb, const LeCocChannelInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8036   (void)_rehasher;
8037   (void)_o;
8038   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LeCocChannelInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8039   auto _localCid = _o->localCid;
8040   auto _remoteCid = _o->remoteCid;
8041   auto _psm = _o->psm;
8042   auto _localMtu = _o->localMtu;
8043   auto _remoteMtu = _o->remoteMtu;
8044   auto _localMps = _o->localMps;
8045   auto _remoteMps = _o->remoteMps;
8046   auto _initialRxCredits = _o->initialRxCredits;
8047   auto _initialTxCredits = _o->initialTxCredits;
8048   return chre::fbs::CreateLeCocChannelInfo(
8049       _fbb,
8050       _localCid,
8051       _remoteCid,
8052       _psm,
8053       _localMtu,
8054       _remoteMtu,
8055       _localMps,
8056       _remoteMps,
8057       _initialRxCredits,
8058       _initialTxCredits);
8059 }
8060 
8061 inline BtSocketOpenT *BtSocketOpen::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8062   std::unique_ptr<chre::fbs::BtSocketOpenT> _o = std::unique_ptr<chre::fbs::BtSocketOpenT>(new BtSocketOpenT());
8063   UnPackTo(_o.get(), _resolver);
8064   return _o.release();
8065 }
8066 
8067 inline void BtSocketOpen::UnPackTo(BtSocketOpenT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8068   (void)_o;
8069   (void)_resolver;
8070   { auto _e = socketId(); _o->socketId = _e; }
8071   { auto _e = name(); if (_e) { _o->name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->name[_i] = _e->Get(_i); } } }
8072   { auto _e = aclConnectionHandle(); _o->aclConnectionHandle = _e; }
8073   { auto _e = channelInfo_type(); _o->channelInfo.type = _e; }
8074   { auto _e = channelInfo(); if (_e) _o->channelInfo.value = chre::fbs::ChannelInfoUnion::UnPack(_e, channelInfo_type(), _resolver); }
8075   { auto _e = hubId(); _o->hubId = _e; }
8076   { auto _e = endpointId(); _o->endpointId = _e; }
8077 }
8078 
8079 inline flatbuffers::Offset<BtSocketOpen> BtSocketOpen::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8080   return CreateBtSocketOpen(_fbb, _o, _rehasher);
8081 }
8082 
8083 inline flatbuffers::Offset<BtSocketOpen> CreateBtSocketOpen(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8084   (void)_rehasher;
8085   (void)_o;
8086   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BtSocketOpenT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8087   auto _socketId = _o->socketId;
8088   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
8089   auto _aclConnectionHandle = _o->aclConnectionHandle;
8090   auto _channelInfo_type = _o->channelInfo.type;
8091   auto _channelInfo = _o->channelInfo.Pack(_fbb);
8092   auto _hubId = _o->hubId;
8093   auto _endpointId = _o->endpointId;
8094   return chre::fbs::CreateBtSocketOpen(
8095       _fbb,
8096       _socketId,
8097       _name,
8098       _aclConnectionHandle,
8099       _channelInfo_type,
8100       _channelInfo,
8101       _hubId,
8102       _endpointId);
8103 }
8104 
8105 inline BtSocketOpenResponseT *BtSocketOpenResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8106   std::unique_ptr<chre::fbs::BtSocketOpenResponseT> _o = std::unique_ptr<chre::fbs::BtSocketOpenResponseT>(new BtSocketOpenResponseT());
8107   UnPackTo(_o.get(), _resolver);
8108   return _o.release();
8109 }
8110 
8111 inline void BtSocketOpenResponse::UnPackTo(BtSocketOpenResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8112   (void)_o;
8113   (void)_resolver;
8114   { auto _e = socketId(); _o->socketId = _e; }
8115   { auto _e = status(); _o->status = _e; }
8116   { auto _e = reason(); if (_e) { _o->reason.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->reason[_i] = _e->Get(_i); } } }
8117 }
8118 
8119 inline flatbuffers::Offset<BtSocketOpenResponse> BtSocketOpenResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8120   return CreateBtSocketOpenResponse(_fbb, _o, _rehasher);
8121 }
8122 
8123 inline flatbuffers::Offset<BtSocketOpenResponse> CreateBtSocketOpenResponse(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketOpenResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8124   (void)_rehasher;
8125   (void)_o;
8126   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BtSocketOpenResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8127   auto _socketId = _o->socketId;
8128   auto _status = _o->status;
8129   auto _reason = _o->reason.size() ? _fbb.CreateVector(_o->reason) : 0;
8130   return chre::fbs::CreateBtSocketOpenResponse(
8131       _fbb,
8132       _socketId,
8133       _status,
8134       _reason);
8135 }
8136 
8137 inline BtSocketCloseT *BtSocketClose::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8138   std::unique_ptr<chre::fbs::BtSocketCloseT> _o = std::unique_ptr<chre::fbs::BtSocketCloseT>(new BtSocketCloseT());
8139   UnPackTo(_o.get(), _resolver);
8140   return _o.release();
8141 }
8142 
8143 inline void BtSocketClose::UnPackTo(BtSocketCloseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8144   (void)_o;
8145   (void)_resolver;
8146   { auto _e = socketId(); _o->socketId = _e; }
8147   { auto _e = reason(); if (_e) { _o->reason.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->reason[_i] = _e->Get(_i); } } }
8148 }
8149 
8150 inline flatbuffers::Offset<BtSocketClose> BtSocketClose::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8151   return CreateBtSocketClose(_fbb, _o, _rehasher);
8152 }
8153 
8154 inline flatbuffers::Offset<BtSocketClose> CreateBtSocketClose(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8155   (void)_rehasher;
8156   (void)_o;
8157   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BtSocketCloseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8158   auto _socketId = _o->socketId;
8159   auto _reason = _o->reason.size() ? _fbb.CreateVector(_o->reason) : 0;
8160   return chre::fbs::CreateBtSocketClose(
8161       _fbb,
8162       _socketId,
8163       _reason);
8164 }
8165 
8166 inline BtSocketCloseResponseT *BtSocketCloseResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8167   std::unique_ptr<chre::fbs::BtSocketCloseResponseT> _o = std::unique_ptr<chre::fbs::BtSocketCloseResponseT>(new BtSocketCloseResponseT());
8168   UnPackTo(_o.get(), _resolver);
8169   return _o.release();
8170 }
8171 
8172 inline void BtSocketCloseResponse::UnPackTo(BtSocketCloseResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8173   (void)_o;
8174   (void)_resolver;
8175   { auto _e = socketId(); _o->socketId = _e; }
8176 }
8177 
8178 inline flatbuffers::Offset<BtSocketCloseResponse> BtSocketCloseResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8179   return CreateBtSocketCloseResponse(_fbb, _o, _rehasher);
8180 }
8181 
8182 inline flatbuffers::Offset<BtSocketCloseResponse> CreateBtSocketCloseResponse(flatbuffers::FlatBufferBuilder &_fbb, const BtSocketCloseResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8183   (void)_rehasher;
8184   (void)_o;
8185   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BtSocketCloseResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8186   auto _socketId = _o->socketId;
8187   return chre::fbs::CreateBtSocketCloseResponse(
8188       _fbb,
8189       _socketId);
8190 }
8191 
8192 inline VendorHubInfoT *VendorHubInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8193   std::unique_ptr<chre::fbs::VendorHubInfoT> _o = std::unique_ptr<chre::fbs::VendorHubInfoT>(new VendorHubInfoT());
8194   UnPackTo(_o.get(), _resolver);
8195   return _o.release();
8196 }
8197 
8198 inline void VendorHubInfo::UnPackTo(VendorHubInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8199   (void)_o;
8200   (void)_resolver;
8201   { auto _e = name(); if (_e) { _o->name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->name[_i] = _e->Get(_i); } } }
8202   { auto _e = version(); _o->version = _e; }
8203   { auto _e = extended_info(); if (_e) { _o->extended_info.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->extended_info[_i] = _e->Get(_i); } } }
8204 }
8205 
8206 inline flatbuffers::Offset<VendorHubInfo> VendorHubInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VendorHubInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8207   return CreateVendorHubInfo(_fbb, _o, _rehasher);
8208 }
8209 
8210 inline flatbuffers::Offset<VendorHubInfo> CreateVendorHubInfo(flatbuffers::FlatBufferBuilder &_fbb, const VendorHubInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8211   (void)_rehasher;
8212   (void)_o;
8213   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VendorHubInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8214   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
8215   auto _version = _o->version;
8216   auto _extended_info = _o->extended_info.size() ? _fbb.CreateVector(_o->extended_info) : 0;
8217   return chre::fbs::CreateVendorHubInfo(
8218       _fbb,
8219       _name,
8220       _version,
8221       _extended_info);
8222 }
8223 
8224 inline MessageHubT *MessageHub::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8225   std::unique_ptr<chre::fbs::MessageHubT> _o = std::unique_ptr<chre::fbs::MessageHubT>(new MessageHubT());
8226   UnPackTo(_o.get(), _resolver);
8227   return _o.release();
8228 }
8229 
8230 inline void MessageHub::UnPackTo(MessageHubT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8231   (void)_o;
8232   (void)_resolver;
8233   { auto _e = id(); _o->id = _e; }
8234   { auto _e = details_type(); _o->details.type = _e; }
8235   { auto _e = details(); if (_e) _o->details.value = chre::fbs::MessageHubDetailsUnion::UnPack(_e, details_type(), _resolver); }
8236 }
8237 
8238 inline flatbuffers::Offset<MessageHub> MessageHub::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8239   return CreateMessageHub(_fbb, _o, _rehasher);
8240 }
8241 
8242 inline flatbuffers::Offset<MessageHub> CreateMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const MessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8243   (void)_rehasher;
8244   (void)_o;
8245   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MessageHubT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8246   auto _id = _o->id;
8247   auto _details_type = _o->details.type;
8248   auto _details = _o->details.Pack(_fbb);
8249   return chre::fbs::CreateMessageHub(
8250       _fbb,
8251       _id,
8252       _details_type,
8253       _details);
8254 }
8255 
8256 inline RegisterMessageHubT *RegisterMessageHub::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8257   std::unique_ptr<chre::fbs::RegisterMessageHubT> _o = std::unique_ptr<chre::fbs::RegisterMessageHubT>(new RegisterMessageHubT());
8258   UnPackTo(_o.get(), _resolver);
8259   return _o.release();
8260 }
8261 
8262 inline void RegisterMessageHub::UnPackTo(RegisterMessageHubT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8263   (void)_o;
8264   (void)_resolver;
8265   { auto _e = hub(); if (_e) _o->hub = std::unique_ptr<chre::fbs::MessageHubT>(_e->UnPack(_resolver)); }
8266 }
8267 
8268 inline flatbuffers::Offset<RegisterMessageHub> RegisterMessageHub::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegisterMessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8269   return CreateRegisterMessageHub(_fbb, _o, _rehasher);
8270 }
8271 
8272 inline flatbuffers::Offset<RegisterMessageHub> CreateRegisterMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const RegisterMessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8273   (void)_rehasher;
8274   (void)_o;
8275   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RegisterMessageHubT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8276   auto _hub = _o->hub ? CreateMessageHub(_fbb, _o->hub.get(), _rehasher) : 0;
8277   return chre::fbs::CreateRegisterMessageHub(
8278       _fbb,
8279       _hub);
8280 }
8281 
8282 inline UnregisterMessageHubT *UnregisterMessageHub::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8283   std::unique_ptr<chre::fbs::UnregisterMessageHubT> _o = std::unique_ptr<chre::fbs::UnregisterMessageHubT>(new UnregisterMessageHubT());
8284   UnPackTo(_o.get(), _resolver);
8285   return _o.release();
8286 }
8287 
8288 inline void UnregisterMessageHub::UnPackTo(UnregisterMessageHubT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8289   (void)_o;
8290   (void)_resolver;
8291   { auto _e = id(); _o->id = _e; }
8292 }
8293 
8294 inline flatbuffers::Offset<UnregisterMessageHub> UnregisterMessageHub::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterMessageHubT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8295   return CreateUnregisterMessageHub(_fbb, _o, _rehasher);
8296 }
8297 
8298 inline flatbuffers::Offset<UnregisterMessageHub> CreateUnregisterMessageHub(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterMessageHubT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8299   (void)_rehasher;
8300   (void)_o;
8301   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnregisterMessageHubT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8302   auto _id = _o->id;
8303   return chre::fbs::CreateUnregisterMessageHub(
8304       _fbb,
8305       _id);
8306 }
8307 
8308 inline EndpointIdT *EndpointId::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8309   std::unique_ptr<chre::fbs::EndpointIdT> _o = std::unique_ptr<chre::fbs::EndpointIdT>(new EndpointIdT());
8310   UnPackTo(_o.get(), _resolver);
8311   return _o.release();
8312 }
8313 
8314 inline void EndpointId::UnPackTo(EndpointIdT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8315   (void)_o;
8316   (void)_resolver;
8317   { auto _e = hubId(); _o->hubId = _e; }
8318   { auto _e = id(); _o->id = _e; }
8319 }
8320 
8321 inline flatbuffers::Offset<EndpointId> EndpointId::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointIdT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8322   return CreateEndpointId(_fbb, _o, _rehasher);
8323 }
8324 
8325 inline flatbuffers::Offset<EndpointId> CreateEndpointId(flatbuffers::FlatBufferBuilder &_fbb, const EndpointIdT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8326   (void)_rehasher;
8327   (void)_o;
8328   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointIdT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8329   auto _hubId = _o->hubId;
8330   auto _id = _o->id;
8331   return chre::fbs::CreateEndpointId(
8332       _fbb,
8333       _hubId,
8334       _id);
8335 }
8336 
8337 inline ServiceT *Service::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8338   std::unique_ptr<chre::fbs::ServiceT> _o = std::unique_ptr<chre::fbs::ServiceT>(new ServiceT());
8339   UnPackTo(_o.get(), _resolver);
8340   return _o.release();
8341 }
8342 
8343 inline void Service::UnPackTo(ServiceT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8344   (void)_o;
8345   (void)_resolver;
8346   { auto _e = format(); _o->format = _e; }
8347   { auto _e = descriptor(); if (_e) { _o->descriptor.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->descriptor[_i] = _e->Get(_i); } } }
8348   { auto _e = major_version(); _o->major_version = _e; }
8349   { auto _e = minor_version(); _o->minor_version = _e; }
8350 }
8351 
8352 inline flatbuffers::Offset<Service> Service::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8353   return CreateService(_fbb, _o, _rehasher);
8354 }
8355 
8356 inline flatbuffers::Offset<Service> CreateService(flatbuffers::FlatBufferBuilder &_fbb, const ServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8357   (void)_rehasher;
8358   (void)_o;
8359   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ServiceT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8360   auto _format = _o->format;
8361   auto _descriptor = _o->descriptor.size() ? _fbb.CreateVector(_o->descriptor) : 0;
8362   auto _major_version = _o->major_version;
8363   auto _minor_version = _o->minor_version;
8364   return chre::fbs::CreateService(
8365       _fbb,
8366       _format,
8367       _descriptor,
8368       _major_version,
8369       _minor_version);
8370 }
8371 
8372 inline EndpointInfoT *EndpointInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8373   std::unique_ptr<chre::fbs::EndpointInfoT> _o = std::unique_ptr<chre::fbs::EndpointInfoT>(new EndpointInfoT());
8374   UnPackTo(_o.get(), _resolver);
8375   return _o.release();
8376 }
8377 
8378 inline void EndpointInfo::UnPackTo(EndpointInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8379   (void)_o;
8380   (void)_resolver;
8381   { auto _e = id(); if (_e) _o->id = std::unique_ptr<chre::fbs::EndpointIdT>(_e->UnPack(_resolver)); }
8382   { auto _e = type(); _o->type = _e; }
8383   { auto _e = name(); if (_e) { _o->name.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->name[_i] = _e->Get(_i); } } }
8384   { auto _e = version(); _o->version = _e; }
8385   { auto _e = required_permissions(); _o->required_permissions = _e; }
8386   { auto _e = services(); if (_e) { _o->services.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->services[_i] = std::unique_ptr<chre::fbs::ServiceT>(_e->Get(_i)->UnPack(_resolver)); } } }
8387 }
8388 
8389 inline flatbuffers::Offset<EndpointInfo> EndpointInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8390   return CreateEndpointInfo(_fbb, _o, _rehasher);
8391 }
8392 
8393 inline flatbuffers::Offset<EndpointInfo> CreateEndpointInfo(flatbuffers::FlatBufferBuilder &_fbb, const EndpointInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8394   (void)_rehasher;
8395   (void)_o;
8396   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8397   auto _id = _o->id ? CreateEndpointId(_fbb, _o->id.get(), _rehasher) : 0;
8398   auto _type = _o->type;
8399   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
8400   auto _version = _o->version;
8401   auto _required_permissions = _o->required_permissions;
8402   auto _services = _o->services.size() ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::Service>> (_o->services.size(), [](size_t i, _VectorArgs *__va) { return CreateService(*__va->__fbb, __va->__o->services[i].get(), __va->__rehasher); }, &_va ) : 0;
8403   return chre::fbs::CreateEndpointInfo(
8404       _fbb,
8405       _id,
8406       _type,
8407       _name,
8408       _version,
8409       _required_permissions,
8410       _services);
8411 }
8412 
8413 inline RegisterEndpointT *RegisterEndpoint::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8414   std::unique_ptr<chre::fbs::RegisterEndpointT> _o = std::unique_ptr<chre::fbs::RegisterEndpointT>(new RegisterEndpointT());
8415   UnPackTo(_o.get(), _resolver);
8416   return _o.release();
8417 }
8418 
8419 inline void RegisterEndpoint::UnPackTo(RegisterEndpointT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8420   (void)_o;
8421   (void)_resolver;
8422   { auto _e = endpoint(); if (_e) _o->endpoint = std::unique_ptr<chre::fbs::EndpointInfoT>(_e->UnPack(_resolver)); }
8423 }
8424 
8425 inline flatbuffers::Offset<RegisterEndpoint> RegisterEndpoint::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegisterEndpointT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8426   return CreateRegisterEndpoint(_fbb, _o, _rehasher);
8427 }
8428 
8429 inline flatbuffers::Offset<RegisterEndpoint> CreateRegisterEndpoint(flatbuffers::FlatBufferBuilder &_fbb, const RegisterEndpointT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8430   (void)_rehasher;
8431   (void)_o;
8432   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RegisterEndpointT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8433   auto _endpoint = _o->endpoint ? CreateEndpointInfo(_fbb, _o->endpoint.get(), _rehasher) : 0;
8434   return chre::fbs::CreateRegisterEndpoint(
8435       _fbb,
8436       _endpoint);
8437 }
8438 
8439 inline UnregisterEndpointT *UnregisterEndpoint::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8440   std::unique_ptr<chre::fbs::UnregisterEndpointT> _o = std::unique_ptr<chre::fbs::UnregisterEndpointT>(new UnregisterEndpointT());
8441   UnPackTo(_o.get(), _resolver);
8442   return _o.release();
8443 }
8444 
8445 inline void UnregisterEndpoint::UnPackTo(UnregisterEndpointT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8446   (void)_o;
8447   (void)_resolver;
8448   { auto _e = endpoint(); if (_e) _o->endpoint = std::unique_ptr<chre::fbs::EndpointIdT>(_e->UnPack(_resolver)); }
8449 }
8450 
8451 inline flatbuffers::Offset<UnregisterEndpoint> UnregisterEndpoint::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterEndpointT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8452   return CreateUnregisterEndpoint(_fbb, _o, _rehasher);
8453 }
8454 
8455 inline flatbuffers::Offset<UnregisterEndpoint> CreateUnregisterEndpoint(flatbuffers::FlatBufferBuilder &_fbb, const UnregisterEndpointT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8456   (void)_rehasher;
8457   (void)_o;
8458   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnregisterEndpointT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8459   auto _endpoint = _o->endpoint ? CreateEndpointId(_fbb, _o->endpoint.get(), _rehasher) : 0;
8460   return chre::fbs::CreateUnregisterEndpoint(
8461       _fbb,
8462       _endpoint);
8463 }
8464 
8465 inline GetMessageHubsAndEndpointsRequestT *GetMessageHubsAndEndpointsRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8466   std::unique_ptr<chre::fbs::GetMessageHubsAndEndpointsRequestT> _o = std::unique_ptr<chre::fbs::GetMessageHubsAndEndpointsRequestT>(new GetMessageHubsAndEndpointsRequestT());
8467   UnPackTo(_o.get(), _resolver);
8468   return _o.release();
8469 }
8470 
8471 inline void GetMessageHubsAndEndpointsRequest::UnPackTo(GetMessageHubsAndEndpointsRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8472   (void)_o;
8473   (void)_resolver;
8474 }
8475 
8476 inline flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> GetMessageHubsAndEndpointsRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8477   return CreateGetMessageHubsAndEndpointsRequest(_fbb, _o, _rehasher);
8478 }
8479 
8480 inline flatbuffers::Offset<GetMessageHubsAndEndpointsRequest> CreateGetMessageHubsAndEndpointsRequest(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8481   (void)_rehasher;
8482   (void)_o;
8483   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GetMessageHubsAndEndpointsRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8484   return chre::fbs::CreateGetMessageHubsAndEndpointsRequest(
8485       _fbb);
8486 }
8487 
8488 inline GetMessageHubsAndEndpointsResponseT *GetMessageHubsAndEndpointsResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8489   std::unique_ptr<chre::fbs::GetMessageHubsAndEndpointsResponseT> _o = std::unique_ptr<chre::fbs::GetMessageHubsAndEndpointsResponseT>(new GetMessageHubsAndEndpointsResponseT());
8490   UnPackTo(_o.get(), _resolver);
8491   return _o.release();
8492 }
8493 
8494 inline void GetMessageHubsAndEndpointsResponse::UnPackTo(GetMessageHubsAndEndpointsResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8495   (void)_o;
8496   (void)_resolver;
8497   { auto _e = hubs(); if (_e) { _o->hubs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->hubs[_i] = std::unique_ptr<chre::fbs::MessageHubT>(_e->Get(_i)->UnPack(_resolver)); } } }
8498   { auto _e = endpoints(); if (_e) { _o->endpoints.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->endpoints[_i] = std::unique_ptr<chre::fbs::EndpointInfoT>(_e->Get(_i)->UnPack(_resolver)); } } }
8499 }
8500 
8501 inline flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> GetMessageHubsAndEndpointsResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8502   return CreateGetMessageHubsAndEndpointsResponse(_fbb, _o, _rehasher);
8503 }
8504 
8505 inline flatbuffers::Offset<GetMessageHubsAndEndpointsResponse> CreateGetMessageHubsAndEndpointsResponse(flatbuffers::FlatBufferBuilder &_fbb, const GetMessageHubsAndEndpointsResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8506   (void)_rehasher;
8507   (void)_o;
8508   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GetMessageHubsAndEndpointsResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8509   auto _hubs = _o->hubs.size() ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::MessageHub>> (_o->hubs.size(), [](size_t i, _VectorArgs *__va) { return CreateMessageHub(*__va->__fbb, __va->__o->hubs[i].get(), __va->__rehasher); }, &_va ) : 0;
8510   auto _endpoints = _o->endpoints.size() ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::EndpointInfo>> (_o->endpoints.size(), [](size_t i, _VectorArgs *__va) { return CreateEndpointInfo(*__va->__fbb, __va->__o->endpoints[i].get(), __va->__rehasher); }, &_va ) : 0;
8511   return chre::fbs::CreateGetMessageHubsAndEndpointsResponse(
8512       _fbb,
8513       _hubs,
8514       _endpoints);
8515 }
8516 
8517 inline OpenEndpointSessionRequestT *OpenEndpointSessionRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8518   std::unique_ptr<chre::fbs::OpenEndpointSessionRequestT> _o = std::unique_ptr<chre::fbs::OpenEndpointSessionRequestT>(new OpenEndpointSessionRequestT());
8519   UnPackTo(_o.get(), _resolver);
8520   return _o.release();
8521 }
8522 
8523 inline void OpenEndpointSessionRequest::UnPackTo(OpenEndpointSessionRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8524   (void)_o;
8525   (void)_resolver;
8526   { auto _e = id(); _o->id = _e; }
8527   { auto _e = fromEndpoint(); if (_e) _o->fromEndpoint = std::unique_ptr<chre::fbs::EndpointIdT>(_e->UnPack(_resolver)); }
8528   { auto _e = toEndpoint(); if (_e) _o->toEndpoint = std::unique_ptr<chre::fbs::EndpointIdT>(_e->UnPack(_resolver)); }
8529   { auto _e = serviceDescriptor(); if (_e) { _o->serviceDescriptor.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->serviceDescriptor[_i] = _e->Get(_i); } } }
8530 }
8531 
8532 inline flatbuffers::Offset<OpenEndpointSessionRequest> OpenEndpointSessionRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OpenEndpointSessionRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8533   return CreateOpenEndpointSessionRequest(_fbb, _o, _rehasher);
8534 }
8535 
8536 inline flatbuffers::Offset<OpenEndpointSessionRequest> CreateOpenEndpointSessionRequest(flatbuffers::FlatBufferBuilder &_fbb, const OpenEndpointSessionRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8537   (void)_rehasher;
8538   (void)_o;
8539   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const OpenEndpointSessionRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8540   auto _id = _o->id;
8541   auto _fromEndpoint = _o->fromEndpoint ? CreateEndpointId(_fbb, _o->fromEndpoint.get(), _rehasher) : 0;
8542   auto _toEndpoint = _o->toEndpoint ? CreateEndpointId(_fbb, _o->toEndpoint.get(), _rehasher) : 0;
8543   auto _serviceDescriptor = _o->serviceDescriptor.size() ? _fbb.CreateVector(_o->serviceDescriptor) : 0;
8544   return chre::fbs::CreateOpenEndpointSessionRequest(
8545       _fbb,
8546       _id,
8547       _fromEndpoint,
8548       _toEndpoint,
8549       _serviceDescriptor);
8550 }
8551 
8552 inline EndpointSessionOpenedT *EndpointSessionOpened::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8553   std::unique_ptr<chre::fbs::EndpointSessionOpenedT> _o = std::unique_ptr<chre::fbs::EndpointSessionOpenedT>(new EndpointSessionOpenedT());
8554   UnPackTo(_o.get(), _resolver);
8555   return _o.release();
8556 }
8557 
8558 inline void EndpointSessionOpened::UnPackTo(EndpointSessionOpenedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8559   (void)_o;
8560   (void)_resolver;
8561   { auto _e = id(); _o->id = _e; }
8562 }
8563 
8564 inline flatbuffers::Offset<EndpointSessionOpened> EndpointSessionOpened::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionOpenedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8565   return CreateEndpointSessionOpened(_fbb, _o, _rehasher);
8566 }
8567 
8568 inline flatbuffers::Offset<EndpointSessionOpened> CreateEndpointSessionOpened(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionOpenedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8569   (void)_rehasher;
8570   (void)_o;
8571   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointSessionOpenedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8572   auto _id = _o->id;
8573   return chre::fbs::CreateEndpointSessionOpened(
8574       _fbb,
8575       _id);
8576 }
8577 
8578 inline EndpointSessionClosedT *EndpointSessionClosed::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8579   std::unique_ptr<chre::fbs::EndpointSessionClosedT> _o = std::unique_ptr<chre::fbs::EndpointSessionClosedT>(new EndpointSessionClosedT());
8580   UnPackTo(_o.get(), _resolver);
8581   return _o.release();
8582 }
8583 
8584 inline void EndpointSessionClosed::UnPackTo(EndpointSessionClosedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8585   (void)_o;
8586   (void)_resolver;
8587   { auto _e = id(); _o->id = _e; }
8588   { auto _e = reason(); _o->reason = _e; }
8589 }
8590 
8591 inline flatbuffers::Offset<EndpointSessionClosed> EndpointSessionClosed::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionClosedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8592   return CreateEndpointSessionClosed(_fbb, _o, _rehasher);
8593 }
8594 
8595 inline flatbuffers::Offset<EndpointSessionClosed> CreateEndpointSessionClosed(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionClosedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8596   (void)_rehasher;
8597   (void)_o;
8598   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointSessionClosedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8599   auto _id = _o->id;
8600   auto _reason = _o->reason;
8601   return chre::fbs::CreateEndpointSessionClosed(
8602       _fbb,
8603       _id,
8604       _reason);
8605 }
8606 
8607 inline EndpointSessionMessageT *EndpointSessionMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8608   std::unique_ptr<chre::fbs::EndpointSessionMessageT> _o = std::unique_ptr<chre::fbs::EndpointSessionMessageT>(new EndpointSessionMessageT());
8609   UnPackTo(_o.get(), _resolver);
8610   return _o.release();
8611 }
8612 
8613 inline void EndpointSessionMessage::UnPackTo(EndpointSessionMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8614   (void)_o;
8615   (void)_resolver;
8616   { auto _e = session_id(); _o->session_id = _e; }
8617   { auto _e = type(); _o->type = _e; }
8618   { auto _e = permissions(); _o->permissions = _e; }
8619   { auto _e = data(); if (_e) { _o->data.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->data[_i] = _e->Get(_i); } } }
8620   { auto _e = flags(); _o->flags = _e; }
8621   { auto _e = sequence_number(); _o->sequence_number = _e; }
8622 }
8623 
8624 inline flatbuffers::Offset<EndpointSessionMessage> EndpointSessionMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8625   return CreateEndpointSessionMessage(_fbb, _o, _rehasher);
8626 }
8627 
8628 inline flatbuffers::Offset<EndpointSessionMessage> CreateEndpointSessionMessage(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8629   (void)_rehasher;
8630   (void)_o;
8631   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointSessionMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8632   auto _session_id = _o->session_id;
8633   auto _type = _o->type;
8634   auto _permissions = _o->permissions;
8635   auto _data = _o->data.size() ? _fbb.CreateVector(_o->data) : 0;
8636   auto _flags = _o->flags;
8637   auto _sequence_number = _o->sequence_number;
8638   return chre::fbs::CreateEndpointSessionMessage(
8639       _fbb,
8640       _session_id,
8641       _type,
8642       _permissions,
8643       _data,
8644       _flags,
8645       _sequence_number);
8646 }
8647 
8648 inline EndpointSessionMessageDeliveryStatusT *EndpointSessionMessageDeliveryStatus::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8649   std::unique_ptr<chre::fbs::EndpointSessionMessageDeliveryStatusT> _o = std::unique_ptr<chre::fbs::EndpointSessionMessageDeliveryStatusT>(new EndpointSessionMessageDeliveryStatusT());
8650   UnPackTo(_o.get(), _resolver);
8651   return _o.release();
8652 }
8653 
8654 inline void EndpointSessionMessageDeliveryStatus::UnPackTo(EndpointSessionMessageDeliveryStatusT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8655   (void)_o;
8656   (void)_resolver;
8657   { auto _e = session_id(); _o->session_id = _e; }
8658   { auto _e = status(); if (_e) _o->status = std::unique_ptr<chre::fbs::MessageDeliveryStatusT>(_e->UnPack(_resolver)); }
8659 }
8660 
8661 inline flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> EndpointSessionMessageDeliveryStatus::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageDeliveryStatusT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8662   return CreateEndpointSessionMessageDeliveryStatus(_fbb, _o, _rehasher);
8663 }
8664 
8665 inline flatbuffers::Offset<EndpointSessionMessageDeliveryStatus> CreateEndpointSessionMessageDeliveryStatus(flatbuffers::FlatBufferBuilder &_fbb, const EndpointSessionMessageDeliveryStatusT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8666   (void)_rehasher;
8667   (void)_o;
8668   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EndpointSessionMessageDeliveryStatusT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8669   auto _session_id = _o->session_id;
8670   auto _status = _o->status ? CreateMessageDeliveryStatus(_fbb, _o->status.get(), _rehasher) : 0;
8671   return chre::fbs::CreateEndpointSessionMessageDeliveryStatus(
8672       _fbb,
8673       _session_id,
8674       _status);
8675 }
8676 
8677 inline MessageContainerT *MessageContainer::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
8678   std::unique_ptr<chre::fbs::MessageContainerT> _o = std::unique_ptr<chre::fbs::MessageContainerT>(new MessageContainerT());
8679   UnPackTo(_o.get(), _resolver);
8680   return _o.release();
8681 }
8682 
8683 inline void MessageContainer::UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver) const {
8684   (void)_o;
8685   (void)_resolver;
8686   { auto _e = message_type(); _o->message.type = _e; }
8687   { auto _e = message(); if (_e) _o->message.value = chre::fbs::ChreMessageUnion::UnPack(_e, message_type(), _resolver); }
8688   { auto _e = host_addr(); if (_e) _o->host_addr = std::unique_ptr<chre::fbs::HostAddress>(new chre::fbs::HostAddress(*_e)); }
8689 }
8690 
8691 inline flatbuffers::Offset<MessageContainer> MessageContainer::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
8692   return CreateMessageContainer(_fbb, _o, _rehasher);
8693 }
8694 
8695 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
8696   (void)_rehasher;
8697   (void)_o;
8698   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MessageContainerT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
8699   auto _message_type = _o->message.type;
8700   auto _message = _o->message.Pack(_fbb);
8701   auto _host_addr = _o->host_addr ? _o->host_addr.get() : 0;
8702   return chre::fbs::CreateMessageContainer(
8703       _fbb,
8704       _message_type,
8705       _message,
8706       _host_addr);
8707 }
8708 
8709 inline bool VerifyChannelInfo(flatbuffers::Verifier &verifier, const void *obj, ChannelInfo type) {
8710   switch (type) {
8711     case ChannelInfo::NONE: {
8712       return true;
8713     }
8714     case ChannelInfo::LeCocChannelInfo: {
8715       auto ptr = reinterpret_cast<const chre::fbs::LeCocChannelInfo *>(obj);
8716       return verifier.VerifyTable(ptr);
8717     }
8718     default: return true;
8719   }
8720 }
8721 
8722 inline bool VerifyChannelInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
8723   if (!values || !types) return !values && !types;
8724   if (values->size() != types->size()) return false;
8725   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
8726     if (!VerifyChannelInfo(
8727         verifier,  values->Get(i), types->GetEnum<ChannelInfo>(i))) {
8728       return false;
8729     }
8730   }
8731   return true;
8732 }
8733 
8734 inline void *ChannelInfoUnion::UnPack(const void *obj, ChannelInfo type, const flatbuffers::resolver_function_t *resolver) {
8735   switch (type) {
8736     case ChannelInfo::LeCocChannelInfo: {
8737       auto ptr = reinterpret_cast<const chre::fbs::LeCocChannelInfo *>(obj);
8738       return ptr->UnPack(resolver);
8739     }
8740     default: return nullptr;
8741   }
8742 }
8743 
8744 inline flatbuffers::Offset<void> ChannelInfoUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
8745   switch (type) {
8746     case ChannelInfo::LeCocChannelInfo: {
8747       auto ptr = reinterpret_cast<const chre::fbs::LeCocChannelInfoT *>(value);
8748       return CreateLeCocChannelInfo(_fbb, ptr, _rehasher).Union();
8749     }
8750     default: return 0;
8751   }
8752 }
8753 
8754 inline ChannelInfoUnion::ChannelInfoUnion(const ChannelInfoUnion &u) : type(u.type), value(nullptr) {
8755   switch (type) {
8756     case ChannelInfo::LeCocChannelInfo: {
8757       value = new chre::fbs::LeCocChannelInfoT(*reinterpret_cast<chre::fbs::LeCocChannelInfoT *>(u.value));
8758       break;
8759     }
8760     default:
8761       break;
8762   }
8763 }
8764 
8765 inline void ChannelInfoUnion::Reset() {
8766   switch (type) {
8767     case ChannelInfo::LeCocChannelInfo: {
8768       auto ptr = reinterpret_cast<chre::fbs::LeCocChannelInfoT *>(value);
8769       delete ptr;
8770       break;
8771     }
8772     default: break;
8773   }
8774   value = nullptr;
8775   type = ChannelInfo::NONE;
8776 }
8777 
8778 inline bool VerifyMessageHubDetails(flatbuffers::Verifier &verifier, const void *obj, MessageHubDetails type) {
8779   switch (type) {
8780     case MessageHubDetails::NONE: {
8781       return true;
8782     }
8783     case MessageHubDetails::HubInfoResponse: {
8784       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
8785       return verifier.VerifyTable(ptr);
8786     }
8787     case MessageHubDetails::VendorHubInfo: {
8788       auto ptr = reinterpret_cast<const chre::fbs::VendorHubInfo *>(obj);
8789       return verifier.VerifyTable(ptr);
8790     }
8791     default: return true;
8792   }
8793 }
8794 
8795 inline bool VerifyMessageHubDetailsVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
8796   if (!values || !types) return !values && !types;
8797   if (values->size() != types->size()) return false;
8798   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
8799     if (!VerifyMessageHubDetails(
8800         verifier,  values->Get(i), types->GetEnum<MessageHubDetails>(i))) {
8801       return false;
8802     }
8803   }
8804   return true;
8805 }
8806 
8807 inline void *MessageHubDetailsUnion::UnPack(const void *obj, MessageHubDetails type, const flatbuffers::resolver_function_t *resolver) {
8808   switch (type) {
8809     case MessageHubDetails::HubInfoResponse: {
8810       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
8811       return ptr->UnPack(resolver);
8812     }
8813     case MessageHubDetails::VendorHubInfo: {
8814       auto ptr = reinterpret_cast<const chre::fbs::VendorHubInfo *>(obj);
8815       return ptr->UnPack(resolver);
8816     }
8817     default: return nullptr;
8818   }
8819 }
8820 
8821 inline flatbuffers::Offset<void> MessageHubDetailsUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
8822   switch (type) {
8823     case MessageHubDetails::HubInfoResponse: {
8824       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value);
8825       return CreateHubInfoResponse(_fbb, ptr, _rehasher).Union();
8826     }
8827     case MessageHubDetails::VendorHubInfo: {
8828       auto ptr = reinterpret_cast<const chre::fbs::VendorHubInfoT *>(value);
8829       return CreateVendorHubInfo(_fbb, ptr, _rehasher).Union();
8830     }
8831     default: return 0;
8832   }
8833 }
8834 
8835 inline MessageHubDetailsUnion::MessageHubDetailsUnion(const MessageHubDetailsUnion &u) : type(u.type), value(nullptr) {
8836   switch (type) {
8837     case MessageHubDetails::HubInfoResponse: {
8838       value = new chre::fbs::HubInfoResponseT(*reinterpret_cast<chre::fbs::HubInfoResponseT *>(u.value));
8839       break;
8840     }
8841     case MessageHubDetails::VendorHubInfo: {
8842       value = new chre::fbs::VendorHubInfoT(*reinterpret_cast<chre::fbs::VendorHubInfoT *>(u.value));
8843       break;
8844     }
8845     default:
8846       break;
8847   }
8848 }
8849 
8850 inline void MessageHubDetailsUnion::Reset() {
8851   switch (type) {
8852     case MessageHubDetails::HubInfoResponse: {
8853       auto ptr = reinterpret_cast<chre::fbs::HubInfoResponseT *>(value);
8854       delete ptr;
8855       break;
8856     }
8857     case MessageHubDetails::VendorHubInfo: {
8858       auto ptr = reinterpret_cast<chre::fbs::VendorHubInfoT *>(value);
8859       delete ptr;
8860       break;
8861     }
8862     default: break;
8863   }
8864   value = nullptr;
8865   type = MessageHubDetails::NONE;
8866 }
8867 
8868 inline bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type) {
8869   switch (type) {
8870     case ChreMessage::NONE: {
8871       return true;
8872     }
8873     case ChreMessage::NanoappMessage: {
8874       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessage *>(obj);
8875       return verifier.VerifyTable(ptr);
8876     }
8877     case ChreMessage::HubInfoRequest: {
8878       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequest *>(obj);
8879       return verifier.VerifyTable(ptr);
8880     }
8881     case ChreMessage::HubInfoResponse: {
8882       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
8883       return verifier.VerifyTable(ptr);
8884     }
8885     case ChreMessage::NanoappListRequest: {
8886       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequest *>(obj);
8887       return verifier.VerifyTable(ptr);
8888     }
8889     case ChreMessage::NanoappListResponse: {
8890       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponse *>(obj);
8891       return verifier.VerifyTable(ptr);
8892     }
8893     case ChreMessage::LoadNanoappRequest: {
8894       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequest *>(obj);
8895       return verifier.VerifyTable(ptr);
8896     }
8897     case ChreMessage::LoadNanoappResponse: {
8898       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponse *>(obj);
8899       return verifier.VerifyTable(ptr);
8900     }
8901     case ChreMessage::UnloadNanoappRequest: {
8902       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequest *>(obj);
8903       return verifier.VerifyTable(ptr);
8904     }
8905     case ChreMessage::UnloadNanoappResponse: {
8906       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponse *>(obj);
8907       return verifier.VerifyTable(ptr);
8908     }
8909     case ChreMessage::LogMessage: {
8910       auto ptr = reinterpret_cast<const chre::fbs::LogMessage *>(obj);
8911       return verifier.VerifyTable(ptr);
8912     }
8913     case ChreMessage::TimeSyncMessage: {
8914       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessage *>(obj);
8915       return verifier.VerifyTable(ptr);
8916     }
8917     case ChreMessage::DebugDumpRequest: {
8918       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequest *>(obj);
8919       return verifier.VerifyTable(ptr);
8920     }
8921     case ChreMessage::DebugDumpData: {
8922       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpData *>(obj);
8923       return verifier.VerifyTable(ptr);
8924     }
8925     case ChreMessage::DebugDumpResponse: {
8926       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponse *>(obj);
8927       return verifier.VerifyTable(ptr);
8928     }
8929     case ChreMessage::TimeSyncRequest: {
8930       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequest *>(obj);
8931       return verifier.VerifyTable(ptr);
8932     }
8933     case ChreMessage::LowPowerMicAccessRequest: {
8934       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequest *>(obj);
8935       return verifier.VerifyTable(ptr);
8936     }
8937     case ChreMessage::LowPowerMicAccessRelease: {
8938       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRelease *>(obj);
8939       return verifier.VerifyTable(ptr);
8940     }
8941     case ChreMessage::SettingChangeMessage: {
8942       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessage *>(obj);
8943       return verifier.VerifyTable(ptr);
8944     }
8945     case ChreMessage::LogMessageV2: {
8946       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2 *>(obj);
8947       return verifier.VerifyTable(ptr);
8948     }
8949     case ChreMessage::SelfTestRequest: {
8950       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequest *>(obj);
8951       return verifier.VerifyTable(ptr);
8952     }
8953     case ChreMessage::SelfTestResponse: {
8954       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponse *>(obj);
8955       return verifier.VerifyTable(ptr);
8956     }
8957     case ChreMessage::HostEndpointConnected: {
8958       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnected *>(obj);
8959       return verifier.VerifyTable(ptr);
8960     }
8961     case ChreMessage::HostEndpointDisconnected: {
8962       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnected *>(obj);
8963       return verifier.VerifyTable(ptr);
8964     }
8965     case ChreMessage::MetricLog: {
8966       auto ptr = reinterpret_cast<const chre::fbs::MetricLog *>(obj);
8967       return verifier.VerifyTable(ptr);
8968     }
8969     case ChreMessage::BatchedMetricLog: {
8970       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLog *>(obj);
8971       return verifier.VerifyTable(ptr);
8972     }
8973     case ChreMessage::NanConfigurationRequest: {
8974       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequest *>(obj);
8975       return verifier.VerifyTable(ptr);
8976     }
8977     case ChreMessage::NanConfigurationUpdate: {
8978       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdate *>(obj);
8979       return verifier.VerifyTable(ptr);
8980     }
8981     case ChreMessage::DebugConfiguration: {
8982       auto ptr = reinterpret_cast<const chre::fbs::DebugConfiguration *>(obj);
8983       return verifier.VerifyTable(ptr);
8984     }
8985     case ChreMessage::PulseRequest: {
8986       auto ptr = reinterpret_cast<const chre::fbs::PulseRequest *>(obj);
8987       return verifier.VerifyTable(ptr);
8988     }
8989     case ChreMessage::PulseResponse: {
8990       auto ptr = reinterpret_cast<const chre::fbs::PulseResponse *>(obj);
8991       return verifier.VerifyTable(ptr);
8992     }
8993     case ChreMessage::NanoappTokenDatabaseInfo: {
8994       auto ptr = reinterpret_cast<const chre::fbs::NanoappTokenDatabaseInfo *>(obj);
8995       return verifier.VerifyTable(ptr);
8996     }
8997     case ChreMessage::MessageDeliveryStatus: {
8998       auto ptr = reinterpret_cast<const chre::fbs::MessageDeliveryStatus *>(obj);
8999       return verifier.VerifyTable(ptr);
9000     }
9001     case ChreMessage::BtSocketOpen: {
9002       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpen *>(obj);
9003       return verifier.VerifyTable(ptr);
9004     }
9005     case ChreMessage::BtSocketOpenResponse: {
9006       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpenResponse *>(obj);
9007       return verifier.VerifyTable(ptr);
9008     }
9009     case ChreMessage::BtSocketClose: {
9010       auto ptr = reinterpret_cast<const chre::fbs::BtSocketClose *>(obj);
9011       return verifier.VerifyTable(ptr);
9012     }
9013     case ChreMessage::BtSocketCloseResponse: {
9014       auto ptr = reinterpret_cast<const chre::fbs::BtSocketCloseResponse *>(obj);
9015       return verifier.VerifyTable(ptr);
9016     }
9017     case ChreMessage::GetMessageHubsAndEndpointsRequest: {
9018       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsRequest *>(obj);
9019       return verifier.VerifyTable(ptr);
9020     }
9021     case ChreMessage::GetMessageHubsAndEndpointsResponse: {
9022       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsResponse *>(obj);
9023       return verifier.VerifyTable(ptr);
9024     }
9025     case ChreMessage::RegisterMessageHub: {
9026       auto ptr = reinterpret_cast<const chre::fbs::RegisterMessageHub *>(obj);
9027       return verifier.VerifyTable(ptr);
9028     }
9029     case ChreMessage::UnregisterMessageHub: {
9030       auto ptr = reinterpret_cast<const chre::fbs::UnregisterMessageHub *>(obj);
9031       return verifier.VerifyTable(ptr);
9032     }
9033     case ChreMessage::RegisterEndpoint: {
9034       auto ptr = reinterpret_cast<const chre::fbs::RegisterEndpoint *>(obj);
9035       return verifier.VerifyTable(ptr);
9036     }
9037     case ChreMessage::UnregisterEndpoint: {
9038       auto ptr = reinterpret_cast<const chre::fbs::UnregisterEndpoint *>(obj);
9039       return verifier.VerifyTable(ptr);
9040     }
9041     case ChreMessage::OpenEndpointSessionRequest: {
9042       auto ptr = reinterpret_cast<const chre::fbs::OpenEndpointSessionRequest *>(obj);
9043       return verifier.VerifyTable(ptr);
9044     }
9045     case ChreMessage::EndpointSessionOpened: {
9046       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionOpened *>(obj);
9047       return verifier.VerifyTable(ptr);
9048     }
9049     case ChreMessage::EndpointSessionClosed: {
9050       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionClosed *>(obj);
9051       return verifier.VerifyTable(ptr);
9052     }
9053     case ChreMessage::EndpointSessionMessage: {
9054       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessage *>(obj);
9055       return verifier.VerifyTable(ptr);
9056     }
9057     case ChreMessage::EndpointSessionMessageDeliveryStatus: {
9058       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessageDeliveryStatus *>(obj);
9059       return verifier.VerifyTable(ptr);
9060     }
9061     default: return true;
9062   }
9063 }
9064 
9065 inline bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
9066   if (!values || !types) return !values && !types;
9067   if (values->size() != types->size()) return false;
9068   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
9069     if (!VerifyChreMessage(
9070         verifier,  values->Get(i), types->GetEnum<ChreMessage>(i))) {
9071       return false;
9072     }
9073   }
9074   return true;
9075 }
9076 
9077 inline void *ChreMessageUnion::UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver) {
9078   switch (type) {
9079     case ChreMessage::NanoappMessage: {
9080       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessage *>(obj);
9081       return ptr->UnPack(resolver);
9082     }
9083     case ChreMessage::HubInfoRequest: {
9084       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequest *>(obj);
9085       return ptr->UnPack(resolver);
9086     }
9087     case ChreMessage::HubInfoResponse: {
9088       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
9089       return ptr->UnPack(resolver);
9090     }
9091     case ChreMessage::NanoappListRequest: {
9092       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequest *>(obj);
9093       return ptr->UnPack(resolver);
9094     }
9095     case ChreMessage::NanoappListResponse: {
9096       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponse *>(obj);
9097       return ptr->UnPack(resolver);
9098     }
9099     case ChreMessage::LoadNanoappRequest: {
9100       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequest *>(obj);
9101       return ptr->UnPack(resolver);
9102     }
9103     case ChreMessage::LoadNanoappResponse: {
9104       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponse *>(obj);
9105       return ptr->UnPack(resolver);
9106     }
9107     case ChreMessage::UnloadNanoappRequest: {
9108       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequest *>(obj);
9109       return ptr->UnPack(resolver);
9110     }
9111     case ChreMessage::UnloadNanoappResponse: {
9112       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponse *>(obj);
9113       return ptr->UnPack(resolver);
9114     }
9115     case ChreMessage::LogMessage: {
9116       auto ptr = reinterpret_cast<const chre::fbs::LogMessage *>(obj);
9117       return ptr->UnPack(resolver);
9118     }
9119     case ChreMessage::TimeSyncMessage: {
9120       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessage *>(obj);
9121       return ptr->UnPack(resolver);
9122     }
9123     case ChreMessage::DebugDumpRequest: {
9124       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequest *>(obj);
9125       return ptr->UnPack(resolver);
9126     }
9127     case ChreMessage::DebugDumpData: {
9128       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpData *>(obj);
9129       return ptr->UnPack(resolver);
9130     }
9131     case ChreMessage::DebugDumpResponse: {
9132       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponse *>(obj);
9133       return ptr->UnPack(resolver);
9134     }
9135     case ChreMessage::TimeSyncRequest: {
9136       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequest *>(obj);
9137       return ptr->UnPack(resolver);
9138     }
9139     case ChreMessage::LowPowerMicAccessRequest: {
9140       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequest *>(obj);
9141       return ptr->UnPack(resolver);
9142     }
9143     case ChreMessage::LowPowerMicAccessRelease: {
9144       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRelease *>(obj);
9145       return ptr->UnPack(resolver);
9146     }
9147     case ChreMessage::SettingChangeMessage: {
9148       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessage *>(obj);
9149       return ptr->UnPack(resolver);
9150     }
9151     case ChreMessage::LogMessageV2: {
9152       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2 *>(obj);
9153       return ptr->UnPack(resolver);
9154     }
9155     case ChreMessage::SelfTestRequest: {
9156       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequest *>(obj);
9157       return ptr->UnPack(resolver);
9158     }
9159     case ChreMessage::SelfTestResponse: {
9160       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponse *>(obj);
9161       return ptr->UnPack(resolver);
9162     }
9163     case ChreMessage::HostEndpointConnected: {
9164       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnected *>(obj);
9165       return ptr->UnPack(resolver);
9166     }
9167     case ChreMessage::HostEndpointDisconnected: {
9168       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnected *>(obj);
9169       return ptr->UnPack(resolver);
9170     }
9171     case ChreMessage::MetricLog: {
9172       auto ptr = reinterpret_cast<const chre::fbs::MetricLog *>(obj);
9173       return ptr->UnPack(resolver);
9174     }
9175     case ChreMessage::BatchedMetricLog: {
9176       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLog *>(obj);
9177       return ptr->UnPack(resolver);
9178     }
9179     case ChreMessage::NanConfigurationRequest: {
9180       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequest *>(obj);
9181       return ptr->UnPack(resolver);
9182     }
9183     case ChreMessage::NanConfigurationUpdate: {
9184       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdate *>(obj);
9185       return ptr->UnPack(resolver);
9186     }
9187     case ChreMessage::DebugConfiguration: {
9188       auto ptr = reinterpret_cast<const chre::fbs::DebugConfiguration *>(obj);
9189       return ptr->UnPack(resolver);
9190     }
9191     case ChreMessage::PulseRequest: {
9192       auto ptr = reinterpret_cast<const chre::fbs::PulseRequest *>(obj);
9193       return ptr->UnPack(resolver);
9194     }
9195     case ChreMessage::PulseResponse: {
9196       auto ptr = reinterpret_cast<const chre::fbs::PulseResponse *>(obj);
9197       return ptr->UnPack(resolver);
9198     }
9199     case ChreMessage::NanoappTokenDatabaseInfo: {
9200       auto ptr = reinterpret_cast<const chre::fbs::NanoappTokenDatabaseInfo *>(obj);
9201       return ptr->UnPack(resolver);
9202     }
9203     case ChreMessage::MessageDeliveryStatus: {
9204       auto ptr = reinterpret_cast<const chre::fbs::MessageDeliveryStatus *>(obj);
9205       return ptr->UnPack(resolver);
9206     }
9207     case ChreMessage::BtSocketOpen: {
9208       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpen *>(obj);
9209       return ptr->UnPack(resolver);
9210     }
9211     case ChreMessage::BtSocketOpenResponse: {
9212       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpenResponse *>(obj);
9213       return ptr->UnPack(resolver);
9214     }
9215     case ChreMessage::BtSocketClose: {
9216       auto ptr = reinterpret_cast<const chre::fbs::BtSocketClose *>(obj);
9217       return ptr->UnPack(resolver);
9218     }
9219     case ChreMessage::BtSocketCloseResponse: {
9220       auto ptr = reinterpret_cast<const chre::fbs::BtSocketCloseResponse *>(obj);
9221       return ptr->UnPack(resolver);
9222     }
9223     case ChreMessage::GetMessageHubsAndEndpointsRequest: {
9224       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsRequest *>(obj);
9225       return ptr->UnPack(resolver);
9226     }
9227     case ChreMessage::GetMessageHubsAndEndpointsResponse: {
9228       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsResponse *>(obj);
9229       return ptr->UnPack(resolver);
9230     }
9231     case ChreMessage::RegisterMessageHub: {
9232       auto ptr = reinterpret_cast<const chre::fbs::RegisterMessageHub *>(obj);
9233       return ptr->UnPack(resolver);
9234     }
9235     case ChreMessage::UnregisterMessageHub: {
9236       auto ptr = reinterpret_cast<const chre::fbs::UnregisterMessageHub *>(obj);
9237       return ptr->UnPack(resolver);
9238     }
9239     case ChreMessage::RegisterEndpoint: {
9240       auto ptr = reinterpret_cast<const chre::fbs::RegisterEndpoint *>(obj);
9241       return ptr->UnPack(resolver);
9242     }
9243     case ChreMessage::UnregisterEndpoint: {
9244       auto ptr = reinterpret_cast<const chre::fbs::UnregisterEndpoint *>(obj);
9245       return ptr->UnPack(resolver);
9246     }
9247     case ChreMessage::OpenEndpointSessionRequest: {
9248       auto ptr = reinterpret_cast<const chre::fbs::OpenEndpointSessionRequest *>(obj);
9249       return ptr->UnPack(resolver);
9250     }
9251     case ChreMessage::EndpointSessionOpened: {
9252       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionOpened *>(obj);
9253       return ptr->UnPack(resolver);
9254     }
9255     case ChreMessage::EndpointSessionClosed: {
9256       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionClosed *>(obj);
9257       return ptr->UnPack(resolver);
9258     }
9259     case ChreMessage::EndpointSessionMessage: {
9260       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessage *>(obj);
9261       return ptr->UnPack(resolver);
9262     }
9263     case ChreMessage::EndpointSessionMessageDeliveryStatus: {
9264       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessageDeliveryStatus *>(obj);
9265       return ptr->UnPack(resolver);
9266     }
9267     default: return nullptr;
9268   }
9269 }
9270 
9271 inline flatbuffers::Offset<void> ChreMessageUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
9272   switch (type) {
9273     case ChreMessage::NanoappMessage: {
9274       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessageT *>(value);
9275       return CreateNanoappMessage(_fbb, ptr, _rehasher).Union();
9276     }
9277     case ChreMessage::HubInfoRequest: {
9278       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequestT *>(value);
9279       return CreateHubInfoRequest(_fbb, ptr, _rehasher).Union();
9280     }
9281     case ChreMessage::HubInfoResponse: {
9282       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value);
9283       return CreateHubInfoResponse(_fbb, ptr, _rehasher).Union();
9284     }
9285     case ChreMessage::NanoappListRequest: {
9286       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequestT *>(value);
9287       return CreateNanoappListRequest(_fbb, ptr, _rehasher).Union();
9288     }
9289     case ChreMessage::NanoappListResponse: {
9290       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponseT *>(value);
9291       return CreateNanoappListResponse(_fbb, ptr, _rehasher).Union();
9292     }
9293     case ChreMessage::LoadNanoappRequest: {
9294       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequestT *>(value);
9295       return CreateLoadNanoappRequest(_fbb, ptr, _rehasher).Union();
9296     }
9297     case ChreMessage::LoadNanoappResponse: {
9298       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponseT *>(value);
9299       return CreateLoadNanoappResponse(_fbb, ptr, _rehasher).Union();
9300     }
9301     case ChreMessage::UnloadNanoappRequest: {
9302       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequestT *>(value);
9303       return CreateUnloadNanoappRequest(_fbb, ptr, _rehasher).Union();
9304     }
9305     case ChreMessage::UnloadNanoappResponse: {
9306       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponseT *>(value);
9307       return CreateUnloadNanoappResponse(_fbb, ptr, _rehasher).Union();
9308     }
9309     case ChreMessage::LogMessage: {
9310       auto ptr = reinterpret_cast<const chre::fbs::LogMessageT *>(value);
9311       return CreateLogMessage(_fbb, ptr, _rehasher).Union();
9312     }
9313     case ChreMessage::TimeSyncMessage: {
9314       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessageT *>(value);
9315       return CreateTimeSyncMessage(_fbb, ptr, _rehasher).Union();
9316     }
9317     case ChreMessage::DebugDumpRequest: {
9318       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequestT *>(value);
9319       return CreateDebugDumpRequest(_fbb, ptr, _rehasher).Union();
9320     }
9321     case ChreMessage::DebugDumpData: {
9322       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpDataT *>(value);
9323       return CreateDebugDumpData(_fbb, ptr, _rehasher).Union();
9324     }
9325     case ChreMessage::DebugDumpResponse: {
9326       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponseT *>(value);
9327       return CreateDebugDumpResponse(_fbb, ptr, _rehasher).Union();
9328     }
9329     case ChreMessage::TimeSyncRequest: {
9330       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequestT *>(value);
9331       return CreateTimeSyncRequest(_fbb, ptr, _rehasher).Union();
9332     }
9333     case ChreMessage::LowPowerMicAccessRequest: {
9334       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequestT *>(value);
9335       return CreateLowPowerMicAccessRequest(_fbb, ptr, _rehasher).Union();
9336     }
9337     case ChreMessage::LowPowerMicAccessRelease: {
9338       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessReleaseT *>(value);
9339       return CreateLowPowerMicAccessRelease(_fbb, ptr, _rehasher).Union();
9340     }
9341     case ChreMessage::SettingChangeMessage: {
9342       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessageT *>(value);
9343       return CreateSettingChangeMessage(_fbb, ptr, _rehasher).Union();
9344     }
9345     case ChreMessage::LogMessageV2: {
9346       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2T *>(value);
9347       return CreateLogMessageV2(_fbb, ptr, _rehasher).Union();
9348     }
9349     case ChreMessage::SelfTestRequest: {
9350       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequestT *>(value);
9351       return CreateSelfTestRequest(_fbb, ptr, _rehasher).Union();
9352     }
9353     case ChreMessage::SelfTestResponse: {
9354       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponseT *>(value);
9355       return CreateSelfTestResponse(_fbb, ptr, _rehasher).Union();
9356     }
9357     case ChreMessage::HostEndpointConnected: {
9358       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnectedT *>(value);
9359       return CreateHostEndpointConnected(_fbb, ptr, _rehasher).Union();
9360     }
9361     case ChreMessage::HostEndpointDisconnected: {
9362       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnectedT *>(value);
9363       return CreateHostEndpointDisconnected(_fbb, ptr, _rehasher).Union();
9364     }
9365     case ChreMessage::MetricLog: {
9366       auto ptr = reinterpret_cast<const chre::fbs::MetricLogT *>(value);
9367       return CreateMetricLog(_fbb, ptr, _rehasher).Union();
9368     }
9369     case ChreMessage::BatchedMetricLog: {
9370       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLogT *>(value);
9371       return CreateBatchedMetricLog(_fbb, ptr, _rehasher).Union();
9372     }
9373     case ChreMessage::NanConfigurationRequest: {
9374       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequestT *>(value);
9375       return CreateNanConfigurationRequest(_fbb, ptr, _rehasher).Union();
9376     }
9377     case ChreMessage::NanConfigurationUpdate: {
9378       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdateT *>(value);
9379       return CreateNanConfigurationUpdate(_fbb, ptr, _rehasher).Union();
9380     }
9381     case ChreMessage::DebugConfiguration: {
9382       auto ptr = reinterpret_cast<const chre::fbs::DebugConfigurationT *>(value);
9383       return CreateDebugConfiguration(_fbb, ptr, _rehasher).Union();
9384     }
9385     case ChreMessage::PulseRequest: {
9386       auto ptr = reinterpret_cast<const chre::fbs::PulseRequestT *>(value);
9387       return CreatePulseRequest(_fbb, ptr, _rehasher).Union();
9388     }
9389     case ChreMessage::PulseResponse: {
9390       auto ptr = reinterpret_cast<const chre::fbs::PulseResponseT *>(value);
9391       return CreatePulseResponse(_fbb, ptr, _rehasher).Union();
9392     }
9393     case ChreMessage::NanoappTokenDatabaseInfo: {
9394       auto ptr = reinterpret_cast<const chre::fbs::NanoappTokenDatabaseInfoT *>(value);
9395       return CreateNanoappTokenDatabaseInfo(_fbb, ptr, _rehasher).Union();
9396     }
9397     case ChreMessage::MessageDeliveryStatus: {
9398       auto ptr = reinterpret_cast<const chre::fbs::MessageDeliveryStatusT *>(value);
9399       return CreateMessageDeliveryStatus(_fbb, ptr, _rehasher).Union();
9400     }
9401     case ChreMessage::BtSocketOpen: {
9402       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpenT *>(value);
9403       return CreateBtSocketOpen(_fbb, ptr, _rehasher).Union();
9404     }
9405     case ChreMessage::BtSocketOpenResponse: {
9406       auto ptr = reinterpret_cast<const chre::fbs::BtSocketOpenResponseT *>(value);
9407       return CreateBtSocketOpenResponse(_fbb, ptr, _rehasher).Union();
9408     }
9409     case ChreMessage::BtSocketClose: {
9410       auto ptr = reinterpret_cast<const chre::fbs::BtSocketCloseT *>(value);
9411       return CreateBtSocketClose(_fbb, ptr, _rehasher).Union();
9412     }
9413     case ChreMessage::BtSocketCloseResponse: {
9414       auto ptr = reinterpret_cast<const chre::fbs::BtSocketCloseResponseT *>(value);
9415       return CreateBtSocketCloseResponse(_fbb, ptr, _rehasher).Union();
9416     }
9417     case ChreMessage::GetMessageHubsAndEndpointsRequest: {
9418       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsRequestT *>(value);
9419       return CreateGetMessageHubsAndEndpointsRequest(_fbb, ptr, _rehasher).Union();
9420     }
9421     case ChreMessage::GetMessageHubsAndEndpointsResponse: {
9422       auto ptr = reinterpret_cast<const chre::fbs::GetMessageHubsAndEndpointsResponseT *>(value);
9423       return CreateGetMessageHubsAndEndpointsResponse(_fbb, ptr, _rehasher).Union();
9424     }
9425     case ChreMessage::RegisterMessageHub: {
9426       auto ptr = reinterpret_cast<const chre::fbs::RegisterMessageHubT *>(value);
9427       return CreateRegisterMessageHub(_fbb, ptr, _rehasher).Union();
9428     }
9429     case ChreMessage::UnregisterMessageHub: {
9430       auto ptr = reinterpret_cast<const chre::fbs::UnregisterMessageHubT *>(value);
9431       return CreateUnregisterMessageHub(_fbb, ptr, _rehasher).Union();
9432     }
9433     case ChreMessage::RegisterEndpoint: {
9434       auto ptr = reinterpret_cast<const chre::fbs::RegisterEndpointT *>(value);
9435       return CreateRegisterEndpoint(_fbb, ptr, _rehasher).Union();
9436     }
9437     case ChreMessage::UnregisterEndpoint: {
9438       auto ptr = reinterpret_cast<const chre::fbs::UnregisterEndpointT *>(value);
9439       return CreateUnregisterEndpoint(_fbb, ptr, _rehasher).Union();
9440     }
9441     case ChreMessage::OpenEndpointSessionRequest: {
9442       auto ptr = reinterpret_cast<const chre::fbs::OpenEndpointSessionRequestT *>(value);
9443       return CreateOpenEndpointSessionRequest(_fbb, ptr, _rehasher).Union();
9444     }
9445     case ChreMessage::EndpointSessionOpened: {
9446       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionOpenedT *>(value);
9447       return CreateEndpointSessionOpened(_fbb, ptr, _rehasher).Union();
9448     }
9449     case ChreMessage::EndpointSessionClosed: {
9450       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionClosedT *>(value);
9451       return CreateEndpointSessionClosed(_fbb, ptr, _rehasher).Union();
9452     }
9453     case ChreMessage::EndpointSessionMessage: {
9454       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessageT *>(value);
9455       return CreateEndpointSessionMessage(_fbb, ptr, _rehasher).Union();
9456     }
9457     case ChreMessage::EndpointSessionMessageDeliveryStatus: {
9458       auto ptr = reinterpret_cast<const chre::fbs::EndpointSessionMessageDeliveryStatusT *>(value);
9459       return CreateEndpointSessionMessageDeliveryStatus(_fbb, ptr, _rehasher).Union();
9460     }
9461     default: return 0;
9462   }
9463 }
9464 
9465 inline ChreMessageUnion::ChreMessageUnion(const ChreMessageUnion &u) : type(u.type), value(nullptr) {
9466   switch (type) {
9467     case ChreMessage::NanoappMessage: {
9468       value = new chre::fbs::NanoappMessageT(*reinterpret_cast<chre::fbs::NanoappMessageT *>(u.value));
9469       break;
9470     }
9471     case ChreMessage::HubInfoRequest: {
9472       value = new chre::fbs::HubInfoRequestT(*reinterpret_cast<chre::fbs::HubInfoRequestT *>(u.value));
9473       break;
9474     }
9475     case ChreMessage::HubInfoResponse: {
9476       value = new chre::fbs::HubInfoResponseT(*reinterpret_cast<chre::fbs::HubInfoResponseT *>(u.value));
9477       break;
9478     }
9479     case ChreMessage::NanoappListRequest: {
9480       value = new chre::fbs::NanoappListRequestT(*reinterpret_cast<chre::fbs::NanoappListRequestT *>(u.value));
9481       break;
9482     }
9483     case ChreMessage::NanoappListResponse: {
9484       FLATBUFFERS_ASSERT(false);  // chre::fbs::NanoappListResponseT not copyable.
9485       break;
9486     }
9487     case ChreMessage::LoadNanoappRequest: {
9488       value = new chre::fbs::LoadNanoappRequestT(*reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(u.value));
9489       break;
9490     }
9491     case ChreMessage::LoadNanoappResponse: {
9492       value = new chre::fbs::LoadNanoappResponseT(*reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(u.value));
9493       break;
9494     }
9495     case ChreMessage::UnloadNanoappRequest: {
9496       value = new chre::fbs::UnloadNanoappRequestT(*reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(u.value));
9497       break;
9498     }
9499     case ChreMessage::UnloadNanoappResponse: {
9500       value = new chre::fbs::UnloadNanoappResponseT(*reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(u.value));
9501       break;
9502     }
9503     case ChreMessage::LogMessage: {
9504       value = new chre::fbs::LogMessageT(*reinterpret_cast<chre::fbs::LogMessageT *>(u.value));
9505       break;
9506     }
9507     case ChreMessage::TimeSyncMessage: {
9508       value = new chre::fbs::TimeSyncMessageT(*reinterpret_cast<chre::fbs::TimeSyncMessageT *>(u.value));
9509       break;
9510     }
9511     case ChreMessage::DebugDumpRequest: {
9512       value = new chre::fbs::DebugDumpRequestT(*reinterpret_cast<chre::fbs::DebugDumpRequestT *>(u.value));
9513       break;
9514     }
9515     case ChreMessage::DebugDumpData: {
9516       value = new chre::fbs::DebugDumpDataT(*reinterpret_cast<chre::fbs::DebugDumpDataT *>(u.value));
9517       break;
9518     }
9519     case ChreMessage::DebugDumpResponse: {
9520       value = new chre::fbs::DebugDumpResponseT(*reinterpret_cast<chre::fbs::DebugDumpResponseT *>(u.value));
9521       break;
9522     }
9523     case ChreMessage::TimeSyncRequest: {
9524       value = new chre::fbs::TimeSyncRequestT(*reinterpret_cast<chre::fbs::TimeSyncRequestT *>(u.value));
9525       break;
9526     }
9527     case ChreMessage::LowPowerMicAccessRequest: {
9528       value = new chre::fbs::LowPowerMicAccessRequestT(*reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(u.value));
9529       break;
9530     }
9531     case ChreMessage::LowPowerMicAccessRelease: {
9532       value = new chre::fbs::LowPowerMicAccessReleaseT(*reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(u.value));
9533       break;
9534     }
9535     case ChreMessage::SettingChangeMessage: {
9536       value = new chre::fbs::SettingChangeMessageT(*reinterpret_cast<chre::fbs::SettingChangeMessageT *>(u.value));
9537       break;
9538     }
9539     case ChreMessage::LogMessageV2: {
9540       value = new chre::fbs::LogMessageV2T(*reinterpret_cast<chre::fbs::LogMessageV2T *>(u.value));
9541       break;
9542     }
9543     case ChreMessage::SelfTestRequest: {
9544       value = new chre::fbs::SelfTestRequestT(*reinterpret_cast<chre::fbs::SelfTestRequestT *>(u.value));
9545       break;
9546     }
9547     case ChreMessage::SelfTestResponse: {
9548       value = new chre::fbs::SelfTestResponseT(*reinterpret_cast<chre::fbs::SelfTestResponseT *>(u.value));
9549       break;
9550     }
9551     case ChreMessage::HostEndpointConnected: {
9552       value = new chre::fbs::HostEndpointConnectedT(*reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(u.value));
9553       break;
9554     }
9555     case ChreMessage::HostEndpointDisconnected: {
9556       value = new chre::fbs::HostEndpointDisconnectedT(*reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(u.value));
9557       break;
9558     }
9559     case ChreMessage::MetricLog: {
9560       value = new chre::fbs::MetricLogT(*reinterpret_cast<chre::fbs::MetricLogT *>(u.value));
9561       break;
9562     }
9563     case ChreMessage::BatchedMetricLog: {
9564       FLATBUFFERS_ASSERT(false);  // chre::fbs::BatchedMetricLogT not copyable.
9565       break;
9566     }
9567     case ChreMessage::NanConfigurationRequest: {
9568       value = new chre::fbs::NanConfigurationRequestT(*reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(u.value));
9569       break;
9570     }
9571     case ChreMessage::NanConfigurationUpdate: {
9572       value = new chre::fbs::NanConfigurationUpdateT(*reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(u.value));
9573       break;
9574     }
9575     case ChreMessage::DebugConfiguration: {
9576       value = new chre::fbs::DebugConfigurationT(*reinterpret_cast<chre::fbs::DebugConfigurationT *>(u.value));
9577       break;
9578     }
9579     case ChreMessage::PulseRequest: {
9580       value = new chre::fbs::PulseRequestT(*reinterpret_cast<chre::fbs::PulseRequestT *>(u.value));
9581       break;
9582     }
9583     case ChreMessage::PulseResponse: {
9584       value = new chre::fbs::PulseResponseT(*reinterpret_cast<chre::fbs::PulseResponseT *>(u.value));
9585       break;
9586     }
9587     case ChreMessage::NanoappTokenDatabaseInfo: {
9588       value = new chre::fbs::NanoappTokenDatabaseInfoT(*reinterpret_cast<chre::fbs::NanoappTokenDatabaseInfoT *>(u.value));
9589       break;
9590     }
9591     case ChreMessage::MessageDeliveryStatus: {
9592       value = new chre::fbs::MessageDeliveryStatusT(*reinterpret_cast<chre::fbs::MessageDeliveryStatusT *>(u.value));
9593       break;
9594     }
9595     case ChreMessage::BtSocketOpen: {
9596       value = new chre::fbs::BtSocketOpenT(*reinterpret_cast<chre::fbs::BtSocketOpenT *>(u.value));
9597       break;
9598     }
9599     case ChreMessage::BtSocketOpenResponse: {
9600       value = new chre::fbs::BtSocketOpenResponseT(*reinterpret_cast<chre::fbs::BtSocketOpenResponseT *>(u.value));
9601       break;
9602     }
9603     case ChreMessage::BtSocketClose: {
9604       value = new chre::fbs::BtSocketCloseT(*reinterpret_cast<chre::fbs::BtSocketCloseT *>(u.value));
9605       break;
9606     }
9607     case ChreMessage::BtSocketCloseResponse: {
9608       value = new chre::fbs::BtSocketCloseResponseT(*reinterpret_cast<chre::fbs::BtSocketCloseResponseT *>(u.value));
9609       break;
9610     }
9611     case ChreMessage::GetMessageHubsAndEndpointsRequest: {
9612       value = new chre::fbs::GetMessageHubsAndEndpointsRequestT(*reinterpret_cast<chre::fbs::GetMessageHubsAndEndpointsRequestT *>(u.value));
9613       break;
9614     }
9615     case ChreMessage::GetMessageHubsAndEndpointsResponse: {
9616       FLATBUFFERS_ASSERT(false);  // chre::fbs::GetMessageHubsAndEndpointsResponseT not copyable.
9617       break;
9618     }
9619     case ChreMessage::RegisterMessageHub: {
9620       FLATBUFFERS_ASSERT(false);  // chre::fbs::RegisterMessageHubT not copyable.
9621       break;
9622     }
9623     case ChreMessage::UnregisterMessageHub: {
9624       value = new chre::fbs::UnregisterMessageHubT(*reinterpret_cast<chre::fbs::UnregisterMessageHubT *>(u.value));
9625       break;
9626     }
9627     case ChreMessage::RegisterEndpoint: {
9628       FLATBUFFERS_ASSERT(false);  // chre::fbs::RegisterEndpointT not copyable.
9629       break;
9630     }
9631     case ChreMessage::UnregisterEndpoint: {
9632       FLATBUFFERS_ASSERT(false);  // chre::fbs::UnregisterEndpointT not copyable.
9633       break;
9634     }
9635     case ChreMessage::OpenEndpointSessionRequest: {
9636       FLATBUFFERS_ASSERT(false);  // chre::fbs::OpenEndpointSessionRequestT not copyable.
9637       break;
9638     }
9639     case ChreMessage::EndpointSessionOpened: {
9640       value = new chre::fbs::EndpointSessionOpenedT(*reinterpret_cast<chre::fbs::EndpointSessionOpenedT *>(u.value));
9641       break;
9642     }
9643     case ChreMessage::EndpointSessionClosed: {
9644       value = new chre::fbs::EndpointSessionClosedT(*reinterpret_cast<chre::fbs::EndpointSessionClosedT *>(u.value));
9645       break;
9646     }
9647     case ChreMessage::EndpointSessionMessage: {
9648       value = new chre::fbs::EndpointSessionMessageT(*reinterpret_cast<chre::fbs::EndpointSessionMessageT *>(u.value));
9649       break;
9650     }
9651     case ChreMessage::EndpointSessionMessageDeliveryStatus: {
9652       FLATBUFFERS_ASSERT(false);  // chre::fbs::EndpointSessionMessageDeliveryStatusT not copyable.
9653       break;
9654     }
9655     default:
9656       break;
9657   }
9658 }
9659 
9660 inline void ChreMessageUnion::Reset() {
9661   switch (type) {
9662     case ChreMessage::NanoappMessage: {
9663       auto ptr = reinterpret_cast<chre::fbs::NanoappMessageT *>(value);
9664       delete ptr;
9665       break;
9666     }
9667     case ChreMessage::HubInfoRequest: {
9668       auto ptr = reinterpret_cast<chre::fbs::HubInfoRequestT *>(value);
9669       delete ptr;
9670       break;
9671     }
9672     case ChreMessage::HubInfoResponse: {
9673       auto ptr = reinterpret_cast<chre::fbs::HubInfoResponseT *>(value);
9674       delete ptr;
9675       break;
9676     }
9677     case ChreMessage::NanoappListRequest: {
9678       auto ptr = reinterpret_cast<chre::fbs::NanoappListRequestT *>(value);
9679       delete ptr;
9680       break;
9681     }
9682     case ChreMessage::NanoappListResponse: {
9683       auto ptr = reinterpret_cast<chre::fbs::NanoappListResponseT *>(value);
9684       delete ptr;
9685       break;
9686     }
9687     case ChreMessage::LoadNanoappRequest: {
9688       auto ptr = reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(value);
9689       delete ptr;
9690       break;
9691     }
9692     case ChreMessage::LoadNanoappResponse: {
9693       auto ptr = reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(value);
9694       delete ptr;
9695       break;
9696     }
9697     case ChreMessage::UnloadNanoappRequest: {
9698       auto ptr = reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(value);
9699       delete ptr;
9700       break;
9701     }
9702     case ChreMessage::UnloadNanoappResponse: {
9703       auto ptr = reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(value);
9704       delete ptr;
9705       break;
9706     }
9707     case ChreMessage::LogMessage: {
9708       auto ptr = reinterpret_cast<chre::fbs::LogMessageT *>(value);
9709       delete ptr;
9710       break;
9711     }
9712     case ChreMessage::TimeSyncMessage: {
9713       auto ptr = reinterpret_cast<chre::fbs::TimeSyncMessageT *>(value);
9714       delete ptr;
9715       break;
9716     }
9717     case ChreMessage::DebugDumpRequest: {
9718       auto ptr = reinterpret_cast<chre::fbs::DebugDumpRequestT *>(value);
9719       delete ptr;
9720       break;
9721     }
9722     case ChreMessage::DebugDumpData: {
9723       auto ptr = reinterpret_cast<chre::fbs::DebugDumpDataT *>(value);
9724       delete ptr;
9725       break;
9726     }
9727     case ChreMessage::DebugDumpResponse: {
9728       auto ptr = reinterpret_cast<chre::fbs::DebugDumpResponseT *>(value);
9729       delete ptr;
9730       break;
9731     }
9732     case ChreMessage::TimeSyncRequest: {
9733       auto ptr = reinterpret_cast<chre::fbs::TimeSyncRequestT *>(value);
9734       delete ptr;
9735       break;
9736     }
9737     case ChreMessage::LowPowerMicAccessRequest: {
9738       auto ptr = reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(value);
9739       delete ptr;
9740       break;
9741     }
9742     case ChreMessage::LowPowerMicAccessRelease: {
9743       auto ptr = reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(value);
9744       delete ptr;
9745       break;
9746     }
9747     case ChreMessage::SettingChangeMessage: {
9748       auto ptr = reinterpret_cast<chre::fbs::SettingChangeMessageT *>(value);
9749       delete ptr;
9750       break;
9751     }
9752     case ChreMessage::LogMessageV2: {
9753       auto ptr = reinterpret_cast<chre::fbs::LogMessageV2T *>(value);
9754       delete ptr;
9755       break;
9756     }
9757     case ChreMessage::SelfTestRequest: {
9758       auto ptr = reinterpret_cast<chre::fbs::SelfTestRequestT *>(value);
9759       delete ptr;
9760       break;
9761     }
9762     case ChreMessage::SelfTestResponse: {
9763       auto ptr = reinterpret_cast<chre::fbs::SelfTestResponseT *>(value);
9764       delete ptr;
9765       break;
9766     }
9767     case ChreMessage::HostEndpointConnected: {
9768       auto ptr = reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(value);
9769       delete ptr;
9770       break;
9771     }
9772     case ChreMessage::HostEndpointDisconnected: {
9773       auto ptr = reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(value);
9774       delete ptr;
9775       break;
9776     }
9777     case ChreMessage::MetricLog: {
9778       auto ptr = reinterpret_cast<chre::fbs::MetricLogT *>(value);
9779       delete ptr;
9780       break;
9781     }
9782     case ChreMessage::BatchedMetricLog: {
9783       auto ptr = reinterpret_cast<chre::fbs::BatchedMetricLogT *>(value);
9784       delete ptr;
9785       break;
9786     }
9787     case ChreMessage::NanConfigurationRequest: {
9788       auto ptr = reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(value);
9789       delete ptr;
9790       break;
9791     }
9792     case ChreMessage::NanConfigurationUpdate: {
9793       auto ptr = reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(value);
9794       delete ptr;
9795       break;
9796     }
9797     case ChreMessage::DebugConfiguration: {
9798       auto ptr = reinterpret_cast<chre::fbs::DebugConfigurationT *>(value);
9799       delete ptr;
9800       break;
9801     }
9802     case ChreMessage::PulseRequest: {
9803       auto ptr = reinterpret_cast<chre::fbs::PulseRequestT *>(value);
9804       delete ptr;
9805       break;
9806     }
9807     case ChreMessage::PulseResponse: {
9808       auto ptr = reinterpret_cast<chre::fbs::PulseResponseT *>(value);
9809       delete ptr;
9810       break;
9811     }
9812     case ChreMessage::NanoappTokenDatabaseInfo: {
9813       auto ptr = reinterpret_cast<chre::fbs::NanoappTokenDatabaseInfoT *>(value);
9814       delete ptr;
9815       break;
9816     }
9817     case ChreMessage::MessageDeliveryStatus: {
9818       auto ptr = reinterpret_cast<chre::fbs::MessageDeliveryStatusT *>(value);
9819       delete ptr;
9820       break;
9821     }
9822     case ChreMessage::BtSocketOpen: {
9823       auto ptr = reinterpret_cast<chre::fbs::BtSocketOpenT *>(value);
9824       delete ptr;
9825       break;
9826     }
9827     case ChreMessage::BtSocketOpenResponse: {
9828       auto ptr = reinterpret_cast<chre::fbs::BtSocketOpenResponseT *>(value);
9829       delete ptr;
9830       break;
9831     }
9832     case ChreMessage::BtSocketClose: {
9833       auto ptr = reinterpret_cast<chre::fbs::BtSocketCloseT *>(value);
9834       delete ptr;
9835       break;
9836     }
9837     case ChreMessage::BtSocketCloseResponse: {
9838       auto ptr = reinterpret_cast<chre::fbs::BtSocketCloseResponseT *>(value);
9839       delete ptr;
9840       break;
9841     }
9842     case ChreMessage::GetMessageHubsAndEndpointsRequest: {
9843       auto ptr = reinterpret_cast<chre::fbs::GetMessageHubsAndEndpointsRequestT *>(value);
9844       delete ptr;
9845       break;
9846     }
9847     case ChreMessage::GetMessageHubsAndEndpointsResponse: {
9848       auto ptr = reinterpret_cast<chre::fbs::GetMessageHubsAndEndpointsResponseT *>(value);
9849       delete ptr;
9850       break;
9851     }
9852     case ChreMessage::RegisterMessageHub: {
9853       auto ptr = reinterpret_cast<chre::fbs::RegisterMessageHubT *>(value);
9854       delete ptr;
9855       break;
9856     }
9857     case ChreMessage::UnregisterMessageHub: {
9858       auto ptr = reinterpret_cast<chre::fbs::UnregisterMessageHubT *>(value);
9859       delete ptr;
9860       break;
9861     }
9862     case ChreMessage::RegisterEndpoint: {
9863       auto ptr = reinterpret_cast<chre::fbs::RegisterEndpointT *>(value);
9864       delete ptr;
9865       break;
9866     }
9867     case ChreMessage::UnregisterEndpoint: {
9868       auto ptr = reinterpret_cast<chre::fbs::UnregisterEndpointT *>(value);
9869       delete ptr;
9870       break;
9871     }
9872     case ChreMessage::OpenEndpointSessionRequest: {
9873       auto ptr = reinterpret_cast<chre::fbs::OpenEndpointSessionRequestT *>(value);
9874       delete ptr;
9875       break;
9876     }
9877     case ChreMessage::EndpointSessionOpened: {
9878       auto ptr = reinterpret_cast<chre::fbs::EndpointSessionOpenedT *>(value);
9879       delete ptr;
9880       break;
9881     }
9882     case ChreMessage::EndpointSessionClosed: {
9883       auto ptr = reinterpret_cast<chre::fbs::EndpointSessionClosedT *>(value);
9884       delete ptr;
9885       break;
9886     }
9887     case ChreMessage::EndpointSessionMessage: {
9888       auto ptr = reinterpret_cast<chre::fbs::EndpointSessionMessageT *>(value);
9889       delete ptr;
9890       break;
9891     }
9892     case ChreMessage::EndpointSessionMessageDeliveryStatus: {
9893       auto ptr = reinterpret_cast<chre::fbs::EndpointSessionMessageDeliveryStatusT *>(value);
9894       delete ptr;
9895       break;
9896     }
9897     default: break;
9898   }
9899   value = nullptr;
9900   type = ChreMessage::NONE;
9901 }
9902 
9903 inline const chre::fbs::MessageContainer *GetMessageContainer(const void *buf) {
9904   return flatbuffers::GetRoot<chre::fbs::MessageContainer>(buf);
9905 }
9906 
9907 inline const chre::fbs::MessageContainer *GetSizePrefixedMessageContainer(const void *buf) {
9908   return flatbuffers::GetSizePrefixedRoot<chre::fbs::MessageContainer>(buf);
9909 }
9910 
9911 inline MessageContainer *GetMutableMessageContainer(void *buf) {
9912   return flatbuffers::GetMutableRoot<MessageContainer>(buf);
9913 }
9914 
9915 inline bool VerifyMessageContainerBuffer(
9916     flatbuffers::Verifier &verifier) {
9917   return verifier.VerifyBuffer<chre::fbs::MessageContainer>(nullptr);
9918 }
9919 
9920 inline bool VerifySizePrefixedMessageContainerBuffer(
9921     flatbuffers::Verifier &verifier) {
9922   return verifier.VerifySizePrefixedBuffer<chre::fbs::MessageContainer>(nullptr);
9923 }
9924 
9925 inline void FinishMessageContainerBuffer(
9926     flatbuffers::FlatBufferBuilder &fbb,
9927     flatbuffers::Offset<chre::fbs::MessageContainer> root) {
9928   fbb.Finish(root);
9929 }
9930 
9931 inline void FinishSizePrefixedMessageContainerBuffer(
9932     flatbuffers::FlatBufferBuilder &fbb,
9933     flatbuffers::Offset<chre::fbs::MessageContainer> root) {
9934   fbb.FinishSizePrefixed(root);
9935 }
9936 
9937 inline std::unique_ptr<chre::fbs::MessageContainerT> UnPackMessageContainer(
9938     const void *buf,
9939     const flatbuffers::resolver_function_t *res = nullptr) {
9940   return std::unique_ptr<chre::fbs::MessageContainerT>(GetMessageContainer(buf)->UnPack(res));
9941 }
9942 
9943 inline std::unique_ptr<chre::fbs::MessageContainerT> UnPackSizePrefixedMessageContainer(
9944     const void *buf,
9945     const flatbuffers::resolver_function_t *res = nullptr) {
9946   return std::unique_ptr<chre::fbs::MessageContainerT>(GetSizePrefixedMessageContainer(buf)->UnPack(res));
9947 }
9948 
9949 }  // namespace fbs
9950 }  // namespace chre
9951 
9952 #endif  // FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
9953