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