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 HubInfoRequest;
17 struct HubInfoRequestBuilder;
18 struct HubInfoRequestT;
19 
20 struct HubInfoResponse;
21 struct HubInfoResponseBuilder;
22 struct HubInfoResponseT;
23 
24 struct NanoappListRequest;
25 struct NanoappListRequestBuilder;
26 struct NanoappListRequestT;
27 
28 struct NanoappRpcService;
29 struct NanoappRpcServiceBuilder;
30 struct NanoappRpcServiceT;
31 
32 struct NanoappListEntry;
33 struct NanoappListEntryBuilder;
34 struct NanoappListEntryT;
35 
36 struct NanoappListResponse;
37 struct NanoappListResponseBuilder;
38 struct NanoappListResponseT;
39 
40 struct LoadNanoappRequest;
41 struct LoadNanoappRequestBuilder;
42 struct LoadNanoappRequestT;
43 
44 struct LoadNanoappResponse;
45 struct LoadNanoappResponseBuilder;
46 struct LoadNanoappResponseT;
47 
48 struct UnloadNanoappRequest;
49 struct UnloadNanoappRequestBuilder;
50 struct UnloadNanoappRequestT;
51 
52 struct UnloadNanoappResponse;
53 struct UnloadNanoappResponseBuilder;
54 struct UnloadNanoappResponseT;
55 
56 struct LogMessage;
57 struct LogMessageBuilder;
58 struct LogMessageT;
59 
60 struct TimeSyncMessage;
61 struct TimeSyncMessageBuilder;
62 struct TimeSyncMessageT;
63 
64 struct DebugDumpRequest;
65 struct DebugDumpRequestBuilder;
66 struct DebugDumpRequestT;
67 
68 struct DebugDumpData;
69 struct DebugDumpDataBuilder;
70 struct DebugDumpDataT;
71 
72 struct DebugDumpResponse;
73 struct DebugDumpResponseBuilder;
74 struct DebugDumpResponseT;
75 
76 struct TimeSyncRequest;
77 struct TimeSyncRequestBuilder;
78 struct TimeSyncRequestT;
79 
80 struct LowPowerMicAccessRequest;
81 struct LowPowerMicAccessRequestBuilder;
82 struct LowPowerMicAccessRequestT;
83 
84 struct LowPowerMicAccessRelease;
85 struct LowPowerMicAccessReleaseBuilder;
86 struct LowPowerMicAccessReleaseT;
87 
88 struct SettingChangeMessage;
89 struct SettingChangeMessageBuilder;
90 struct SettingChangeMessageT;
91 
92 struct LogMessageV2;
93 struct LogMessageV2Builder;
94 struct LogMessageV2T;
95 
96 struct SelfTestRequest;
97 struct SelfTestRequestBuilder;
98 struct SelfTestRequestT;
99 
100 struct SelfTestResponse;
101 struct SelfTestResponseBuilder;
102 struct SelfTestResponseT;
103 
104 struct HostEndpointConnected;
105 struct HostEndpointConnectedBuilder;
106 struct HostEndpointConnectedT;
107 
108 struct HostEndpointDisconnected;
109 struct HostEndpointDisconnectedBuilder;
110 struct HostEndpointDisconnectedT;
111 
112 struct MetricLog;
113 struct MetricLogBuilder;
114 struct MetricLogT;
115 
116 struct BatchedMetricLog;
117 struct BatchedMetricLogBuilder;
118 struct BatchedMetricLogT;
119 
120 struct NanConfigurationRequest;
121 struct NanConfigurationRequestBuilder;
122 struct NanConfigurationRequestT;
123 
124 struct NanConfigurationUpdate;
125 struct NanConfigurationUpdateBuilder;
126 struct NanConfigurationUpdateT;
127 
128 struct DebugConfiguration;
129 struct DebugConfigurationBuilder;
130 struct DebugConfigurationT;
131 
132 struct HostAddress;
133 
134 struct MessageContainer;
135 struct MessageContainerBuilder;
136 struct MessageContainerT;
137 
138 /// An enum describing the setting type.
139 enum class Setting : int8_t {
140   LOCATION = 0,
141   WIFI_AVAILABLE = 1,
142   AIRPLANE_MODE = 2,
143   MICROPHONE = 3,
144   BLE_AVAILABLE = 4,
145   MIN = LOCATION,
146   MAX = BLE_AVAILABLE
147 };
148 
EnumValuesSetting()149 inline const Setting (&EnumValuesSetting())[5] {
150   static const Setting values[] = {
151     Setting::LOCATION,
152     Setting::WIFI_AVAILABLE,
153     Setting::AIRPLANE_MODE,
154     Setting::MICROPHONE,
155     Setting::BLE_AVAILABLE
156   };
157   return values;
158 }
159 
EnumNamesSetting()160 inline const char * const *EnumNamesSetting() {
161   static const char * const names[6] = {
162     "LOCATION",
163     "WIFI_AVAILABLE",
164     "AIRPLANE_MODE",
165     "MICROPHONE",
166     "BLE_AVAILABLE",
167     nullptr
168   };
169   return names;
170 }
171 
EnumNameSetting(Setting e)172 inline const char *EnumNameSetting(Setting e) {
173   if (flatbuffers::IsOutRange(e, Setting::LOCATION, Setting::BLE_AVAILABLE)) return "";
174   const size_t index = static_cast<size_t>(e);
175   return EnumNamesSetting()[index];
176 }
177 
178 /// An enum describing the state of a setting.
179 enum class SettingState : int8_t {
180   DISABLED = 0,
181   ENABLED = 1,
182   MIN = DISABLED,
183   MAX = ENABLED
184 };
185 
EnumValuesSettingState()186 inline const SettingState (&EnumValuesSettingState())[2] {
187   static const SettingState values[] = {
188     SettingState::DISABLED,
189     SettingState::ENABLED
190   };
191   return values;
192 }
193 
EnumNamesSettingState()194 inline const char * const *EnumNamesSettingState() {
195   static const char * const names[3] = {
196     "DISABLED",
197     "ENABLED",
198     nullptr
199   };
200   return names;
201 }
202 
EnumNameSettingState(SettingState e)203 inline const char *EnumNameSettingState(SettingState e) {
204   if (flatbuffers::IsOutRange(e, SettingState::DISABLED, SettingState::ENABLED)) return "";
205   const size_t index = static_cast<size_t>(e);
206   return EnumNamesSettingState()[index];
207 }
208 
209 enum class LogLevel : int8_t {
210   ERROR = 1,
211   WARNING = 2,
212   INFO = 3,
213   DEBUG = 4,
214   VERBOSE = 5,
215   MIN = ERROR,
216   MAX = VERBOSE
217 };
218 
EnumValuesLogLevel()219 inline const LogLevel (&EnumValuesLogLevel())[5] {
220   static const LogLevel values[] = {
221     LogLevel::ERROR,
222     LogLevel::WARNING,
223     LogLevel::INFO,
224     LogLevel::DEBUG,
225     LogLevel::VERBOSE
226   };
227   return values;
228 }
229 
EnumNamesLogLevel()230 inline const char * const *EnumNamesLogLevel() {
231   static const char * const names[6] = {
232     "ERROR",
233     "WARNING",
234     "INFO",
235     "DEBUG",
236     "VERBOSE",
237     nullptr
238   };
239   return names;
240 }
241 
EnumNameLogLevel(LogLevel e)242 inline const char *EnumNameLogLevel(LogLevel e) {
243   if (flatbuffers::IsOutRange(e, LogLevel::ERROR, LogLevel::VERBOSE)) return "";
244   const size_t index = static_cast<size_t>(e) - static_cast<size_t>(LogLevel::ERROR);
245   return EnumNamesLogLevel()[index];
246 }
247 
248 enum class LogType : int8_t {
249   STRING = 0,
250   TOKENIZED = 1,
251   BLUETOOTH = 2,
252   MIN = STRING,
253   MAX = BLUETOOTH
254 };
255 
EnumValuesLogType()256 inline const LogType (&EnumValuesLogType())[3] {
257   static const LogType values[] = {
258     LogType::STRING,
259     LogType::TOKENIZED,
260     LogType::BLUETOOTH
261   };
262   return values;
263 }
264 
EnumNamesLogType()265 inline const char * const *EnumNamesLogType() {
266   static const char * const names[4] = {
267     "STRING",
268     "TOKENIZED",
269     "BLUETOOTH",
270     nullptr
271   };
272   return names;
273 }
274 
EnumNameLogType(LogType e)275 inline const char *EnumNameLogType(LogType e) {
276   if (flatbuffers::IsOutRange(e, LogType::STRING, LogType::BLUETOOTH)) return "";
277   const size_t index = static_cast<size_t>(e);
278   return EnumNamesLogType()[index];
279 }
280 
281 enum class BtSnoopDirection : int8_t {
282   INCOMING_FROM_BT_CONTROLLER = 0,
283   OUTGOING_TO_ARBITER = 1,
284   MIN = INCOMING_FROM_BT_CONTROLLER,
285   MAX = OUTGOING_TO_ARBITER
286 };
287 
EnumValuesBtSnoopDirection()288 inline const BtSnoopDirection (&EnumValuesBtSnoopDirection())[2] {
289   static const BtSnoopDirection values[] = {
290     BtSnoopDirection::INCOMING_FROM_BT_CONTROLLER,
291     BtSnoopDirection::OUTGOING_TO_ARBITER
292   };
293   return values;
294 }
295 
EnumNamesBtSnoopDirection()296 inline const char * const *EnumNamesBtSnoopDirection() {
297   static const char * const names[3] = {
298     "INCOMING_FROM_BT_CONTROLLER",
299     "OUTGOING_TO_ARBITER",
300     nullptr
301   };
302   return names;
303 }
304 
EnumNameBtSnoopDirection(BtSnoopDirection e)305 inline const char *EnumNameBtSnoopDirection(BtSnoopDirection e) {
306   if (flatbuffers::IsOutRange(e, BtSnoopDirection::INCOMING_FROM_BT_CONTROLLER, BtSnoopDirection::OUTGOING_TO_ARBITER)) return "";
307   const size_t index = static_cast<size_t>(e);
308   return EnumNamesBtSnoopDirection()[index];
309 }
310 
311 /// A union that joins together all possible messages. Note that in FlatBuffers,
312 /// unions have an implicit type
313 enum class ChreMessage : uint8_t {
314   NONE = 0,
315   NanoappMessage = 1,
316   HubInfoRequest = 2,
317   HubInfoResponse = 3,
318   NanoappListRequest = 4,
319   NanoappListResponse = 5,
320   LoadNanoappRequest = 6,
321   LoadNanoappResponse = 7,
322   UnloadNanoappRequest = 8,
323   UnloadNanoappResponse = 9,
324   LogMessage = 10,
325   TimeSyncMessage = 11,
326   DebugDumpRequest = 12,
327   DebugDumpData = 13,
328   DebugDumpResponse = 14,
329   TimeSyncRequest = 15,
330   LowPowerMicAccessRequest = 16,
331   LowPowerMicAccessRelease = 17,
332   SettingChangeMessage = 18,
333   LogMessageV2 = 19,
334   SelfTestRequest = 20,
335   SelfTestResponse = 21,
336   HostEndpointConnected = 22,
337   HostEndpointDisconnected = 23,
338   MetricLog = 24,
339   BatchedMetricLog = 25,
340   NanConfigurationRequest = 26,
341   NanConfigurationUpdate = 27,
342   DebugConfiguration = 28,
343   MIN = NONE,
344   MAX = DebugConfiguration
345 };
346 
EnumValuesChreMessage()347 inline const ChreMessage (&EnumValuesChreMessage())[29] {
348   static const ChreMessage values[] = {
349     ChreMessage::NONE,
350     ChreMessage::NanoappMessage,
351     ChreMessage::HubInfoRequest,
352     ChreMessage::HubInfoResponse,
353     ChreMessage::NanoappListRequest,
354     ChreMessage::NanoappListResponse,
355     ChreMessage::LoadNanoappRequest,
356     ChreMessage::LoadNanoappResponse,
357     ChreMessage::UnloadNanoappRequest,
358     ChreMessage::UnloadNanoappResponse,
359     ChreMessage::LogMessage,
360     ChreMessage::TimeSyncMessage,
361     ChreMessage::DebugDumpRequest,
362     ChreMessage::DebugDumpData,
363     ChreMessage::DebugDumpResponse,
364     ChreMessage::TimeSyncRequest,
365     ChreMessage::LowPowerMicAccessRequest,
366     ChreMessage::LowPowerMicAccessRelease,
367     ChreMessage::SettingChangeMessage,
368     ChreMessage::LogMessageV2,
369     ChreMessage::SelfTestRequest,
370     ChreMessage::SelfTestResponse,
371     ChreMessage::HostEndpointConnected,
372     ChreMessage::HostEndpointDisconnected,
373     ChreMessage::MetricLog,
374     ChreMessage::BatchedMetricLog,
375     ChreMessage::NanConfigurationRequest,
376     ChreMessage::NanConfigurationUpdate,
377     ChreMessage::DebugConfiguration
378   };
379   return values;
380 }
381 
EnumNamesChreMessage()382 inline const char * const *EnumNamesChreMessage() {
383   static const char * const names[30] = {
384     "NONE",
385     "NanoappMessage",
386     "HubInfoRequest",
387     "HubInfoResponse",
388     "NanoappListRequest",
389     "NanoappListResponse",
390     "LoadNanoappRequest",
391     "LoadNanoappResponse",
392     "UnloadNanoappRequest",
393     "UnloadNanoappResponse",
394     "LogMessage",
395     "TimeSyncMessage",
396     "DebugDumpRequest",
397     "DebugDumpData",
398     "DebugDumpResponse",
399     "TimeSyncRequest",
400     "LowPowerMicAccessRequest",
401     "LowPowerMicAccessRelease",
402     "SettingChangeMessage",
403     "LogMessageV2",
404     "SelfTestRequest",
405     "SelfTestResponse",
406     "HostEndpointConnected",
407     "HostEndpointDisconnected",
408     "MetricLog",
409     "BatchedMetricLog",
410     "NanConfigurationRequest",
411     "NanConfigurationUpdate",
412     "DebugConfiguration",
413     nullptr
414   };
415   return names;
416 }
417 
EnumNameChreMessage(ChreMessage e)418 inline const char *EnumNameChreMessage(ChreMessage e) {
419   if (flatbuffers::IsOutRange(e, ChreMessage::NONE, ChreMessage::DebugConfiguration)) return "";
420   const size_t index = static_cast<size_t>(e);
421   return EnumNamesChreMessage()[index];
422 }
423 
424 template<typename T> struct ChreMessageTraits {
425   static const ChreMessage enum_value = ChreMessage::NONE;
426 };
427 
428 template<> struct ChreMessageTraits<chre::fbs::NanoappMessage> {
429   static const ChreMessage enum_value = ChreMessage::NanoappMessage;
430 };
431 
432 template<> struct ChreMessageTraits<chre::fbs::HubInfoRequest> {
433   static const ChreMessage enum_value = ChreMessage::HubInfoRequest;
434 };
435 
436 template<> struct ChreMessageTraits<chre::fbs::HubInfoResponse> {
437   static const ChreMessage enum_value = ChreMessage::HubInfoResponse;
438 };
439 
440 template<> struct ChreMessageTraits<chre::fbs::NanoappListRequest> {
441   static const ChreMessage enum_value = ChreMessage::NanoappListRequest;
442 };
443 
444 template<> struct ChreMessageTraits<chre::fbs::NanoappListResponse> {
445   static const ChreMessage enum_value = ChreMessage::NanoappListResponse;
446 };
447 
448 template<> struct ChreMessageTraits<chre::fbs::LoadNanoappRequest> {
449   static const ChreMessage enum_value = ChreMessage::LoadNanoappRequest;
450 };
451 
452 template<> struct ChreMessageTraits<chre::fbs::LoadNanoappResponse> {
453   static const ChreMessage enum_value = ChreMessage::LoadNanoappResponse;
454 };
455 
456 template<> struct ChreMessageTraits<chre::fbs::UnloadNanoappRequest> {
457   static const ChreMessage enum_value = ChreMessage::UnloadNanoappRequest;
458 };
459 
460 template<> struct ChreMessageTraits<chre::fbs::UnloadNanoappResponse> {
461   static const ChreMessage enum_value = ChreMessage::UnloadNanoappResponse;
462 };
463 
464 template<> struct ChreMessageTraits<chre::fbs::LogMessage> {
465   static const ChreMessage enum_value = ChreMessage::LogMessage;
466 };
467 
468 template<> struct ChreMessageTraits<chre::fbs::TimeSyncMessage> {
469   static const ChreMessage enum_value = ChreMessage::TimeSyncMessage;
470 };
471 
472 template<> struct ChreMessageTraits<chre::fbs::DebugDumpRequest> {
473   static const ChreMessage enum_value = ChreMessage::DebugDumpRequest;
474 };
475 
476 template<> struct ChreMessageTraits<chre::fbs::DebugDumpData> {
477   static const ChreMessage enum_value = ChreMessage::DebugDumpData;
478 };
479 
480 template<> struct ChreMessageTraits<chre::fbs::DebugDumpResponse> {
481   static const ChreMessage enum_value = ChreMessage::DebugDumpResponse;
482 };
483 
484 template<> struct ChreMessageTraits<chre::fbs::TimeSyncRequest> {
485   static const ChreMessage enum_value = ChreMessage::TimeSyncRequest;
486 };
487 
488 template<> struct ChreMessageTraits<chre::fbs::LowPowerMicAccessRequest> {
489   static const ChreMessage enum_value = ChreMessage::LowPowerMicAccessRequest;
490 };
491 
492 template<> struct ChreMessageTraits<chre::fbs::LowPowerMicAccessRelease> {
493   static const ChreMessage enum_value = ChreMessage::LowPowerMicAccessRelease;
494 };
495 
496 template<> struct ChreMessageTraits<chre::fbs::SettingChangeMessage> {
497   static const ChreMessage enum_value = ChreMessage::SettingChangeMessage;
498 };
499 
500 template<> struct ChreMessageTraits<chre::fbs::LogMessageV2> {
501   static const ChreMessage enum_value = ChreMessage::LogMessageV2;
502 };
503 
504 template<> struct ChreMessageTraits<chre::fbs::SelfTestRequest> {
505   static const ChreMessage enum_value = ChreMessage::SelfTestRequest;
506 };
507 
508 template<> struct ChreMessageTraits<chre::fbs::SelfTestResponse> {
509   static const ChreMessage enum_value = ChreMessage::SelfTestResponse;
510 };
511 
512 template<> struct ChreMessageTraits<chre::fbs::HostEndpointConnected> {
513   static const ChreMessage enum_value = ChreMessage::HostEndpointConnected;
514 };
515 
516 template<> struct ChreMessageTraits<chre::fbs::HostEndpointDisconnected> {
517   static const ChreMessage enum_value = ChreMessage::HostEndpointDisconnected;
518 };
519 
520 template<> struct ChreMessageTraits<chre::fbs::MetricLog> {
521   static const ChreMessage enum_value = ChreMessage::MetricLog;
522 };
523 
524 template<> struct ChreMessageTraits<chre::fbs::BatchedMetricLog> {
525   static const ChreMessage enum_value = ChreMessage::BatchedMetricLog;
526 };
527 
528 template<> struct ChreMessageTraits<chre::fbs::NanConfigurationRequest> {
529   static const ChreMessage enum_value = ChreMessage::NanConfigurationRequest;
530 };
531 
532 template<> struct ChreMessageTraits<chre::fbs::NanConfigurationUpdate> {
533   static const ChreMessage enum_value = ChreMessage::NanConfigurationUpdate;
534 };
535 
536 template<> struct ChreMessageTraits<chre::fbs::DebugConfiguration> {
537   static const ChreMessage enum_value = ChreMessage::DebugConfiguration;
538 };
539 
540 struct ChreMessageUnion {
541   ChreMessage type;
542   void *value;
543 
544   ChreMessageUnion() : type(ChreMessage::NONE), value(nullptr) {}
545   ChreMessageUnion(ChreMessageUnion&& u) FLATBUFFERS_NOEXCEPT :
546     type(ChreMessage::NONE), value(nullptr)
547     { std::swap(type, u.type); std::swap(value, u.value); }
548   ChreMessageUnion(const ChreMessageUnion &);
549   ChreMessageUnion &operator=(const ChreMessageUnion &u)
550     { ChreMessageUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
551   ChreMessageUnion &operator=(ChreMessageUnion &&u) FLATBUFFERS_NOEXCEPT
552     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
553   ~ChreMessageUnion() { Reset(); }
554 
555   void Reset();
556 
557 #ifndef FLATBUFFERS_CPP98_STL
558   template <typename T>
559   void Set(T&& val) {
560     using RT = typename std::remove_reference<T>::type;
561     Reset();
562     type = ChreMessageTraits<typename RT::TableType>::enum_value;
563     if (type != ChreMessage::NONE) {
564       value = new RT(std::forward<T>(val));
565     }
566   }
567 #endif  // FLATBUFFERS_CPP98_STL
568 
569   static void *UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver);
570   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
571 
572   chre::fbs::NanoappMessageT *AsNanoappMessage() {
573     return type == ChreMessage::NanoappMessage ?
574       reinterpret_cast<chre::fbs::NanoappMessageT *>(value) : nullptr;
575   }
576   const chre::fbs::NanoappMessageT *AsNanoappMessage() const {
577     return type == ChreMessage::NanoappMessage ?
578       reinterpret_cast<const chre::fbs::NanoappMessageT *>(value) : nullptr;
579   }
580   chre::fbs::HubInfoRequestT *AsHubInfoRequest() {
581     return type == ChreMessage::HubInfoRequest ?
582       reinterpret_cast<chre::fbs::HubInfoRequestT *>(value) : nullptr;
583   }
584   const chre::fbs::HubInfoRequestT *AsHubInfoRequest() const {
585     return type == ChreMessage::HubInfoRequest ?
586       reinterpret_cast<const chre::fbs::HubInfoRequestT *>(value) : nullptr;
587   }
588   chre::fbs::HubInfoResponseT *AsHubInfoResponse() {
589     return type == ChreMessage::HubInfoResponse ?
590       reinterpret_cast<chre::fbs::HubInfoResponseT *>(value) : nullptr;
591   }
592   const chre::fbs::HubInfoResponseT *AsHubInfoResponse() const {
593     return type == ChreMessage::HubInfoResponse ?
594       reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value) : nullptr;
595   }
596   chre::fbs::NanoappListRequestT *AsNanoappListRequest() {
597     return type == ChreMessage::NanoappListRequest ?
598       reinterpret_cast<chre::fbs::NanoappListRequestT *>(value) : nullptr;
599   }
600   const chre::fbs::NanoappListRequestT *AsNanoappListRequest() const {
601     return type == ChreMessage::NanoappListRequest ?
602       reinterpret_cast<const chre::fbs::NanoappListRequestT *>(value) : nullptr;
603   }
604   chre::fbs::NanoappListResponseT *AsNanoappListResponse() {
605     return type == ChreMessage::NanoappListResponse ?
606       reinterpret_cast<chre::fbs::NanoappListResponseT *>(value) : nullptr;
607   }
608   const chre::fbs::NanoappListResponseT *AsNanoappListResponse() const {
609     return type == ChreMessage::NanoappListResponse ?
610       reinterpret_cast<const chre::fbs::NanoappListResponseT *>(value) : nullptr;
611   }
612   chre::fbs::LoadNanoappRequestT *AsLoadNanoappRequest() {
613     return type == ChreMessage::LoadNanoappRequest ?
614       reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(value) : nullptr;
615   }
616   const chre::fbs::LoadNanoappRequestT *AsLoadNanoappRequest() const {
617     return type == ChreMessage::LoadNanoappRequest ?
618       reinterpret_cast<const chre::fbs::LoadNanoappRequestT *>(value) : nullptr;
619   }
620   chre::fbs::LoadNanoappResponseT *AsLoadNanoappResponse() {
621     return type == ChreMessage::LoadNanoappResponse ?
622       reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(value) : nullptr;
623   }
624   const chre::fbs::LoadNanoappResponseT *AsLoadNanoappResponse() const {
625     return type == ChreMessage::LoadNanoappResponse ?
626       reinterpret_cast<const chre::fbs::LoadNanoappResponseT *>(value) : nullptr;
627   }
628   chre::fbs::UnloadNanoappRequestT *AsUnloadNanoappRequest() {
629     return type == ChreMessage::UnloadNanoappRequest ?
630       reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(value) : nullptr;
631   }
632   const chre::fbs::UnloadNanoappRequestT *AsUnloadNanoappRequest() const {
633     return type == ChreMessage::UnloadNanoappRequest ?
634       reinterpret_cast<const chre::fbs::UnloadNanoappRequestT *>(value) : nullptr;
635   }
636   chre::fbs::UnloadNanoappResponseT *AsUnloadNanoappResponse() {
637     return type == ChreMessage::UnloadNanoappResponse ?
638       reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(value) : nullptr;
639   }
640   const chre::fbs::UnloadNanoappResponseT *AsUnloadNanoappResponse() const {
641     return type == ChreMessage::UnloadNanoappResponse ?
642       reinterpret_cast<const chre::fbs::UnloadNanoappResponseT *>(value) : nullptr;
643   }
644   chre::fbs::LogMessageT *AsLogMessage() {
645     return type == ChreMessage::LogMessage ?
646       reinterpret_cast<chre::fbs::LogMessageT *>(value) : nullptr;
647   }
648   const chre::fbs::LogMessageT *AsLogMessage() const {
649     return type == ChreMessage::LogMessage ?
650       reinterpret_cast<const chre::fbs::LogMessageT *>(value) : nullptr;
651   }
652   chre::fbs::TimeSyncMessageT *AsTimeSyncMessage() {
653     return type == ChreMessage::TimeSyncMessage ?
654       reinterpret_cast<chre::fbs::TimeSyncMessageT *>(value) : nullptr;
655   }
656   const chre::fbs::TimeSyncMessageT *AsTimeSyncMessage() const {
657     return type == ChreMessage::TimeSyncMessage ?
658       reinterpret_cast<const chre::fbs::TimeSyncMessageT *>(value) : nullptr;
659   }
660   chre::fbs::DebugDumpRequestT *AsDebugDumpRequest() {
661     return type == ChreMessage::DebugDumpRequest ?
662       reinterpret_cast<chre::fbs::DebugDumpRequestT *>(value) : nullptr;
663   }
664   const chre::fbs::DebugDumpRequestT *AsDebugDumpRequest() const {
665     return type == ChreMessage::DebugDumpRequest ?
666       reinterpret_cast<const chre::fbs::DebugDumpRequestT *>(value) : nullptr;
667   }
668   chre::fbs::DebugDumpDataT *AsDebugDumpData() {
669     return type == ChreMessage::DebugDumpData ?
670       reinterpret_cast<chre::fbs::DebugDumpDataT *>(value) : nullptr;
671   }
672   const chre::fbs::DebugDumpDataT *AsDebugDumpData() const {
673     return type == ChreMessage::DebugDumpData ?
674       reinterpret_cast<const chre::fbs::DebugDumpDataT *>(value) : nullptr;
675   }
676   chre::fbs::DebugDumpResponseT *AsDebugDumpResponse() {
677     return type == ChreMessage::DebugDumpResponse ?
678       reinterpret_cast<chre::fbs::DebugDumpResponseT *>(value) : nullptr;
679   }
680   const chre::fbs::DebugDumpResponseT *AsDebugDumpResponse() const {
681     return type == ChreMessage::DebugDumpResponse ?
682       reinterpret_cast<const chre::fbs::DebugDumpResponseT *>(value) : nullptr;
683   }
684   chre::fbs::TimeSyncRequestT *AsTimeSyncRequest() {
685     return type == ChreMessage::TimeSyncRequest ?
686       reinterpret_cast<chre::fbs::TimeSyncRequestT *>(value) : nullptr;
687   }
688   const chre::fbs::TimeSyncRequestT *AsTimeSyncRequest() const {
689     return type == ChreMessage::TimeSyncRequest ?
690       reinterpret_cast<const chre::fbs::TimeSyncRequestT *>(value) : nullptr;
691   }
692   chre::fbs::LowPowerMicAccessRequestT *AsLowPowerMicAccessRequest() {
693     return type == ChreMessage::LowPowerMicAccessRequest ?
694       reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(value) : nullptr;
695   }
696   const chre::fbs::LowPowerMicAccessRequestT *AsLowPowerMicAccessRequest() const {
697     return type == ChreMessage::LowPowerMicAccessRequest ?
698       reinterpret_cast<const chre::fbs::LowPowerMicAccessRequestT *>(value) : nullptr;
699   }
700   chre::fbs::LowPowerMicAccessReleaseT *AsLowPowerMicAccessRelease() {
701     return type == ChreMessage::LowPowerMicAccessRelease ?
702       reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(value) : nullptr;
703   }
704   const chre::fbs::LowPowerMicAccessReleaseT *AsLowPowerMicAccessRelease() const {
705     return type == ChreMessage::LowPowerMicAccessRelease ?
706       reinterpret_cast<const chre::fbs::LowPowerMicAccessReleaseT *>(value) : nullptr;
707   }
708   chre::fbs::SettingChangeMessageT *AsSettingChangeMessage() {
709     return type == ChreMessage::SettingChangeMessage ?
710       reinterpret_cast<chre::fbs::SettingChangeMessageT *>(value) : nullptr;
711   }
712   const chre::fbs::SettingChangeMessageT *AsSettingChangeMessage() const {
713     return type == ChreMessage::SettingChangeMessage ?
714       reinterpret_cast<const chre::fbs::SettingChangeMessageT *>(value) : nullptr;
715   }
716   chre::fbs::LogMessageV2T *AsLogMessageV2() {
717     return type == ChreMessage::LogMessageV2 ?
718       reinterpret_cast<chre::fbs::LogMessageV2T *>(value) : nullptr;
719   }
720   const chre::fbs::LogMessageV2T *AsLogMessageV2() const {
721     return type == ChreMessage::LogMessageV2 ?
722       reinterpret_cast<const chre::fbs::LogMessageV2T *>(value) : nullptr;
723   }
724   chre::fbs::SelfTestRequestT *AsSelfTestRequest() {
725     return type == ChreMessage::SelfTestRequest ?
726       reinterpret_cast<chre::fbs::SelfTestRequestT *>(value) : nullptr;
727   }
728   const chre::fbs::SelfTestRequestT *AsSelfTestRequest() const {
729     return type == ChreMessage::SelfTestRequest ?
730       reinterpret_cast<const chre::fbs::SelfTestRequestT *>(value) : nullptr;
731   }
732   chre::fbs::SelfTestResponseT *AsSelfTestResponse() {
733     return type == ChreMessage::SelfTestResponse ?
734       reinterpret_cast<chre::fbs::SelfTestResponseT *>(value) : nullptr;
735   }
736   const chre::fbs::SelfTestResponseT *AsSelfTestResponse() const {
737     return type == ChreMessage::SelfTestResponse ?
738       reinterpret_cast<const chre::fbs::SelfTestResponseT *>(value) : nullptr;
739   }
740   chre::fbs::HostEndpointConnectedT *AsHostEndpointConnected() {
741     return type == ChreMessage::HostEndpointConnected ?
742       reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(value) : nullptr;
743   }
744   const chre::fbs::HostEndpointConnectedT *AsHostEndpointConnected() const {
745     return type == ChreMessage::HostEndpointConnected ?
746       reinterpret_cast<const chre::fbs::HostEndpointConnectedT *>(value) : nullptr;
747   }
748   chre::fbs::HostEndpointDisconnectedT *AsHostEndpointDisconnected() {
749     return type == ChreMessage::HostEndpointDisconnected ?
750       reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(value) : nullptr;
751   }
752   const chre::fbs::HostEndpointDisconnectedT *AsHostEndpointDisconnected() const {
753     return type == ChreMessage::HostEndpointDisconnected ?
754       reinterpret_cast<const chre::fbs::HostEndpointDisconnectedT *>(value) : nullptr;
755   }
756   chre::fbs::MetricLogT *AsMetricLog() {
757     return type == ChreMessage::MetricLog ?
758       reinterpret_cast<chre::fbs::MetricLogT *>(value) : nullptr;
759   }
760   const chre::fbs::MetricLogT *AsMetricLog() const {
761     return type == ChreMessage::MetricLog ?
762       reinterpret_cast<const chre::fbs::MetricLogT *>(value) : nullptr;
763   }
764   chre::fbs::BatchedMetricLogT *AsBatchedMetricLog() {
765     return type == ChreMessage::BatchedMetricLog ?
766       reinterpret_cast<chre::fbs::BatchedMetricLogT *>(value) : nullptr;
767   }
768   const chre::fbs::BatchedMetricLogT *AsBatchedMetricLog() const {
769     return type == ChreMessage::BatchedMetricLog ?
770       reinterpret_cast<const chre::fbs::BatchedMetricLogT *>(value) : nullptr;
771   }
772   chre::fbs::NanConfigurationRequestT *AsNanConfigurationRequest() {
773     return type == ChreMessage::NanConfigurationRequest ?
774       reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(value) : nullptr;
775   }
776   const chre::fbs::NanConfigurationRequestT *AsNanConfigurationRequest() const {
777     return type == ChreMessage::NanConfigurationRequest ?
778       reinterpret_cast<const chre::fbs::NanConfigurationRequestT *>(value) : nullptr;
779   }
780   chre::fbs::NanConfigurationUpdateT *AsNanConfigurationUpdate() {
781     return type == ChreMessage::NanConfigurationUpdate ?
782       reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(value) : nullptr;
783   }
784   const chre::fbs::NanConfigurationUpdateT *AsNanConfigurationUpdate() const {
785     return type == ChreMessage::NanConfigurationUpdate ?
786       reinterpret_cast<const chre::fbs::NanConfigurationUpdateT *>(value) : nullptr;
787   }
788   chre::fbs::DebugConfigurationT *AsDebugConfiguration() {
789     return type == ChreMessage::DebugConfiguration ?
790       reinterpret_cast<chre::fbs::DebugConfigurationT *>(value) : nullptr;
791   }
792   const chre::fbs::DebugConfigurationT *AsDebugConfiguration() const {
793     return type == ChreMessage::DebugConfiguration ?
794       reinterpret_cast<const chre::fbs::DebugConfigurationT *>(value) : nullptr;
795   }
796 };
797 
798 bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type);
799 bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
800 
801 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) HostAddress FLATBUFFERS_FINAL_CLASS {
802  private:
803   uint16_t client_id_;
804 
805  public:
806   HostAddress() {
807     memset(static_cast<void *>(this), 0, sizeof(HostAddress));
808   }
809   HostAddress(uint16_t _client_id)
810       : client_id_(flatbuffers::EndianScalar(_client_id)) {
811   }
812   uint16_t client_id() const {
813     return flatbuffers::EndianScalar(client_id_);
814   }
815   void mutate_client_id(uint16_t _client_id) {
816     flatbuffers::WriteScalar(&client_id_, _client_id);
817   }
818 };
819 FLATBUFFERS_STRUCT_END(HostAddress, 2);
820 
821 struct NanoappMessageT : public flatbuffers::NativeTable {
822   typedef NanoappMessage TableType;
823   uint64_t app_id;
824   uint32_t message_type;
825   uint16_t host_endpoint;
826   std::vector<uint8_t> message;
827   uint32_t message_permissions;
828   uint32_t permissions;
829   bool woke_host;
830   NanoappMessageT()
831       : app_id(0),
832         message_type(0),
833         host_endpoint(65534),
834         message_permissions(0),
835         permissions(0),
836         woke_host(false) {
837   }
838 };
839 
840 /// Represents a message sent to/from a nanoapp from/to a client on the host
841 struct NanoappMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
842   typedef NanoappMessageT NativeTableType;
843   typedef NanoappMessageBuilder Builder;
844   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
845     VT_APP_ID = 4,
846     VT_MESSAGE_TYPE = 6,
847     VT_HOST_ENDPOINT = 8,
848     VT_MESSAGE = 10,
849     VT_MESSAGE_PERMISSIONS = 12,
850     VT_PERMISSIONS = 14,
851     VT_WOKE_HOST = 16
852   };
853   uint64_t app_id() const {
854     return GetField<uint64_t>(VT_APP_ID, 0);
855   }
856   bool mutate_app_id(uint64_t _app_id) {
857     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
858   }
859   uint32_t message_type() const {
860     return GetField<uint32_t>(VT_MESSAGE_TYPE, 0);
861   }
862   bool mutate_message_type(uint32_t _message_type) {
863     return SetField<uint32_t>(VT_MESSAGE_TYPE, _message_type, 0);
864   }
865   /// Identifies the host-side endpoint on the host that sent or should receive
866   /// this message. The default value is a special value defined in the HAL and
867   /// elsewhere that indicates that the endpoint is unspecified.
868   uint16_t host_endpoint() const {
869     return GetField<uint16_t>(VT_HOST_ENDPOINT, 65534);
870   }
871   bool mutate_host_endpoint(uint16_t _host_endpoint) {
872     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 65534);
873   }
874   /// Vector containing arbitrary application-specific message data
875   const flatbuffers::Vector<uint8_t> *message() const {
876     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
877   }
878   flatbuffers::Vector<uint8_t> *mutable_message() {
879     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
880   }
881   /// List of Android permissions that cover the contents of a message from a
882   /// nanoapp to the host.
883   /// These permissions are used to record and attribute access to
884   /// permissions-controlled resources.
885   uint32_t message_permissions() const {
886     return GetField<uint32_t>(VT_MESSAGE_PERMISSIONS, 0);
887   }
888   bool mutate_message_permissions(uint32_t _message_permissions) {
889     return SetField<uint32_t>(VT_MESSAGE_PERMISSIONS, _message_permissions, 0);
890   }
891   /// List of Android permissions declared by the nanoapp / granted to the host.
892   /// For messages from a nanoaapp to the host, this must be a superset of
893   /// message_permissions.
894   uint32_t permissions() const {
895     return GetField<uint32_t>(VT_PERMISSIONS, 0);
896   }
897   bool mutate_permissions(uint32_t _permissions) {
898     return SetField<uint32_t>(VT_PERMISSIONS, _permissions, 0);
899   }
900   bool woke_host() const {
901     return GetField<uint8_t>(VT_WOKE_HOST, 0) != 0;
902   }
903   bool mutate_woke_host(bool _woke_host) {
904     return SetField<uint8_t>(VT_WOKE_HOST, static_cast<uint8_t>(_woke_host), 0);
905   }
906   bool Verify(flatbuffers::Verifier &verifier) const {
907     return VerifyTableStart(verifier) &&
908            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
909            VerifyField<uint32_t>(verifier, VT_MESSAGE_TYPE) &&
910            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
911            VerifyOffsetRequired(verifier, VT_MESSAGE) &&
912            verifier.VerifyVector(message()) &&
913            VerifyField<uint32_t>(verifier, VT_MESSAGE_PERMISSIONS) &&
914            VerifyField<uint32_t>(verifier, VT_PERMISSIONS) &&
915            VerifyField<uint8_t>(verifier, VT_WOKE_HOST) &&
916            verifier.EndTable();
917   }
918   NanoappMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
919   void UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
920   static flatbuffers::Offset<NanoappMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
921 };
922 
923 struct NanoappMessageBuilder {
924   typedef NanoappMessage Table;
925   flatbuffers::FlatBufferBuilder &fbb_;
926   flatbuffers::uoffset_t start_;
927   void add_app_id(uint64_t app_id) {
928     fbb_.AddElement<uint64_t>(NanoappMessage::VT_APP_ID, app_id, 0);
929   }
930   void add_message_type(uint32_t message_type) {
931     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_TYPE, message_type, 0);
932   }
933   void add_host_endpoint(uint16_t host_endpoint) {
934     fbb_.AddElement<uint16_t>(NanoappMessage::VT_HOST_ENDPOINT, host_endpoint, 65534);
935   }
936   void add_message(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message) {
937     fbb_.AddOffset(NanoappMessage::VT_MESSAGE, message);
938   }
939   void add_message_permissions(uint32_t message_permissions) {
940     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_PERMISSIONS, message_permissions, 0);
941   }
942   void add_permissions(uint32_t permissions) {
943     fbb_.AddElement<uint32_t>(NanoappMessage::VT_PERMISSIONS, permissions, 0);
944   }
945   void add_woke_host(bool woke_host) {
946     fbb_.AddElement<uint8_t>(NanoappMessage::VT_WOKE_HOST, static_cast<uint8_t>(woke_host), 0);
947   }
948   explicit NanoappMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
949         : fbb_(_fbb) {
950     start_ = fbb_.StartTable();
951   }
952   NanoappMessageBuilder &operator=(const NanoappMessageBuilder &);
953   flatbuffers::Offset<NanoappMessage> Finish() {
954     const auto end = fbb_.EndTable(start_);
955     auto o = flatbuffers::Offset<NanoappMessage>(end);
956     fbb_.Required(o, NanoappMessage::VT_MESSAGE);
957     return o;
958   }
959 };
960 
961 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(
962     flatbuffers::FlatBufferBuilder &_fbb,
963     uint64_t app_id = 0,
964     uint32_t message_type = 0,
965     uint16_t host_endpoint = 65534,
966     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message = 0,
967     uint32_t message_permissions = 0,
968     uint32_t permissions = 0,
969     bool woke_host = false) {
970   NanoappMessageBuilder builder_(_fbb);
971   builder_.add_app_id(app_id);
972   builder_.add_permissions(permissions);
973   builder_.add_message_permissions(message_permissions);
974   builder_.add_message(message);
975   builder_.add_message_type(message_type);
976   builder_.add_host_endpoint(host_endpoint);
977   builder_.add_woke_host(woke_host);
978   return builder_.Finish();
979 }
980 
981 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessageDirect(
982     flatbuffers::FlatBufferBuilder &_fbb,
983     uint64_t app_id = 0,
984     uint32_t message_type = 0,
985     uint16_t host_endpoint = 65534,
986     const std::vector<uint8_t> *message = nullptr,
987     uint32_t message_permissions = 0,
988     uint32_t permissions = 0,
989     bool woke_host = false) {
990   auto message__ = message ? _fbb.CreateVector<uint8_t>(*message) : 0;
991   return chre::fbs::CreateNanoappMessage(
992       _fbb,
993       app_id,
994       message_type,
995       host_endpoint,
996       message__,
997       message_permissions,
998       permissions,
999       woke_host);
1000 }
1001 
1002 flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1003 
1004 struct HubInfoRequestT : public flatbuffers::NativeTable {
1005   typedef HubInfoRequest TableType;
1006   HubInfoRequestT() {
1007   }
1008 };
1009 
1010 struct HubInfoRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1011   typedef HubInfoRequestT NativeTableType;
1012   typedef HubInfoRequestBuilder Builder;
1013   bool Verify(flatbuffers::Verifier &verifier) const {
1014     return VerifyTableStart(verifier) &&
1015            verifier.EndTable();
1016   }
1017   HubInfoRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1018   void UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1019   static flatbuffers::Offset<HubInfoRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1020 };
1021 
1022 struct HubInfoRequestBuilder {
1023   typedef HubInfoRequest Table;
1024   flatbuffers::FlatBufferBuilder &fbb_;
1025   flatbuffers::uoffset_t start_;
1026   explicit HubInfoRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1027         : fbb_(_fbb) {
1028     start_ = fbb_.StartTable();
1029   }
1030   HubInfoRequestBuilder &operator=(const HubInfoRequestBuilder &);
1031   flatbuffers::Offset<HubInfoRequest> Finish() {
1032     const auto end = fbb_.EndTable(start_);
1033     auto o = flatbuffers::Offset<HubInfoRequest>(end);
1034     return o;
1035   }
1036 };
1037 
1038 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(
1039     flatbuffers::FlatBufferBuilder &_fbb) {
1040   HubInfoRequestBuilder builder_(_fbb);
1041   return builder_.Finish();
1042 }
1043 
1044 flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1045 
1046 struct HubInfoResponseT : public flatbuffers::NativeTable {
1047   typedef HubInfoResponse TableType;
1048   std::vector<int8_t> name;
1049   std::vector<int8_t> vendor;
1050   std::vector<int8_t> toolchain;
1051   uint32_t platform_version;
1052   uint32_t toolchain_version;
1053   float peak_mips;
1054   float stopped_power;
1055   float sleep_power;
1056   float peak_power;
1057   uint32_t max_msg_len;
1058   uint64_t platform_id;
1059   uint32_t chre_platform_version;
1060   HubInfoResponseT()
1061       : platform_version(0),
1062         toolchain_version(0),
1063         peak_mips(0.0f),
1064         stopped_power(0.0f),
1065         sleep_power(0.0f),
1066         peak_power(0.0f),
1067         max_msg_len(0),
1068         platform_id(0),
1069         chre_platform_version(0) {
1070   }
1071 };
1072 
1073 struct HubInfoResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1074   typedef HubInfoResponseT NativeTableType;
1075   typedef HubInfoResponseBuilder Builder;
1076   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1077     VT_NAME = 4,
1078     VT_VENDOR = 6,
1079     VT_TOOLCHAIN = 8,
1080     VT_PLATFORM_VERSION = 10,
1081     VT_TOOLCHAIN_VERSION = 12,
1082     VT_PEAK_MIPS = 14,
1083     VT_STOPPED_POWER = 16,
1084     VT_SLEEP_POWER = 18,
1085     VT_PEAK_POWER = 20,
1086     VT_MAX_MSG_LEN = 22,
1087     VT_PLATFORM_ID = 24,
1088     VT_CHRE_PLATFORM_VERSION = 26
1089   };
1090   /// The name of the hub. Nominally a UTF-8 string, but note that we're not
1091   /// using the built-in "string" data type from FlatBuffers here, because the
1092   /// generated C++ uses std::string which is not well-supported in CHRE. This
1093   /// applies for vendor and toolchain as well.
1094   const flatbuffers::Vector<int8_t> *name() const {
1095     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
1096   }
1097   flatbuffers::Vector<int8_t> *mutable_name() {
1098     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
1099   }
1100   const flatbuffers::Vector<int8_t> *vendor() const {
1101     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_VENDOR);
1102   }
1103   flatbuffers::Vector<int8_t> *mutable_vendor() {
1104     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_VENDOR);
1105   }
1106   const flatbuffers::Vector<int8_t> *toolchain() const {
1107     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
1108   }
1109   flatbuffers::Vector<int8_t> *mutable_toolchain() {
1110     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
1111   }
1112   /// Legacy platform version reported in the HAL; semantics not strictly
1113   /// defined
1114   uint32_t platform_version() const {
1115     return GetField<uint32_t>(VT_PLATFORM_VERSION, 0);
1116   }
1117   bool mutate_platform_version(uint32_t _platform_version) {
1118     return SetField<uint32_t>(VT_PLATFORM_VERSION, _platform_version, 0);
1119   }
1120   /// Toolchain version reported in the HAL; semantics not strictly defined
1121   uint32_t toolchain_version() const {
1122     return GetField<uint32_t>(VT_TOOLCHAIN_VERSION, 0);
1123   }
1124   bool mutate_toolchain_version(uint32_t _toolchain_version) {
1125     return SetField<uint32_t>(VT_TOOLCHAIN_VERSION, _toolchain_version, 0);
1126   }
1127   float peak_mips() const {
1128     return GetField<float>(VT_PEAK_MIPS, 0.0f);
1129   }
1130   bool mutate_peak_mips(float _peak_mips) {
1131     return SetField<float>(VT_PEAK_MIPS, _peak_mips, 0.0f);
1132   }
1133   float stopped_power() const {
1134     return GetField<float>(VT_STOPPED_POWER, 0.0f);
1135   }
1136   bool mutate_stopped_power(float _stopped_power) {
1137     return SetField<float>(VT_STOPPED_POWER, _stopped_power, 0.0f);
1138   }
1139   float sleep_power() const {
1140     return GetField<float>(VT_SLEEP_POWER, 0.0f);
1141   }
1142   bool mutate_sleep_power(float _sleep_power) {
1143     return SetField<float>(VT_SLEEP_POWER, _sleep_power, 0.0f);
1144   }
1145   float peak_power() const {
1146     return GetField<float>(VT_PEAK_POWER, 0.0f);
1147   }
1148   bool mutate_peak_power(float _peak_power) {
1149     return SetField<float>(VT_PEAK_POWER, _peak_power, 0.0f);
1150   }
1151   /// Maximum size message that can be sent to a nanoapp
1152   uint32_t max_msg_len() const {
1153     return GetField<uint32_t>(VT_MAX_MSG_LEN, 0);
1154   }
1155   bool mutate_max_msg_len(uint32_t _max_msg_len) {
1156     return SetField<uint32_t>(VT_MAX_MSG_LEN, _max_msg_len, 0);
1157   }
1158   /// @see chreGetPlatformId()
1159   uint64_t platform_id() const {
1160     return GetField<uint64_t>(VT_PLATFORM_ID, 0);
1161   }
1162   bool mutate_platform_id(uint64_t _platform_id) {
1163     return SetField<uint64_t>(VT_PLATFORM_ID, _platform_id, 0);
1164   }
1165   /// @see chreGetVersion()
1166   uint32_t chre_platform_version() const {
1167     return GetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, 0);
1168   }
1169   bool mutate_chre_platform_version(uint32_t _chre_platform_version) {
1170     return SetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, _chre_platform_version, 0);
1171   }
1172   bool Verify(flatbuffers::Verifier &verifier) const {
1173     return VerifyTableStart(verifier) &&
1174            VerifyOffset(verifier, VT_NAME) &&
1175            verifier.VerifyVector(name()) &&
1176            VerifyOffset(verifier, VT_VENDOR) &&
1177            verifier.VerifyVector(vendor()) &&
1178            VerifyOffset(verifier, VT_TOOLCHAIN) &&
1179            verifier.VerifyVector(toolchain()) &&
1180            VerifyField<uint32_t>(verifier, VT_PLATFORM_VERSION) &&
1181            VerifyField<uint32_t>(verifier, VT_TOOLCHAIN_VERSION) &&
1182            VerifyField<float>(verifier, VT_PEAK_MIPS) &&
1183            VerifyField<float>(verifier, VT_STOPPED_POWER) &&
1184            VerifyField<float>(verifier, VT_SLEEP_POWER) &&
1185            VerifyField<float>(verifier, VT_PEAK_POWER) &&
1186            VerifyField<uint32_t>(verifier, VT_MAX_MSG_LEN) &&
1187            VerifyField<uint64_t>(verifier, VT_PLATFORM_ID) &&
1188            VerifyField<uint32_t>(verifier, VT_CHRE_PLATFORM_VERSION) &&
1189            verifier.EndTable();
1190   }
1191   HubInfoResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1192   void UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1193   static flatbuffers::Offset<HubInfoResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1194 };
1195 
1196 struct HubInfoResponseBuilder {
1197   typedef HubInfoResponse Table;
1198   flatbuffers::FlatBufferBuilder &fbb_;
1199   flatbuffers::uoffset_t start_;
1200   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
1201     fbb_.AddOffset(HubInfoResponse::VT_NAME, name);
1202   }
1203   void add_vendor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor) {
1204     fbb_.AddOffset(HubInfoResponse::VT_VENDOR, vendor);
1205   }
1206   void add_toolchain(flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain) {
1207     fbb_.AddOffset(HubInfoResponse::VT_TOOLCHAIN, toolchain);
1208   }
1209   void add_platform_version(uint32_t platform_version) {
1210     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_PLATFORM_VERSION, platform_version, 0);
1211   }
1212   void add_toolchain_version(uint32_t toolchain_version) {
1213     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_TOOLCHAIN_VERSION, toolchain_version, 0);
1214   }
1215   void add_peak_mips(float peak_mips) {
1216     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_MIPS, peak_mips, 0.0f);
1217   }
1218   void add_stopped_power(float stopped_power) {
1219     fbb_.AddElement<float>(HubInfoResponse::VT_STOPPED_POWER, stopped_power, 0.0f);
1220   }
1221   void add_sleep_power(float sleep_power) {
1222     fbb_.AddElement<float>(HubInfoResponse::VT_SLEEP_POWER, sleep_power, 0.0f);
1223   }
1224   void add_peak_power(float peak_power) {
1225     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_POWER, peak_power, 0.0f);
1226   }
1227   void add_max_msg_len(uint32_t max_msg_len) {
1228     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_MAX_MSG_LEN, max_msg_len, 0);
1229   }
1230   void add_platform_id(uint64_t platform_id) {
1231     fbb_.AddElement<uint64_t>(HubInfoResponse::VT_PLATFORM_ID, platform_id, 0);
1232   }
1233   void add_chre_platform_version(uint32_t chre_platform_version) {
1234     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_CHRE_PLATFORM_VERSION, chre_platform_version, 0);
1235   }
1236   explicit HubInfoResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1237         : fbb_(_fbb) {
1238     start_ = fbb_.StartTable();
1239   }
1240   HubInfoResponseBuilder &operator=(const HubInfoResponseBuilder &);
1241   flatbuffers::Offset<HubInfoResponse> Finish() {
1242     const auto end = fbb_.EndTable(start_);
1243     auto o = flatbuffers::Offset<HubInfoResponse>(end);
1244     return o;
1245   }
1246 };
1247 
1248 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(
1249     flatbuffers::FlatBufferBuilder &_fbb,
1250     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
1251     flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor = 0,
1252     flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain = 0,
1253     uint32_t platform_version = 0,
1254     uint32_t toolchain_version = 0,
1255     float peak_mips = 0.0f,
1256     float stopped_power = 0.0f,
1257     float sleep_power = 0.0f,
1258     float peak_power = 0.0f,
1259     uint32_t max_msg_len = 0,
1260     uint64_t platform_id = 0,
1261     uint32_t chre_platform_version = 0) {
1262   HubInfoResponseBuilder builder_(_fbb);
1263   builder_.add_platform_id(platform_id);
1264   builder_.add_chre_platform_version(chre_platform_version);
1265   builder_.add_max_msg_len(max_msg_len);
1266   builder_.add_peak_power(peak_power);
1267   builder_.add_sleep_power(sleep_power);
1268   builder_.add_stopped_power(stopped_power);
1269   builder_.add_peak_mips(peak_mips);
1270   builder_.add_toolchain_version(toolchain_version);
1271   builder_.add_platform_version(platform_version);
1272   builder_.add_toolchain(toolchain);
1273   builder_.add_vendor(vendor);
1274   builder_.add_name(name);
1275   return builder_.Finish();
1276 }
1277 
1278 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponseDirect(
1279     flatbuffers::FlatBufferBuilder &_fbb,
1280     const std::vector<int8_t> *name = nullptr,
1281     const std::vector<int8_t> *vendor = nullptr,
1282     const std::vector<int8_t> *toolchain = nullptr,
1283     uint32_t platform_version = 0,
1284     uint32_t toolchain_version = 0,
1285     float peak_mips = 0.0f,
1286     float stopped_power = 0.0f,
1287     float sleep_power = 0.0f,
1288     float peak_power = 0.0f,
1289     uint32_t max_msg_len = 0,
1290     uint64_t platform_id = 0,
1291     uint32_t chre_platform_version = 0) {
1292   auto name__ = name ? _fbb.CreateVector<int8_t>(*name) : 0;
1293   auto vendor__ = vendor ? _fbb.CreateVector<int8_t>(*vendor) : 0;
1294   auto toolchain__ = toolchain ? _fbb.CreateVector<int8_t>(*toolchain) : 0;
1295   return chre::fbs::CreateHubInfoResponse(
1296       _fbb,
1297       name__,
1298       vendor__,
1299       toolchain__,
1300       platform_version,
1301       toolchain_version,
1302       peak_mips,
1303       stopped_power,
1304       sleep_power,
1305       peak_power,
1306       max_msg_len,
1307       platform_id,
1308       chre_platform_version);
1309 }
1310 
1311 flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1312 
1313 struct NanoappListRequestT : public flatbuffers::NativeTable {
1314   typedef NanoappListRequest TableType;
1315   NanoappListRequestT() {
1316   }
1317 };
1318 
1319 struct NanoappListRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1320   typedef NanoappListRequestT NativeTableType;
1321   typedef NanoappListRequestBuilder Builder;
1322   bool Verify(flatbuffers::Verifier &verifier) const {
1323     return VerifyTableStart(verifier) &&
1324            verifier.EndTable();
1325   }
1326   NanoappListRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1327   void UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1328   static flatbuffers::Offset<NanoappListRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1329 };
1330 
1331 struct NanoappListRequestBuilder {
1332   typedef NanoappListRequest Table;
1333   flatbuffers::FlatBufferBuilder &fbb_;
1334   flatbuffers::uoffset_t start_;
1335   explicit NanoappListRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1336         : fbb_(_fbb) {
1337     start_ = fbb_.StartTable();
1338   }
1339   NanoappListRequestBuilder &operator=(const NanoappListRequestBuilder &);
1340   flatbuffers::Offset<NanoappListRequest> Finish() {
1341     const auto end = fbb_.EndTable(start_);
1342     auto o = flatbuffers::Offset<NanoappListRequest>(end);
1343     return o;
1344   }
1345 };
1346 
1347 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(
1348     flatbuffers::FlatBufferBuilder &_fbb) {
1349   NanoappListRequestBuilder builder_(_fbb);
1350   return builder_.Finish();
1351 }
1352 
1353 flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1354 
1355 struct NanoappRpcServiceT : public flatbuffers::NativeTable {
1356   typedef NanoappRpcService TableType;
1357   uint64_t id;
1358   uint32_t version;
1359   NanoappRpcServiceT()
1360       : id(0),
1361         version(0) {
1362   }
1363 };
1364 
1365 /// Metadata regarding a Nanoapp RPC service. See the Android API
1366 /// core/java/android/hardware/location/NanoAppRpcService.java for more details
1367 /// on how this value is used by the Android application.
1368 struct NanoappRpcService FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1369   typedef NanoappRpcServiceT NativeTableType;
1370   typedef NanoappRpcServiceBuilder Builder;
1371   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1372     VT_ID = 4,
1373     VT_VERSION = 6
1374   };
1375   uint64_t id() const {
1376     return GetField<uint64_t>(VT_ID, 0);
1377   }
1378   bool mutate_id(uint64_t _id) {
1379     return SetField<uint64_t>(VT_ID, _id, 0);
1380   }
1381   uint32_t version() const {
1382     return GetField<uint32_t>(VT_VERSION, 0);
1383   }
1384   bool mutate_version(uint32_t _version) {
1385     return SetField<uint32_t>(VT_VERSION, _version, 0);
1386   }
1387   bool Verify(flatbuffers::Verifier &verifier) const {
1388     return VerifyTableStart(verifier) &&
1389            VerifyField<uint64_t>(verifier, VT_ID) &&
1390            VerifyField<uint32_t>(verifier, VT_VERSION) &&
1391            verifier.EndTable();
1392   }
1393   NanoappRpcServiceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1394   void UnPackTo(NanoappRpcServiceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1395   static flatbuffers::Offset<NanoappRpcService> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1396 };
1397 
1398 struct NanoappRpcServiceBuilder {
1399   typedef NanoappRpcService Table;
1400   flatbuffers::FlatBufferBuilder &fbb_;
1401   flatbuffers::uoffset_t start_;
1402   void add_id(uint64_t id) {
1403     fbb_.AddElement<uint64_t>(NanoappRpcService::VT_ID, id, 0);
1404   }
1405   void add_version(uint32_t version) {
1406     fbb_.AddElement<uint32_t>(NanoappRpcService::VT_VERSION, version, 0);
1407   }
1408   explicit NanoappRpcServiceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1409         : fbb_(_fbb) {
1410     start_ = fbb_.StartTable();
1411   }
1412   NanoappRpcServiceBuilder &operator=(const NanoappRpcServiceBuilder &);
1413   flatbuffers::Offset<NanoappRpcService> Finish() {
1414     const auto end = fbb_.EndTable(start_);
1415     auto o = flatbuffers::Offset<NanoappRpcService>(end);
1416     return o;
1417   }
1418 };
1419 
1420 inline flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(
1421     flatbuffers::FlatBufferBuilder &_fbb,
1422     uint64_t id = 0,
1423     uint32_t version = 0) {
1424   NanoappRpcServiceBuilder builder_(_fbb);
1425   builder_.add_id(id);
1426   builder_.add_version(version);
1427   return builder_.Finish();
1428 }
1429 
1430 flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1431 
1432 struct NanoappListEntryT : public flatbuffers::NativeTable {
1433   typedef NanoappListEntry TableType;
1434   uint64_t app_id;
1435   uint32_t version;
1436   bool enabled;
1437   bool is_system;
1438   uint32_t permissions;
1439   std::vector<std::unique_ptr<chre::fbs::NanoappRpcServiceT>> rpc_services;
1440   NanoappListEntryT()
1441       : app_id(0),
1442         version(0),
1443         enabled(true),
1444         is_system(false),
1445         permissions(0) {
1446   }
1447 };
1448 
1449 struct NanoappListEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1450   typedef NanoappListEntryT NativeTableType;
1451   typedef NanoappListEntryBuilder Builder;
1452   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1453     VT_APP_ID = 4,
1454     VT_VERSION = 6,
1455     VT_ENABLED = 8,
1456     VT_IS_SYSTEM = 10,
1457     VT_PERMISSIONS = 12,
1458     VT_RPC_SERVICES = 14
1459   };
1460   uint64_t app_id() const {
1461     return GetField<uint64_t>(VT_APP_ID, 0);
1462   }
1463   bool mutate_app_id(uint64_t _app_id) {
1464     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
1465   }
1466   uint32_t version() const {
1467     return GetField<uint32_t>(VT_VERSION, 0);
1468   }
1469   bool mutate_version(uint32_t _version) {
1470     return SetField<uint32_t>(VT_VERSION, _version, 0);
1471   }
1472   bool enabled() const {
1473     return GetField<uint8_t>(VT_ENABLED, 1) != 0;
1474   }
1475   bool mutate_enabled(bool _enabled) {
1476     return SetField<uint8_t>(VT_ENABLED, static_cast<uint8_t>(_enabled), 1);
1477   }
1478   /// Whether the nanoapp is a pre-loaded "system" nanoapp, i.e. one that should
1479   /// not show up in the list of nanoapps in the context hub HAL. System
1480   /// nanoapps are typically used to leverage CHRE for some device functionality
1481   /// and do not interact via the context hub HAL.
1482   bool is_system() const {
1483     return GetField<uint8_t>(VT_IS_SYSTEM, 0) != 0;
1484   }
1485   bool mutate_is_system(bool _is_system) {
1486     return SetField<uint8_t>(VT_IS_SYSTEM, static_cast<uint8_t>(_is_system), 0);
1487   }
1488   /// Nanoapp permissions, if supported. Nanoapp permissions are required on
1489   /// CHRE API v1.5+, and are defined in chre/util/system/napp_permissions.h
1490   uint32_t permissions() const {
1491     return GetField<uint32_t>(VT_PERMISSIONS, 0);
1492   }
1493   bool mutate_permissions(uint32_t _permissions) {
1494     return SetField<uint32_t>(VT_PERMISSIONS, _permissions, 0);
1495   }
1496   /// The list of RPC services supported by this nanoapp.
1497   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *rpc_services() const {
1498     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *>(VT_RPC_SERVICES);
1499   }
1500   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *mutable_rpc_services() {
1501     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *>(VT_RPC_SERVICES);
1502   }
1503   bool Verify(flatbuffers::Verifier &verifier) const {
1504     return VerifyTableStart(verifier) &&
1505            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
1506            VerifyField<uint32_t>(verifier, VT_VERSION) &&
1507            VerifyField<uint8_t>(verifier, VT_ENABLED) &&
1508            VerifyField<uint8_t>(verifier, VT_IS_SYSTEM) &&
1509            VerifyField<uint32_t>(verifier, VT_PERMISSIONS) &&
1510            VerifyOffset(verifier, VT_RPC_SERVICES) &&
1511            verifier.VerifyVector(rpc_services()) &&
1512            verifier.VerifyVectorOfTables(rpc_services()) &&
1513            verifier.EndTable();
1514   }
1515   NanoappListEntryT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1516   void UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1517   static flatbuffers::Offset<NanoappListEntry> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1518 };
1519 
1520 struct NanoappListEntryBuilder {
1521   typedef NanoappListEntry Table;
1522   flatbuffers::FlatBufferBuilder &fbb_;
1523   flatbuffers::uoffset_t start_;
1524   void add_app_id(uint64_t app_id) {
1525     fbb_.AddElement<uint64_t>(NanoappListEntry::VT_APP_ID, app_id, 0);
1526   }
1527   void add_version(uint32_t version) {
1528     fbb_.AddElement<uint32_t>(NanoappListEntry::VT_VERSION, version, 0);
1529   }
1530   void add_enabled(bool enabled) {
1531     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_ENABLED, static_cast<uint8_t>(enabled), 1);
1532   }
1533   void add_is_system(bool is_system) {
1534     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_IS_SYSTEM, static_cast<uint8_t>(is_system), 0);
1535   }
1536   void add_permissions(uint32_t permissions) {
1537     fbb_.AddElement<uint32_t>(NanoappListEntry::VT_PERMISSIONS, permissions, 0);
1538   }
1539   void add_rpc_services(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>> rpc_services) {
1540     fbb_.AddOffset(NanoappListEntry::VT_RPC_SERVICES, rpc_services);
1541   }
1542   explicit NanoappListEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1543         : fbb_(_fbb) {
1544     start_ = fbb_.StartTable();
1545   }
1546   NanoappListEntryBuilder &operator=(const NanoappListEntryBuilder &);
1547   flatbuffers::Offset<NanoappListEntry> Finish() {
1548     const auto end = fbb_.EndTable(start_);
1549     auto o = flatbuffers::Offset<NanoappListEntry>(end);
1550     return o;
1551   }
1552 };
1553 
1554 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(
1555     flatbuffers::FlatBufferBuilder &_fbb,
1556     uint64_t app_id = 0,
1557     uint32_t version = 0,
1558     bool enabled = true,
1559     bool is_system = false,
1560     uint32_t permissions = 0,
1561     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>> rpc_services = 0) {
1562   NanoappListEntryBuilder builder_(_fbb);
1563   builder_.add_app_id(app_id);
1564   builder_.add_rpc_services(rpc_services);
1565   builder_.add_permissions(permissions);
1566   builder_.add_version(version);
1567   builder_.add_is_system(is_system);
1568   builder_.add_enabled(enabled);
1569   return builder_.Finish();
1570 }
1571 
1572 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntryDirect(
1573     flatbuffers::FlatBufferBuilder &_fbb,
1574     uint64_t app_id = 0,
1575     uint32_t version = 0,
1576     bool enabled = true,
1577     bool is_system = false,
1578     uint32_t permissions = 0,
1579     const std::vector<flatbuffers::Offset<chre::fbs::NanoappRpcService>> *rpc_services = nullptr) {
1580   auto rpc_services__ = rpc_services ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappRpcService>>(*rpc_services) : 0;
1581   return chre::fbs::CreateNanoappListEntry(
1582       _fbb,
1583       app_id,
1584       version,
1585       enabled,
1586       is_system,
1587       permissions,
1588       rpc_services__);
1589 }
1590 
1591 flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1592 
1593 struct NanoappListResponseT : public flatbuffers::NativeTable {
1594   typedef NanoappListResponse TableType;
1595   std::vector<std::unique_ptr<chre::fbs::NanoappListEntryT>> nanoapps;
1596   NanoappListResponseT() {
1597   }
1598 };
1599 
1600 struct NanoappListResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1601   typedef NanoappListResponseT NativeTableType;
1602   typedef NanoappListResponseBuilder Builder;
1603   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1604     VT_NANOAPPS = 4
1605   };
1606   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *nanoapps() const {
1607     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *>(VT_NANOAPPS);
1608   }
1609   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *mutable_nanoapps() {
1610     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *>(VT_NANOAPPS);
1611   }
1612   bool Verify(flatbuffers::Verifier &verifier) const {
1613     return VerifyTableStart(verifier) &&
1614            VerifyOffsetRequired(verifier, VT_NANOAPPS) &&
1615            verifier.VerifyVector(nanoapps()) &&
1616            verifier.VerifyVectorOfTables(nanoapps()) &&
1617            verifier.EndTable();
1618   }
1619   NanoappListResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1620   void UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1621   static flatbuffers::Offset<NanoappListResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1622 };
1623 
1624 struct NanoappListResponseBuilder {
1625   typedef NanoappListResponse Table;
1626   flatbuffers::FlatBufferBuilder &fbb_;
1627   flatbuffers::uoffset_t start_;
1628   void add_nanoapps(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>> nanoapps) {
1629     fbb_.AddOffset(NanoappListResponse::VT_NANOAPPS, nanoapps);
1630   }
1631   explicit NanoappListResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1632         : fbb_(_fbb) {
1633     start_ = fbb_.StartTable();
1634   }
1635   NanoappListResponseBuilder &operator=(const NanoappListResponseBuilder &);
1636   flatbuffers::Offset<NanoappListResponse> Finish() {
1637     const auto end = fbb_.EndTable(start_);
1638     auto o = flatbuffers::Offset<NanoappListResponse>(end);
1639     fbb_.Required(o, NanoappListResponse::VT_NANOAPPS);
1640     return o;
1641   }
1642 };
1643 
1644 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(
1645     flatbuffers::FlatBufferBuilder &_fbb,
1646     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>> nanoapps = 0) {
1647   NanoappListResponseBuilder builder_(_fbb);
1648   builder_.add_nanoapps(nanoapps);
1649   return builder_.Finish();
1650 }
1651 
1652 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponseDirect(
1653     flatbuffers::FlatBufferBuilder &_fbb,
1654     const std::vector<flatbuffers::Offset<chre::fbs::NanoappListEntry>> *nanoapps = nullptr) {
1655   auto nanoapps__ = nanoapps ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::NanoappListEntry>>(*nanoapps) : 0;
1656   return chre::fbs::CreateNanoappListResponse(
1657       _fbb,
1658       nanoapps__);
1659 }
1660 
1661 flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1662 
1663 struct LoadNanoappRequestT : public flatbuffers::NativeTable {
1664   typedef LoadNanoappRequest TableType;
1665   uint32_t transaction_id;
1666   uint64_t app_id;
1667   uint32_t app_version;
1668   uint32_t target_api_version;
1669   std::vector<uint8_t> app_binary;
1670   uint32_t fragment_id;
1671   uint32_t total_app_size;
1672   std::vector<int8_t> app_binary_file_name;
1673   uint32_t app_flags;
1674   bool respond_before_start;
1675   LoadNanoappRequestT()
1676       : transaction_id(0),
1677         app_id(0),
1678         app_version(0),
1679         target_api_version(0),
1680         fragment_id(0),
1681         total_app_size(0),
1682         app_flags(0),
1683         respond_before_start(false) {
1684   }
1685 };
1686 
1687 /// Represents a request for loading a nanoapp.
1688 /// The nanaopp can either be requested to be loaded via a file or via a buffer.
1689 /// For loading via a file, the following steps will be taken:
1690 /// 1. The loader sends a LoadNanoappRequest message to CHRE. app_binary must
1691 ///    be set for legacy purposes, but should be empty. Additionally,
1692 ///    fragment_id and total_app_size are unused in this request. The loading
1693 ///    that happens as part of this request is serialized, but asynchronous
1694 ///    meaning that load requests will be processed in the order they are sent
1695 ///    but multiple requests can be outstanding at any given time.
1696 /// 2. CHRE stores the filename and waits until its event loop is able to
1697 ///    process the request.
1698 /// 3. Once ready, the nanoapp will be loaded from the file specified in the
1699 ///    original request and will send a callback indicating the
1700 ///    completion/failure of the request.
1701 /// For loading via a buffer, loading may optionally be fragmented into multiple
1702 /// sequential requests, which will follow the following steps:
1703 /// 1. The loader sends a LoadNanoappRequest message to CHRE. If the request
1704 ///    is fragmented, then the fields fragment_id and total_app_size must
1705 ///    be defined. Once the first fragment is sent to CHRE, all subsequent
1706 ///    fragments must be delivered before a new LoadNanoappRequest can be
1707 ///    issued. If a new request is received while a current request has
1708 ///    outstanding fragments, the current request will be overridden with the
1709 ///    new one.
1710 /// 2. CHRE preallocates the required amount of memory, and loads app_binary,
1711 ///    appending to already loaded fragments as appropriate.
1712 /// 3. If the request is fragmented, then the requestor must sequentially send
1713 ///    multiple LoadNanoappRequest with incremental nanoapp binary fragments.
1714 ///    CHRE will respond with LoadNanoappResponse for each request. For
1715 ///    requests starting from the second fragment, all fields except
1716 ///    fragment_id and app_binary should be ignored by CHRE.
1717 ///
1718 ///    Once the LoadNanoappRepsonse for the last fragment is received
1719 ///    by the HAL, the HAL client will receive a callback indicating the
1720 ///    completion/failure of a load request.
1721 ///
1722 /// If any request fragment is lost, then the entire load request will be
1723 /// considered to have failed. If the request times out (e.g. the requestor
1724 /// process crashes), then the load request will be cancelled at CHRE and fail.
1725 struct LoadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1726   typedef LoadNanoappRequestT NativeTableType;
1727   typedef LoadNanoappRequestBuilder Builder;
1728   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1729     VT_TRANSACTION_ID = 4,
1730     VT_APP_ID = 6,
1731     VT_APP_VERSION = 8,
1732     VT_TARGET_API_VERSION = 10,
1733     VT_APP_BINARY = 12,
1734     VT_FRAGMENT_ID = 14,
1735     VT_TOTAL_APP_SIZE = 16,
1736     VT_APP_BINARY_FILE_NAME = 18,
1737     VT_APP_FLAGS = 20,
1738     VT_RESPOND_BEFORE_START = 22
1739   };
1740   uint32_t transaction_id() const {
1741     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
1742   }
1743   bool mutate_transaction_id(uint32_t _transaction_id) {
1744     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
1745   }
1746   uint64_t app_id() const {
1747     return GetField<uint64_t>(VT_APP_ID, 0);
1748   }
1749   bool mutate_app_id(uint64_t _app_id) {
1750     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
1751   }
1752   uint32_t app_version() const {
1753     return GetField<uint32_t>(VT_APP_VERSION, 0);
1754   }
1755   bool mutate_app_version(uint32_t _app_version) {
1756     return SetField<uint32_t>(VT_APP_VERSION, _app_version, 0);
1757   }
1758   uint32_t target_api_version() const {
1759     return GetField<uint32_t>(VT_TARGET_API_VERSION, 0);
1760   }
1761   bool mutate_target_api_version(uint32_t _target_api_version) {
1762     return SetField<uint32_t>(VT_TARGET_API_VERSION, _target_api_version, 0);
1763   }
1764   const flatbuffers::Vector<uint8_t> *app_binary() const {
1765     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
1766   }
1767   flatbuffers::Vector<uint8_t> *mutable_app_binary() {
1768     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
1769   }
1770   /// Fields that are relevant for fragmented loading
1771   /// The framgent count starts at 1 and should end at the total number of
1772   /// fragments. For clients that do not support fragmented loading, the
1773   /// default behavior should be to assume one fragment.
1774   uint32_t fragment_id() const {
1775     return GetField<uint32_t>(VT_FRAGMENT_ID, 0);
1776   }
1777   bool mutate_fragment_id(uint32_t _fragment_id) {
1778     return SetField<uint32_t>(VT_FRAGMENT_ID, _fragment_id, 0);
1779   }
1780   uint32_t total_app_size() const {
1781     return GetField<uint32_t>(VT_TOTAL_APP_SIZE, 0);
1782   }
1783   bool mutate_total_app_size(uint32_t _total_app_size) {
1784     return SetField<uint32_t>(VT_TOTAL_APP_SIZE, _total_app_size, 0);
1785   }
1786   /// Null-terminated ASCII string containing the file name that contains the
1787   /// app binary to be loaded.
1788   const flatbuffers::Vector<int8_t> *app_binary_file_name() const {
1789     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_APP_BINARY_FILE_NAME);
1790   }
1791   flatbuffers::Vector<int8_t> *mutable_app_binary_file_name() {
1792     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_APP_BINARY_FILE_NAME);
1793   }
1794   /// The nanoapp flag values from the nanoapp header defined in
1795   /// build/build_template.mk. Refer to that file for more details.
1796   uint32_t app_flags() const {
1797     return GetField<uint32_t>(VT_APP_FLAGS, 0);
1798   }
1799   bool mutate_app_flags(uint32_t _app_flags) {
1800     return SetField<uint32_t>(VT_APP_FLAGS, _app_flags, 0);
1801   }
1802   /// If true and fragmented loading is requested, the LoadNanoappResponse
1803   /// for the last fragment will be sent after the fragment was confirmed
1804   /// to be placed in memory and no additional response will be sent after
1805   /// the nanoapp is linked and started in the framework.
1806   bool respond_before_start() const {
1807     return GetField<uint8_t>(VT_RESPOND_BEFORE_START, 0) != 0;
1808   }
1809   bool mutate_respond_before_start(bool _respond_before_start) {
1810     return SetField<uint8_t>(VT_RESPOND_BEFORE_START, static_cast<uint8_t>(_respond_before_start), 0);
1811   }
1812   bool Verify(flatbuffers::Verifier &verifier) const {
1813     return VerifyTableStart(verifier) &&
1814            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
1815            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
1816            VerifyField<uint32_t>(verifier, VT_APP_VERSION) &&
1817            VerifyField<uint32_t>(verifier, VT_TARGET_API_VERSION) &&
1818            VerifyOffsetRequired(verifier, VT_APP_BINARY) &&
1819            verifier.VerifyVector(app_binary()) &&
1820            VerifyField<uint32_t>(verifier, VT_FRAGMENT_ID) &&
1821            VerifyField<uint32_t>(verifier, VT_TOTAL_APP_SIZE) &&
1822            VerifyOffset(verifier, VT_APP_BINARY_FILE_NAME) &&
1823            verifier.VerifyVector(app_binary_file_name()) &&
1824            VerifyField<uint32_t>(verifier, VT_APP_FLAGS) &&
1825            VerifyField<uint8_t>(verifier, VT_RESPOND_BEFORE_START) &&
1826            verifier.EndTable();
1827   }
1828   LoadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1829   void UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1830   static flatbuffers::Offset<LoadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1831 };
1832 
1833 struct LoadNanoappRequestBuilder {
1834   typedef LoadNanoappRequest Table;
1835   flatbuffers::FlatBufferBuilder &fbb_;
1836   flatbuffers::uoffset_t start_;
1837   void add_transaction_id(uint32_t transaction_id) {
1838     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
1839   }
1840   void add_app_id(uint64_t app_id) {
1841     fbb_.AddElement<uint64_t>(LoadNanoappRequest::VT_APP_ID, app_id, 0);
1842   }
1843   void add_app_version(uint32_t app_version) {
1844     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_VERSION, app_version, 0);
1845   }
1846   void add_target_api_version(uint32_t target_api_version) {
1847     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TARGET_API_VERSION, target_api_version, 0);
1848   }
1849   void add_app_binary(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary) {
1850     fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY, app_binary);
1851   }
1852   void add_fragment_id(uint32_t fragment_id) {
1853     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_FRAGMENT_ID, fragment_id, 0);
1854   }
1855   void add_total_app_size(uint32_t total_app_size) {
1856     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TOTAL_APP_SIZE, total_app_size, 0);
1857   }
1858   void add_app_binary_file_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> app_binary_file_name) {
1859     fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY_FILE_NAME, app_binary_file_name);
1860   }
1861   void add_app_flags(uint32_t app_flags) {
1862     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_FLAGS, app_flags, 0);
1863   }
1864   void add_respond_before_start(bool respond_before_start) {
1865     fbb_.AddElement<uint8_t>(LoadNanoappRequest::VT_RESPOND_BEFORE_START, static_cast<uint8_t>(respond_before_start), 0);
1866   }
1867   explicit LoadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1868         : fbb_(_fbb) {
1869     start_ = fbb_.StartTable();
1870   }
1871   LoadNanoappRequestBuilder &operator=(const LoadNanoappRequestBuilder &);
1872   flatbuffers::Offset<LoadNanoappRequest> Finish() {
1873     const auto end = fbb_.EndTable(start_);
1874     auto o = flatbuffers::Offset<LoadNanoappRequest>(end);
1875     fbb_.Required(o, LoadNanoappRequest::VT_APP_BINARY);
1876     return o;
1877   }
1878 };
1879 
1880 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(
1881     flatbuffers::FlatBufferBuilder &_fbb,
1882     uint32_t transaction_id = 0,
1883     uint64_t app_id = 0,
1884     uint32_t app_version = 0,
1885     uint32_t target_api_version = 0,
1886     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary = 0,
1887     uint32_t fragment_id = 0,
1888     uint32_t total_app_size = 0,
1889     flatbuffers::Offset<flatbuffers::Vector<int8_t>> app_binary_file_name = 0,
1890     uint32_t app_flags = 0,
1891     bool respond_before_start = false) {
1892   LoadNanoappRequestBuilder builder_(_fbb);
1893   builder_.add_app_id(app_id);
1894   builder_.add_app_flags(app_flags);
1895   builder_.add_app_binary_file_name(app_binary_file_name);
1896   builder_.add_total_app_size(total_app_size);
1897   builder_.add_fragment_id(fragment_id);
1898   builder_.add_app_binary(app_binary);
1899   builder_.add_target_api_version(target_api_version);
1900   builder_.add_app_version(app_version);
1901   builder_.add_transaction_id(transaction_id);
1902   builder_.add_respond_before_start(respond_before_start);
1903   return builder_.Finish();
1904 }
1905 
1906 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequestDirect(
1907     flatbuffers::FlatBufferBuilder &_fbb,
1908     uint32_t transaction_id = 0,
1909     uint64_t app_id = 0,
1910     uint32_t app_version = 0,
1911     uint32_t target_api_version = 0,
1912     const std::vector<uint8_t> *app_binary = nullptr,
1913     uint32_t fragment_id = 0,
1914     uint32_t total_app_size = 0,
1915     const std::vector<int8_t> *app_binary_file_name = nullptr,
1916     uint32_t app_flags = 0,
1917     bool respond_before_start = false) {
1918   auto app_binary__ = app_binary ? _fbb.CreateVector<uint8_t>(*app_binary) : 0;
1919   auto app_binary_file_name__ = app_binary_file_name ? _fbb.CreateVector<int8_t>(*app_binary_file_name) : 0;
1920   return chre::fbs::CreateLoadNanoappRequest(
1921       _fbb,
1922       transaction_id,
1923       app_id,
1924       app_version,
1925       target_api_version,
1926       app_binary__,
1927       fragment_id,
1928       total_app_size,
1929       app_binary_file_name__,
1930       app_flags,
1931       respond_before_start);
1932 }
1933 
1934 flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1935 
1936 struct LoadNanoappResponseT : public flatbuffers::NativeTable {
1937   typedef LoadNanoappResponse TableType;
1938   uint32_t transaction_id;
1939   bool success;
1940   uint32_t fragment_id;
1941   LoadNanoappResponseT()
1942       : transaction_id(0),
1943         success(false),
1944         fragment_id(0) {
1945   }
1946 };
1947 
1948 struct LoadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1949   typedef LoadNanoappResponseT NativeTableType;
1950   typedef LoadNanoappResponseBuilder Builder;
1951   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1952     VT_TRANSACTION_ID = 4,
1953     VT_SUCCESS = 6,
1954     VT_FRAGMENT_ID = 8
1955   };
1956   uint32_t transaction_id() const {
1957     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
1958   }
1959   bool mutate_transaction_id(uint32_t _transaction_id) {
1960     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
1961   }
1962   /// Denotes whether a load request succeeded or failed.
1963   /// If any fragment of a load request fails, the entire load request for
1964   /// the same transaction will fail.
1965   bool success() const {
1966     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
1967   }
1968   bool mutate_success(bool _success) {
1969     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
1970   }
1971   /// The fragment count of the load reponse is for.
1972   uint32_t fragment_id() const {
1973     return GetField<uint32_t>(VT_FRAGMENT_ID, 0);
1974   }
1975   bool mutate_fragment_id(uint32_t _fragment_id) {
1976     return SetField<uint32_t>(VT_FRAGMENT_ID, _fragment_id, 0);
1977   }
1978   bool Verify(flatbuffers::Verifier &verifier) const {
1979     return VerifyTableStart(verifier) &&
1980            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
1981            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
1982            VerifyField<uint32_t>(verifier, VT_FRAGMENT_ID) &&
1983            verifier.EndTable();
1984   }
1985   LoadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1986   void UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1987   static flatbuffers::Offset<LoadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1988 };
1989 
1990 struct LoadNanoappResponseBuilder {
1991   typedef LoadNanoappResponse Table;
1992   flatbuffers::FlatBufferBuilder &fbb_;
1993   flatbuffers::uoffset_t start_;
1994   void add_transaction_id(uint32_t transaction_id) {
1995     fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
1996   }
1997   void add_success(bool success) {
1998     fbb_.AddElement<uint8_t>(LoadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
1999   }
2000   void add_fragment_id(uint32_t fragment_id) {
2001     fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_FRAGMENT_ID, fragment_id, 0);
2002   }
2003   explicit LoadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2004         : fbb_(_fbb) {
2005     start_ = fbb_.StartTable();
2006   }
2007   LoadNanoappResponseBuilder &operator=(const LoadNanoappResponseBuilder &);
2008   flatbuffers::Offset<LoadNanoappResponse> Finish() {
2009     const auto end = fbb_.EndTable(start_);
2010     auto o = flatbuffers::Offset<LoadNanoappResponse>(end);
2011     return o;
2012   }
2013 };
2014 
2015 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(
2016     flatbuffers::FlatBufferBuilder &_fbb,
2017     uint32_t transaction_id = 0,
2018     bool success = false,
2019     uint32_t fragment_id = 0) {
2020   LoadNanoappResponseBuilder builder_(_fbb);
2021   builder_.add_fragment_id(fragment_id);
2022   builder_.add_transaction_id(transaction_id);
2023   builder_.add_success(success);
2024   return builder_.Finish();
2025 }
2026 
2027 flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2028 
2029 struct UnloadNanoappRequestT : public flatbuffers::NativeTable {
2030   typedef UnloadNanoappRequest TableType;
2031   uint32_t transaction_id;
2032   uint64_t app_id;
2033   bool allow_system_nanoapp_unload;
2034   UnloadNanoappRequestT()
2035       : transaction_id(0),
2036         app_id(0),
2037         allow_system_nanoapp_unload(false) {
2038   }
2039 };
2040 
2041 struct UnloadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2042   typedef UnloadNanoappRequestT NativeTableType;
2043   typedef UnloadNanoappRequestBuilder Builder;
2044   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2045     VT_TRANSACTION_ID = 4,
2046     VT_APP_ID = 6,
2047     VT_ALLOW_SYSTEM_NANOAPP_UNLOAD = 8
2048   };
2049   uint32_t transaction_id() const {
2050     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
2051   }
2052   bool mutate_transaction_id(uint32_t _transaction_id) {
2053     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
2054   }
2055   uint64_t app_id() const {
2056     return GetField<uint64_t>(VT_APP_ID, 0);
2057   }
2058   bool mutate_app_id(uint64_t _app_id) {
2059     return SetField<uint64_t>(VT_APP_ID, _app_id, 0);
2060   }
2061   /// Set to true to allow this request to unload nanoapps identified as "system
2062   /// nanoapps", i.e. ones with is_system set to true in NanoappListResponse.
2063   bool allow_system_nanoapp_unload() const {
2064     return GetField<uint8_t>(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, 0) != 0;
2065   }
2066   bool mutate_allow_system_nanoapp_unload(bool _allow_system_nanoapp_unload) {
2067     return SetField<uint8_t>(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(_allow_system_nanoapp_unload), 0);
2068   }
2069   bool Verify(flatbuffers::Verifier &verifier) const {
2070     return VerifyTableStart(verifier) &&
2071            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
2072            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
2073            VerifyField<uint8_t>(verifier, VT_ALLOW_SYSTEM_NANOAPP_UNLOAD) &&
2074            verifier.EndTable();
2075   }
2076   UnloadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2077   void UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2078   static flatbuffers::Offset<UnloadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2079 };
2080 
2081 struct UnloadNanoappRequestBuilder {
2082   typedef UnloadNanoappRequest Table;
2083   flatbuffers::FlatBufferBuilder &fbb_;
2084   flatbuffers::uoffset_t start_;
2085   void add_transaction_id(uint32_t transaction_id) {
2086     fbb_.AddElement<uint32_t>(UnloadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
2087   }
2088   void add_app_id(uint64_t app_id) {
2089     fbb_.AddElement<uint64_t>(UnloadNanoappRequest::VT_APP_ID, app_id, 0);
2090   }
2091   void add_allow_system_nanoapp_unload(bool allow_system_nanoapp_unload) {
2092     fbb_.AddElement<uint8_t>(UnloadNanoappRequest::VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(allow_system_nanoapp_unload), 0);
2093   }
2094   explicit UnloadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2095         : fbb_(_fbb) {
2096     start_ = fbb_.StartTable();
2097   }
2098   UnloadNanoappRequestBuilder &operator=(const UnloadNanoappRequestBuilder &);
2099   flatbuffers::Offset<UnloadNanoappRequest> Finish() {
2100     const auto end = fbb_.EndTable(start_);
2101     auto o = flatbuffers::Offset<UnloadNanoappRequest>(end);
2102     return o;
2103   }
2104 };
2105 
2106 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(
2107     flatbuffers::FlatBufferBuilder &_fbb,
2108     uint32_t transaction_id = 0,
2109     uint64_t app_id = 0,
2110     bool allow_system_nanoapp_unload = false) {
2111   UnloadNanoappRequestBuilder builder_(_fbb);
2112   builder_.add_app_id(app_id);
2113   builder_.add_transaction_id(transaction_id);
2114   builder_.add_allow_system_nanoapp_unload(allow_system_nanoapp_unload);
2115   return builder_.Finish();
2116 }
2117 
2118 flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2119 
2120 struct UnloadNanoappResponseT : public flatbuffers::NativeTable {
2121   typedef UnloadNanoappResponse TableType;
2122   uint32_t transaction_id;
2123   bool success;
2124   UnloadNanoappResponseT()
2125       : transaction_id(0),
2126         success(false) {
2127   }
2128 };
2129 
2130 struct UnloadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2131   typedef UnloadNanoappResponseT NativeTableType;
2132   typedef UnloadNanoappResponseBuilder Builder;
2133   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2134     VT_TRANSACTION_ID = 4,
2135     VT_SUCCESS = 6
2136   };
2137   uint32_t transaction_id() const {
2138     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
2139   }
2140   bool mutate_transaction_id(uint32_t _transaction_id) {
2141     return SetField<uint32_t>(VT_TRANSACTION_ID, _transaction_id, 0);
2142   }
2143   bool success() const {
2144     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
2145   }
2146   bool mutate_success(bool _success) {
2147     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
2148   }
2149   bool Verify(flatbuffers::Verifier &verifier) const {
2150     return VerifyTableStart(verifier) &&
2151            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
2152            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
2153            verifier.EndTable();
2154   }
2155   UnloadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2156   void UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2157   static flatbuffers::Offset<UnloadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2158 };
2159 
2160 struct UnloadNanoappResponseBuilder {
2161   typedef UnloadNanoappResponse Table;
2162   flatbuffers::FlatBufferBuilder &fbb_;
2163   flatbuffers::uoffset_t start_;
2164   void add_transaction_id(uint32_t transaction_id) {
2165     fbb_.AddElement<uint32_t>(UnloadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
2166   }
2167   void add_success(bool success) {
2168     fbb_.AddElement<uint8_t>(UnloadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
2169   }
2170   explicit UnloadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2171         : fbb_(_fbb) {
2172     start_ = fbb_.StartTable();
2173   }
2174   UnloadNanoappResponseBuilder &operator=(const UnloadNanoappResponseBuilder &);
2175   flatbuffers::Offset<UnloadNanoappResponse> Finish() {
2176     const auto end = fbb_.EndTable(start_);
2177     auto o = flatbuffers::Offset<UnloadNanoappResponse>(end);
2178     return o;
2179   }
2180 };
2181 
2182 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(
2183     flatbuffers::FlatBufferBuilder &_fbb,
2184     uint32_t transaction_id = 0,
2185     bool success = false) {
2186   UnloadNanoappResponseBuilder builder_(_fbb);
2187   builder_.add_transaction_id(transaction_id);
2188   builder_.add_success(success);
2189   return builder_.Finish();
2190 }
2191 
2192 flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2193 
2194 struct LogMessageT : public flatbuffers::NativeTable {
2195   typedef LogMessage TableType;
2196   std::vector<int8_t> buffer;
2197   LogMessageT() {
2198   }
2199 };
2200 
2201 /// Represents log messages from CHRE.
2202 struct LogMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2203   typedef LogMessageT NativeTableType;
2204   typedef LogMessageBuilder Builder;
2205   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2206     VT_BUFFER = 4
2207   };
2208   /// A buffer containing formatted log data. A flat array is used here to avoid
2209   /// overhead in serializing and deserializing. The format is as follows:
2210   ///
2211   /// uint8_t                 - log level (1 = error, 2 = warning,
2212   ///                                      3 = info, 4 = debug)
2213   /// uint64_t, little-endian - timestamp in nanoseconds
2214   /// char[]                  - message to log
2215   /// char, \0                - null-terminator
2216   ///
2217   /// This pattern repeats until the end of the buffer for multiple log
2218   /// messages. The last byte will always be a null-terminator. There are no
2219   /// padding bytes between these fields. Treat this like a packed struct and be
2220   /// cautious with unaligned access when reading/writing this buffer.
2221   const flatbuffers::Vector<int8_t> *buffer() const {
2222     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_BUFFER);
2223   }
2224   flatbuffers::Vector<int8_t> *mutable_buffer() {
2225     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_BUFFER);
2226   }
2227   bool Verify(flatbuffers::Verifier &verifier) const {
2228     return VerifyTableStart(verifier) &&
2229            VerifyOffset(verifier, VT_BUFFER) &&
2230            verifier.VerifyVector(buffer()) &&
2231            verifier.EndTable();
2232   }
2233   LogMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2234   void UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2235   static flatbuffers::Offset<LogMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2236 };
2237 
2238 struct LogMessageBuilder {
2239   typedef LogMessage Table;
2240   flatbuffers::FlatBufferBuilder &fbb_;
2241   flatbuffers::uoffset_t start_;
2242   void add_buffer(flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer) {
2243     fbb_.AddOffset(LogMessage::VT_BUFFER, buffer);
2244   }
2245   explicit LogMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2246         : fbb_(_fbb) {
2247     start_ = fbb_.StartTable();
2248   }
2249   LogMessageBuilder &operator=(const LogMessageBuilder &);
2250   flatbuffers::Offset<LogMessage> Finish() {
2251     const auto end = fbb_.EndTable(start_);
2252     auto o = flatbuffers::Offset<LogMessage>(end);
2253     return o;
2254   }
2255 };
2256 
2257 inline flatbuffers::Offset<LogMessage> CreateLogMessage(
2258     flatbuffers::FlatBufferBuilder &_fbb,
2259     flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer = 0) {
2260   LogMessageBuilder builder_(_fbb);
2261   builder_.add_buffer(buffer);
2262   return builder_.Finish();
2263 }
2264 
2265 inline flatbuffers::Offset<LogMessage> CreateLogMessageDirect(
2266     flatbuffers::FlatBufferBuilder &_fbb,
2267     const std::vector<int8_t> *buffer = nullptr) {
2268   auto buffer__ = buffer ? _fbb.CreateVector<int8_t>(*buffer) : 0;
2269   return chre::fbs::CreateLogMessage(
2270       _fbb,
2271       buffer__);
2272 }
2273 
2274 flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2275 
2276 struct TimeSyncMessageT : public flatbuffers::NativeTable {
2277   typedef TimeSyncMessage TableType;
2278   int64_t offset;
2279   TimeSyncMessageT()
2280       : offset(0) {
2281   }
2282 };
2283 
2284 /// Represents a message sent to CHRE to indicate AP timestamp for time sync
2285 struct TimeSyncMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2286   typedef TimeSyncMessageT NativeTableType;
2287   typedef TimeSyncMessageBuilder Builder;
2288   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2289     VT_OFFSET = 4
2290   };
2291   /// Offset between AP and CHRE timestamp
2292   int64_t offset() const {
2293     return GetField<int64_t>(VT_OFFSET, 0);
2294   }
2295   bool mutate_offset(int64_t _offset) {
2296     return SetField<int64_t>(VT_OFFSET, _offset, 0);
2297   }
2298   bool Verify(flatbuffers::Verifier &verifier) const {
2299     return VerifyTableStart(verifier) &&
2300            VerifyField<int64_t>(verifier, VT_OFFSET) &&
2301            verifier.EndTable();
2302   }
2303   TimeSyncMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2304   void UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2305   static flatbuffers::Offset<TimeSyncMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2306 };
2307 
2308 struct TimeSyncMessageBuilder {
2309   typedef TimeSyncMessage Table;
2310   flatbuffers::FlatBufferBuilder &fbb_;
2311   flatbuffers::uoffset_t start_;
2312   void add_offset(int64_t offset) {
2313     fbb_.AddElement<int64_t>(TimeSyncMessage::VT_OFFSET, offset, 0);
2314   }
2315   explicit TimeSyncMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2316         : fbb_(_fbb) {
2317     start_ = fbb_.StartTable();
2318   }
2319   TimeSyncMessageBuilder &operator=(const TimeSyncMessageBuilder &);
2320   flatbuffers::Offset<TimeSyncMessage> Finish() {
2321     const auto end = fbb_.EndTable(start_);
2322     auto o = flatbuffers::Offset<TimeSyncMessage>(end);
2323     return o;
2324   }
2325 };
2326 
2327 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(
2328     flatbuffers::FlatBufferBuilder &_fbb,
2329     int64_t offset = 0) {
2330   TimeSyncMessageBuilder builder_(_fbb);
2331   builder_.add_offset(offset);
2332   return builder_.Finish();
2333 }
2334 
2335 flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2336 
2337 struct DebugDumpRequestT : public flatbuffers::NativeTable {
2338   typedef DebugDumpRequest TableType;
2339   DebugDumpRequestT() {
2340   }
2341 };
2342 
2343 /// A request to gather and return debugging information. Only one debug dump
2344 /// session can be active at a time. Upon accepting a request, zero or more
2345 /// DebugDumpData messages are generated, followed by a DebugDumpResponse
2346 /// indicating the completion of the operation.
2347 struct DebugDumpRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2348   typedef DebugDumpRequestT NativeTableType;
2349   typedef DebugDumpRequestBuilder Builder;
2350   bool Verify(flatbuffers::Verifier &verifier) const {
2351     return VerifyTableStart(verifier) &&
2352            verifier.EndTable();
2353   }
2354   DebugDumpRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2355   void UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2356   static flatbuffers::Offset<DebugDumpRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2357 };
2358 
2359 struct DebugDumpRequestBuilder {
2360   typedef DebugDumpRequest Table;
2361   flatbuffers::FlatBufferBuilder &fbb_;
2362   flatbuffers::uoffset_t start_;
2363   explicit DebugDumpRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2364         : fbb_(_fbb) {
2365     start_ = fbb_.StartTable();
2366   }
2367   DebugDumpRequestBuilder &operator=(const DebugDumpRequestBuilder &);
2368   flatbuffers::Offset<DebugDumpRequest> Finish() {
2369     const auto end = fbb_.EndTable(start_);
2370     auto o = flatbuffers::Offset<DebugDumpRequest>(end);
2371     return o;
2372   }
2373 };
2374 
2375 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(
2376     flatbuffers::FlatBufferBuilder &_fbb) {
2377   DebugDumpRequestBuilder builder_(_fbb);
2378   return builder_.Finish();
2379 }
2380 
2381 flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2382 
2383 struct DebugDumpDataT : public flatbuffers::NativeTable {
2384   typedef DebugDumpData TableType;
2385   std::vector<int8_t> debug_str;
2386   DebugDumpDataT() {
2387   }
2388 };
2389 
2390 struct DebugDumpData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2391   typedef DebugDumpDataT NativeTableType;
2392   typedef DebugDumpDataBuilder Builder;
2393   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2394     VT_DEBUG_STR = 4
2395   };
2396   /// Null-terminated ASCII string containing debugging information
2397   const flatbuffers::Vector<int8_t> *debug_str() const {
2398     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
2399   }
2400   flatbuffers::Vector<int8_t> *mutable_debug_str() {
2401     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
2402   }
2403   bool Verify(flatbuffers::Verifier &verifier) const {
2404     return VerifyTableStart(verifier) &&
2405            VerifyOffset(verifier, VT_DEBUG_STR) &&
2406            verifier.VerifyVector(debug_str()) &&
2407            verifier.EndTable();
2408   }
2409   DebugDumpDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2410   void UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2411   static flatbuffers::Offset<DebugDumpData> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2412 };
2413 
2414 struct DebugDumpDataBuilder {
2415   typedef DebugDumpData Table;
2416   flatbuffers::FlatBufferBuilder &fbb_;
2417   flatbuffers::uoffset_t start_;
2418   void add_debug_str(flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str) {
2419     fbb_.AddOffset(DebugDumpData::VT_DEBUG_STR, debug_str);
2420   }
2421   explicit DebugDumpDataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2422         : fbb_(_fbb) {
2423     start_ = fbb_.StartTable();
2424   }
2425   DebugDumpDataBuilder &operator=(const DebugDumpDataBuilder &);
2426   flatbuffers::Offset<DebugDumpData> Finish() {
2427     const auto end = fbb_.EndTable(start_);
2428     auto o = flatbuffers::Offset<DebugDumpData>(end);
2429     return o;
2430   }
2431 };
2432 
2433 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(
2434     flatbuffers::FlatBufferBuilder &_fbb,
2435     flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str = 0) {
2436   DebugDumpDataBuilder builder_(_fbb);
2437   builder_.add_debug_str(debug_str);
2438   return builder_.Finish();
2439 }
2440 
2441 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpDataDirect(
2442     flatbuffers::FlatBufferBuilder &_fbb,
2443     const std::vector<int8_t> *debug_str = nullptr) {
2444   auto debug_str__ = debug_str ? _fbb.CreateVector<int8_t>(*debug_str) : 0;
2445   return chre::fbs::CreateDebugDumpData(
2446       _fbb,
2447       debug_str__);
2448 }
2449 
2450 flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2451 
2452 struct DebugDumpResponseT : public flatbuffers::NativeTable {
2453   typedef DebugDumpResponse TableType;
2454   bool success;
2455   uint32_t data_count;
2456   DebugDumpResponseT()
2457       : success(false),
2458         data_count(0) {
2459   }
2460 };
2461 
2462 struct DebugDumpResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2463   typedef DebugDumpResponseT NativeTableType;
2464   typedef DebugDumpResponseBuilder Builder;
2465   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2466     VT_SUCCESS = 4,
2467     VT_DATA_COUNT = 6
2468   };
2469   /// true if the request was accepted and a dump was performed, false if it was
2470   /// rejected or failed to complete for some reason
2471   bool success() const {
2472     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
2473   }
2474   bool mutate_success(bool _success) {
2475     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
2476   }
2477   /// The number of DebugDumpData messages sent in this session
2478   uint32_t data_count() const {
2479     return GetField<uint32_t>(VT_DATA_COUNT, 0);
2480   }
2481   bool mutate_data_count(uint32_t _data_count) {
2482     return SetField<uint32_t>(VT_DATA_COUNT, _data_count, 0);
2483   }
2484   bool Verify(flatbuffers::Verifier &verifier) const {
2485     return VerifyTableStart(verifier) &&
2486            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
2487            VerifyField<uint32_t>(verifier, VT_DATA_COUNT) &&
2488            verifier.EndTable();
2489   }
2490   DebugDumpResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2491   void UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2492   static flatbuffers::Offset<DebugDumpResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2493 };
2494 
2495 struct DebugDumpResponseBuilder {
2496   typedef DebugDumpResponse Table;
2497   flatbuffers::FlatBufferBuilder &fbb_;
2498   flatbuffers::uoffset_t start_;
2499   void add_success(bool success) {
2500     fbb_.AddElement<uint8_t>(DebugDumpResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
2501   }
2502   void add_data_count(uint32_t data_count) {
2503     fbb_.AddElement<uint32_t>(DebugDumpResponse::VT_DATA_COUNT, data_count, 0);
2504   }
2505   explicit DebugDumpResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2506         : fbb_(_fbb) {
2507     start_ = fbb_.StartTable();
2508   }
2509   DebugDumpResponseBuilder &operator=(const DebugDumpResponseBuilder &);
2510   flatbuffers::Offset<DebugDumpResponse> Finish() {
2511     const auto end = fbb_.EndTable(start_);
2512     auto o = flatbuffers::Offset<DebugDumpResponse>(end);
2513     return o;
2514   }
2515 };
2516 
2517 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(
2518     flatbuffers::FlatBufferBuilder &_fbb,
2519     bool success = false,
2520     uint32_t data_count = 0) {
2521   DebugDumpResponseBuilder builder_(_fbb);
2522   builder_.add_data_count(data_count);
2523   builder_.add_success(success);
2524   return builder_.Finish();
2525 }
2526 
2527 flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2528 
2529 struct TimeSyncRequestT : public flatbuffers::NativeTable {
2530   typedef TimeSyncRequest TableType;
2531   TimeSyncRequestT() {
2532   }
2533 };
2534 
2535 /// A request from CHRE for host to initiate a time sync message
2536 /// (system feature, platform-specific - not all platforms necessarily use this)
2537 struct TimeSyncRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2538   typedef TimeSyncRequestT NativeTableType;
2539   typedef TimeSyncRequestBuilder Builder;
2540   bool Verify(flatbuffers::Verifier &verifier) const {
2541     return VerifyTableStart(verifier) &&
2542            verifier.EndTable();
2543   }
2544   TimeSyncRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2545   void UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2546   static flatbuffers::Offset<TimeSyncRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2547 };
2548 
2549 struct TimeSyncRequestBuilder {
2550   typedef TimeSyncRequest Table;
2551   flatbuffers::FlatBufferBuilder &fbb_;
2552   flatbuffers::uoffset_t start_;
2553   explicit TimeSyncRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2554         : fbb_(_fbb) {
2555     start_ = fbb_.StartTable();
2556   }
2557   TimeSyncRequestBuilder &operator=(const TimeSyncRequestBuilder &);
2558   flatbuffers::Offset<TimeSyncRequest> Finish() {
2559     const auto end = fbb_.EndTable(start_);
2560     auto o = flatbuffers::Offset<TimeSyncRequest>(end);
2561     return o;
2562   }
2563 };
2564 
2565 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(
2566     flatbuffers::FlatBufferBuilder &_fbb) {
2567   TimeSyncRequestBuilder builder_(_fbb);
2568   return builder_.Finish();
2569 }
2570 
2571 flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2572 
2573 struct LowPowerMicAccessRequestT : public flatbuffers::NativeTable {
2574   typedef LowPowerMicAccessRequest TableType;
2575   LowPowerMicAccessRequestT() {
2576   }
2577 };
2578 
2579 /// Request from CHRE to enable direct access to data from the low-power
2580 /// microphone. On some systems, coordination via the AP (e.g. with
2581 /// SoundTrigger HAL) is needed to ensure this capability is powered up when
2582 /// CHRE needs it. The host does not send a response.
2583 struct LowPowerMicAccessRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2584   typedef LowPowerMicAccessRequestT NativeTableType;
2585   typedef LowPowerMicAccessRequestBuilder Builder;
2586   bool Verify(flatbuffers::Verifier &verifier) const {
2587     return VerifyTableStart(verifier) &&
2588            verifier.EndTable();
2589   }
2590   LowPowerMicAccessRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2591   void UnPackTo(LowPowerMicAccessRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2592   static flatbuffers::Offset<LowPowerMicAccessRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2593 };
2594 
2595 struct LowPowerMicAccessRequestBuilder {
2596   typedef LowPowerMicAccessRequest Table;
2597   flatbuffers::FlatBufferBuilder &fbb_;
2598   flatbuffers::uoffset_t start_;
2599   explicit LowPowerMicAccessRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2600         : fbb_(_fbb) {
2601     start_ = fbb_.StartTable();
2602   }
2603   LowPowerMicAccessRequestBuilder &operator=(const LowPowerMicAccessRequestBuilder &);
2604   flatbuffers::Offset<LowPowerMicAccessRequest> Finish() {
2605     const auto end = fbb_.EndTable(start_);
2606     auto o = flatbuffers::Offset<LowPowerMicAccessRequest>(end);
2607     return o;
2608   }
2609 };
2610 
2611 inline flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(
2612     flatbuffers::FlatBufferBuilder &_fbb) {
2613   LowPowerMicAccessRequestBuilder builder_(_fbb);
2614   return builder_.Finish();
2615 }
2616 
2617 flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2618 
2619 struct LowPowerMicAccessReleaseT : public flatbuffers::NativeTable {
2620   typedef LowPowerMicAccessRelease TableType;
2621   LowPowerMicAccessReleaseT() {
2622   }
2623 };
2624 
2625 /// Notification from CHRE that it no longer needs direct access to low-power
2626 /// microphone data.
2627 struct LowPowerMicAccessRelease FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2628   typedef LowPowerMicAccessReleaseT NativeTableType;
2629   typedef LowPowerMicAccessReleaseBuilder Builder;
2630   bool Verify(flatbuffers::Verifier &verifier) const {
2631     return VerifyTableStart(verifier) &&
2632            verifier.EndTable();
2633   }
2634   LowPowerMicAccessReleaseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2635   void UnPackTo(LowPowerMicAccessReleaseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2636   static flatbuffers::Offset<LowPowerMicAccessRelease> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2637 };
2638 
2639 struct LowPowerMicAccessReleaseBuilder {
2640   typedef LowPowerMicAccessRelease Table;
2641   flatbuffers::FlatBufferBuilder &fbb_;
2642   flatbuffers::uoffset_t start_;
2643   explicit LowPowerMicAccessReleaseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2644         : fbb_(_fbb) {
2645     start_ = fbb_.StartTable();
2646   }
2647   LowPowerMicAccessReleaseBuilder &operator=(const LowPowerMicAccessReleaseBuilder &);
2648   flatbuffers::Offset<LowPowerMicAccessRelease> Finish() {
2649     const auto end = fbb_.EndTable(start_);
2650     auto o = flatbuffers::Offset<LowPowerMicAccessRelease>(end);
2651     return o;
2652   }
2653 };
2654 
2655 inline flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(
2656     flatbuffers::FlatBufferBuilder &_fbb) {
2657   LowPowerMicAccessReleaseBuilder builder_(_fbb);
2658   return builder_.Finish();
2659 }
2660 
2661 flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2662 
2663 struct SettingChangeMessageT : public flatbuffers::NativeTable {
2664   typedef SettingChangeMessage TableType;
2665   chre::fbs::Setting setting;
2666   chre::fbs::SettingState state;
2667   SettingChangeMessageT()
2668       : setting(chre::fbs::Setting::LOCATION),
2669         state(chre::fbs::SettingState::DISABLED) {
2670   }
2671 };
2672 
2673 /// Notification from the host that a system setting has changed
2674 struct SettingChangeMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2675   typedef SettingChangeMessageT NativeTableType;
2676   typedef SettingChangeMessageBuilder Builder;
2677   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2678     VT_SETTING = 4,
2679     VT_STATE = 6
2680   };
2681   /// The setting that has changed
2682   chre::fbs::Setting setting() const {
2683     return static_cast<chre::fbs::Setting>(GetField<int8_t>(VT_SETTING, 0));
2684   }
2685   bool mutate_setting(chre::fbs::Setting _setting) {
2686     return SetField<int8_t>(VT_SETTING, static_cast<int8_t>(_setting), 0);
2687   }
2688   /// The new setting value
2689   chre::fbs::SettingState state() const {
2690     return static_cast<chre::fbs::SettingState>(GetField<int8_t>(VT_STATE, 0));
2691   }
2692   bool mutate_state(chre::fbs::SettingState _state) {
2693     return SetField<int8_t>(VT_STATE, static_cast<int8_t>(_state), 0);
2694   }
2695   bool Verify(flatbuffers::Verifier &verifier) const {
2696     return VerifyTableStart(verifier) &&
2697            VerifyField<int8_t>(verifier, VT_SETTING) &&
2698            VerifyField<int8_t>(verifier, VT_STATE) &&
2699            verifier.EndTable();
2700   }
2701   SettingChangeMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2702   void UnPackTo(SettingChangeMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2703   static flatbuffers::Offset<SettingChangeMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2704 };
2705 
2706 struct SettingChangeMessageBuilder {
2707   typedef SettingChangeMessage Table;
2708   flatbuffers::FlatBufferBuilder &fbb_;
2709   flatbuffers::uoffset_t start_;
2710   void add_setting(chre::fbs::Setting setting) {
2711     fbb_.AddElement<int8_t>(SettingChangeMessage::VT_SETTING, static_cast<int8_t>(setting), 0);
2712   }
2713   void add_state(chre::fbs::SettingState state) {
2714     fbb_.AddElement<int8_t>(SettingChangeMessage::VT_STATE, static_cast<int8_t>(state), 0);
2715   }
2716   explicit SettingChangeMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2717         : fbb_(_fbb) {
2718     start_ = fbb_.StartTable();
2719   }
2720   SettingChangeMessageBuilder &operator=(const SettingChangeMessageBuilder &);
2721   flatbuffers::Offset<SettingChangeMessage> Finish() {
2722     const auto end = fbb_.EndTable(start_);
2723     auto o = flatbuffers::Offset<SettingChangeMessage>(end);
2724     return o;
2725   }
2726 };
2727 
2728 inline flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(
2729     flatbuffers::FlatBufferBuilder &_fbb,
2730     chre::fbs::Setting setting = chre::fbs::Setting::LOCATION,
2731     chre::fbs::SettingState state = chre::fbs::SettingState::DISABLED) {
2732   SettingChangeMessageBuilder builder_(_fbb);
2733   builder_.add_state(state);
2734   builder_.add_setting(setting);
2735   return builder_.Finish();
2736 }
2737 
2738 flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2739 
2740 struct LogMessageV2T : public flatbuffers::NativeTable {
2741   typedef LogMessageV2 TableType;
2742   std::vector<int8_t> buffer;
2743   uint32_t num_logs_dropped;
2744   LogMessageV2T()
2745       : num_logs_dropped(0) {
2746   }
2747 };
2748 
2749 /// Represents V2 log messages from CHRE.
2750 struct LogMessageV2 FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2751   typedef LogMessageV2T NativeTableType;
2752   typedef LogMessageV2Builder Builder;
2753   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2754     VT_BUFFER = 4,
2755     VT_NUM_LOGS_DROPPED = 6
2756   };
2757   /// A buffer containing formatted log data. A flat array is used here to avoid
2758   /// overhead in serializing and deserializing. The format is as follows:
2759   ///
2760   /// uint8_t                 - Log metadata, encoded as follows:
2761   ///                           [EI(Upper nibble) | Level(Lower nibble)]
2762   ///                            * Log Type
2763   ///                              (0 = No encoding, 1 = Tokenized log, 2 = BT snoop log)
2764   ///                            * LogBuffer log level (1 = error, 2 = warn,
2765   ///                                                   3 = info,  4 = debug,
2766   ///                                                   5 = verbose)
2767   /// uint32_t, little-endian - timestamp in milliseconds
2768   /// char[]                  - Log data buffer
2769   ///
2770   /// The log data buffer format is as follows:
2771   /// * Unencoded (string) logs: The log buffer can be interpreted as a NULL
2772   ///   terminated string (eg: pass to string manipulation functions, get its
2773   ///   size via strlen(), etc.).
2774   ///
2775   /// * Encoded logs: The first byte of the log buffer indicates the size of
2776   ///   the actual encoded data to follow. For example, if a tokenized log of
2777   ///   size 24 bytes were to be represented, a buffer of size 25 bytes would
2778   ///   be needed to encode this as: [Size(1B) | Data(24B)]. A decoder would
2779   ///   then have to decode this starting from a 1 byte offset from the
2780   ///   received buffer.
2781   ///
2782   /// * Bt Snoop logs: The first byte of the log buffer indicates the direction
2783   ///   of the bt snoop log, depending on whether it is incoming for the BT
2784   ///   controller or outgoing to the arbiter. The second byte indicates the size
2785   ///   of the actual BT payload followed. For example, if a bt snoop log of
2786   ///   size 24 bytes were to be represented, a buffer of size 26 bytes would
2787   ///   be needed to encode this as: [Direction(1B) | Size(1B) | Data(24B)].
2788   ///
2789   /// This pattern repeats until the end of the buffer for multiple log
2790   /// messages. The last byte will always be a null-terminator. There are no
2791   /// padding bytes between these fields. Treat this like a packed struct and be
2792   /// cautious with unaligned access when reading/writing this buffer.
2793   /// Note that the log message might not be null-terminated if an encoding is
2794   /// used.
2795   const flatbuffers::Vector<int8_t> *buffer() const {
2796     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_BUFFER);
2797   }
2798   flatbuffers::Vector<int8_t> *mutable_buffer() {
2799     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_BUFFER);
2800   }
2801   /// The number of logs dropped since CHRE started
2802   uint32_t num_logs_dropped() const {
2803     return GetField<uint32_t>(VT_NUM_LOGS_DROPPED, 0);
2804   }
2805   bool mutate_num_logs_dropped(uint32_t _num_logs_dropped) {
2806     return SetField<uint32_t>(VT_NUM_LOGS_DROPPED, _num_logs_dropped, 0);
2807   }
2808   bool Verify(flatbuffers::Verifier &verifier) const {
2809     return VerifyTableStart(verifier) &&
2810            VerifyOffset(verifier, VT_BUFFER) &&
2811            verifier.VerifyVector(buffer()) &&
2812            VerifyField<uint32_t>(verifier, VT_NUM_LOGS_DROPPED) &&
2813            verifier.EndTable();
2814   }
2815   LogMessageV2T *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2816   void UnPackTo(LogMessageV2T *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2817   static flatbuffers::Offset<LogMessageV2> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2818 };
2819 
2820 struct LogMessageV2Builder {
2821   typedef LogMessageV2 Table;
2822   flatbuffers::FlatBufferBuilder &fbb_;
2823   flatbuffers::uoffset_t start_;
2824   void add_buffer(flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer) {
2825     fbb_.AddOffset(LogMessageV2::VT_BUFFER, buffer);
2826   }
2827   void add_num_logs_dropped(uint32_t num_logs_dropped) {
2828     fbb_.AddElement<uint32_t>(LogMessageV2::VT_NUM_LOGS_DROPPED, num_logs_dropped, 0);
2829   }
2830   explicit LogMessageV2Builder(flatbuffers::FlatBufferBuilder &_fbb)
2831         : fbb_(_fbb) {
2832     start_ = fbb_.StartTable();
2833   }
2834   LogMessageV2Builder &operator=(const LogMessageV2Builder &);
2835   flatbuffers::Offset<LogMessageV2> Finish() {
2836     const auto end = fbb_.EndTable(start_);
2837     auto o = flatbuffers::Offset<LogMessageV2>(end);
2838     return o;
2839   }
2840 };
2841 
2842 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(
2843     flatbuffers::FlatBufferBuilder &_fbb,
2844     flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer = 0,
2845     uint32_t num_logs_dropped = 0) {
2846   LogMessageV2Builder builder_(_fbb);
2847   builder_.add_num_logs_dropped(num_logs_dropped);
2848   builder_.add_buffer(buffer);
2849   return builder_.Finish();
2850 }
2851 
2852 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2Direct(
2853     flatbuffers::FlatBufferBuilder &_fbb,
2854     const std::vector<int8_t> *buffer = nullptr,
2855     uint32_t num_logs_dropped = 0) {
2856   auto buffer__ = buffer ? _fbb.CreateVector<int8_t>(*buffer) : 0;
2857   return chre::fbs::CreateLogMessageV2(
2858       _fbb,
2859       buffer__,
2860       num_logs_dropped);
2861 }
2862 
2863 flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2864 
2865 struct SelfTestRequestT : public flatbuffers::NativeTable {
2866   typedef SelfTestRequest TableType;
2867   SelfTestRequestT() {
2868   }
2869 };
2870 
2871 struct SelfTestRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2872   typedef SelfTestRequestT NativeTableType;
2873   typedef SelfTestRequestBuilder Builder;
2874   bool Verify(flatbuffers::Verifier &verifier) const {
2875     return VerifyTableStart(verifier) &&
2876            verifier.EndTable();
2877   }
2878   SelfTestRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2879   void UnPackTo(SelfTestRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2880   static flatbuffers::Offset<SelfTestRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2881 };
2882 
2883 struct SelfTestRequestBuilder {
2884   typedef SelfTestRequest Table;
2885   flatbuffers::FlatBufferBuilder &fbb_;
2886   flatbuffers::uoffset_t start_;
2887   explicit SelfTestRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2888         : fbb_(_fbb) {
2889     start_ = fbb_.StartTable();
2890   }
2891   SelfTestRequestBuilder &operator=(const SelfTestRequestBuilder &);
2892   flatbuffers::Offset<SelfTestRequest> Finish() {
2893     const auto end = fbb_.EndTable(start_);
2894     auto o = flatbuffers::Offset<SelfTestRequest>(end);
2895     return o;
2896   }
2897 };
2898 
2899 inline flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(
2900     flatbuffers::FlatBufferBuilder &_fbb) {
2901   SelfTestRequestBuilder builder_(_fbb);
2902   return builder_.Finish();
2903 }
2904 
2905 flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2906 
2907 struct SelfTestResponseT : public flatbuffers::NativeTable {
2908   typedef SelfTestResponse TableType;
2909   bool success;
2910   SelfTestResponseT()
2911       : success(false) {
2912   }
2913 };
2914 
2915 struct SelfTestResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2916   typedef SelfTestResponseT NativeTableType;
2917   typedef SelfTestResponseBuilder Builder;
2918   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2919     VT_SUCCESS = 4
2920   };
2921   bool success() const {
2922     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
2923   }
2924   bool mutate_success(bool _success) {
2925     return SetField<uint8_t>(VT_SUCCESS, static_cast<uint8_t>(_success), 0);
2926   }
2927   bool Verify(flatbuffers::Verifier &verifier) const {
2928     return VerifyTableStart(verifier) &&
2929            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
2930            verifier.EndTable();
2931   }
2932   SelfTestResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2933   void UnPackTo(SelfTestResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2934   static flatbuffers::Offset<SelfTestResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2935 };
2936 
2937 struct SelfTestResponseBuilder {
2938   typedef SelfTestResponse Table;
2939   flatbuffers::FlatBufferBuilder &fbb_;
2940   flatbuffers::uoffset_t start_;
2941   void add_success(bool success) {
2942     fbb_.AddElement<uint8_t>(SelfTestResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
2943   }
2944   explicit SelfTestResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2945         : fbb_(_fbb) {
2946     start_ = fbb_.StartTable();
2947   }
2948   SelfTestResponseBuilder &operator=(const SelfTestResponseBuilder &);
2949   flatbuffers::Offset<SelfTestResponse> Finish() {
2950     const auto end = fbb_.EndTable(start_);
2951     auto o = flatbuffers::Offset<SelfTestResponse>(end);
2952     return o;
2953   }
2954 };
2955 
2956 inline flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(
2957     flatbuffers::FlatBufferBuilder &_fbb,
2958     bool success = false) {
2959   SelfTestResponseBuilder builder_(_fbb);
2960   builder_.add_success(success);
2961   return builder_.Finish();
2962 }
2963 
2964 flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2965 
2966 struct HostEndpointConnectedT : public flatbuffers::NativeTable {
2967   typedef HostEndpointConnected TableType;
2968   uint16_t host_endpoint;
2969   uint8_t type;
2970   std::vector<int8_t> package_name;
2971   std::vector<int8_t> attribution_tag;
2972   HostEndpointConnectedT()
2973       : host_endpoint(0),
2974         type(0) {
2975   }
2976 };
2977 
2978 struct HostEndpointConnected FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2979   typedef HostEndpointConnectedT NativeTableType;
2980   typedef HostEndpointConnectedBuilder Builder;
2981   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2982     VT_HOST_ENDPOINT = 4,
2983     VT_TYPE = 6,
2984     VT_PACKAGE_NAME = 8,
2985     VT_ATTRIBUTION_TAG = 10
2986   };
2987   /// The host-side endpoint that has connected to the framework.
2988   uint16_t host_endpoint() const {
2989     return GetField<uint16_t>(VT_HOST_ENDPOINT, 0);
2990   }
2991   bool mutate_host_endpoint(uint16_t _host_endpoint) {
2992     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 0);
2993   }
2994   /// The type of host endpoint, which should be any of the CHRE_HOST_ENDPOINT_TYPE_*
2995   /// values defined in the chre_api/chre/event.h.
2996   uint8_t type() const {
2997     return GetField<uint8_t>(VT_TYPE, 0);
2998   }
2999   bool mutate_type(uint8_t _type) {
3000     return SetField<uint8_t>(VT_TYPE, _type, 0);
3001   }
3002   /// The (optional) package name associated with the host endpoint.
3003   const flatbuffers::Vector<int8_t> *package_name() const {
3004     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_PACKAGE_NAME);
3005   }
3006   flatbuffers::Vector<int8_t> *mutable_package_name() {
3007     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_PACKAGE_NAME);
3008   }
3009   /// The (optional) attribution tag associated with this host.
3010   const flatbuffers::Vector<int8_t> *attribution_tag() const {
3011     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_ATTRIBUTION_TAG);
3012   }
3013   flatbuffers::Vector<int8_t> *mutable_attribution_tag() {
3014     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_ATTRIBUTION_TAG);
3015   }
3016   bool Verify(flatbuffers::Verifier &verifier) const {
3017     return VerifyTableStart(verifier) &&
3018            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
3019            VerifyField<uint8_t>(verifier, VT_TYPE) &&
3020            VerifyOffset(verifier, VT_PACKAGE_NAME) &&
3021            verifier.VerifyVector(package_name()) &&
3022            VerifyOffset(verifier, VT_ATTRIBUTION_TAG) &&
3023            verifier.VerifyVector(attribution_tag()) &&
3024            verifier.EndTable();
3025   }
3026   HostEndpointConnectedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3027   void UnPackTo(HostEndpointConnectedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3028   static flatbuffers::Offset<HostEndpointConnected> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3029 };
3030 
3031 struct HostEndpointConnectedBuilder {
3032   typedef HostEndpointConnected Table;
3033   flatbuffers::FlatBufferBuilder &fbb_;
3034   flatbuffers::uoffset_t start_;
3035   void add_host_endpoint(uint16_t host_endpoint) {
3036     fbb_.AddElement<uint16_t>(HostEndpointConnected::VT_HOST_ENDPOINT, host_endpoint, 0);
3037   }
3038   void add_type(uint8_t type) {
3039     fbb_.AddElement<uint8_t>(HostEndpointConnected::VT_TYPE, type, 0);
3040   }
3041   void add_package_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> package_name) {
3042     fbb_.AddOffset(HostEndpointConnected::VT_PACKAGE_NAME, package_name);
3043   }
3044   void add_attribution_tag(flatbuffers::Offset<flatbuffers::Vector<int8_t>> attribution_tag) {
3045     fbb_.AddOffset(HostEndpointConnected::VT_ATTRIBUTION_TAG, attribution_tag);
3046   }
3047   explicit HostEndpointConnectedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3048         : fbb_(_fbb) {
3049     start_ = fbb_.StartTable();
3050   }
3051   HostEndpointConnectedBuilder &operator=(const HostEndpointConnectedBuilder &);
3052   flatbuffers::Offset<HostEndpointConnected> Finish() {
3053     const auto end = fbb_.EndTable(start_);
3054     auto o = flatbuffers::Offset<HostEndpointConnected>(end);
3055     return o;
3056   }
3057 };
3058 
3059 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(
3060     flatbuffers::FlatBufferBuilder &_fbb,
3061     uint16_t host_endpoint = 0,
3062     uint8_t type = 0,
3063     flatbuffers::Offset<flatbuffers::Vector<int8_t>> package_name = 0,
3064     flatbuffers::Offset<flatbuffers::Vector<int8_t>> attribution_tag = 0) {
3065   HostEndpointConnectedBuilder builder_(_fbb);
3066   builder_.add_attribution_tag(attribution_tag);
3067   builder_.add_package_name(package_name);
3068   builder_.add_host_endpoint(host_endpoint);
3069   builder_.add_type(type);
3070   return builder_.Finish();
3071 }
3072 
3073 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnectedDirect(
3074     flatbuffers::FlatBufferBuilder &_fbb,
3075     uint16_t host_endpoint = 0,
3076     uint8_t type = 0,
3077     const std::vector<int8_t> *package_name = nullptr,
3078     const std::vector<int8_t> *attribution_tag = nullptr) {
3079   auto package_name__ = package_name ? _fbb.CreateVector<int8_t>(*package_name) : 0;
3080   auto attribution_tag__ = attribution_tag ? _fbb.CreateVector<int8_t>(*attribution_tag) : 0;
3081   return chre::fbs::CreateHostEndpointConnected(
3082       _fbb,
3083       host_endpoint,
3084       type,
3085       package_name__,
3086       attribution_tag__);
3087 }
3088 
3089 flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3090 
3091 struct HostEndpointDisconnectedT : public flatbuffers::NativeTable {
3092   typedef HostEndpointDisconnected TableType;
3093   uint16_t host_endpoint;
3094   HostEndpointDisconnectedT()
3095       : host_endpoint(0) {
3096   }
3097 };
3098 
3099 struct HostEndpointDisconnected FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3100   typedef HostEndpointDisconnectedT NativeTableType;
3101   typedef HostEndpointDisconnectedBuilder Builder;
3102   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3103     VT_HOST_ENDPOINT = 4
3104   };
3105   /// The host-side endpoint that has disconnected from the framework.
3106   uint16_t host_endpoint() const {
3107     return GetField<uint16_t>(VT_HOST_ENDPOINT, 0);
3108   }
3109   bool mutate_host_endpoint(uint16_t _host_endpoint) {
3110     return SetField<uint16_t>(VT_HOST_ENDPOINT, _host_endpoint, 0);
3111   }
3112   bool Verify(flatbuffers::Verifier &verifier) const {
3113     return VerifyTableStart(verifier) &&
3114            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
3115            verifier.EndTable();
3116   }
3117   HostEndpointDisconnectedT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3118   void UnPackTo(HostEndpointDisconnectedT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3119   static flatbuffers::Offset<HostEndpointDisconnected> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3120 };
3121 
3122 struct HostEndpointDisconnectedBuilder {
3123   typedef HostEndpointDisconnected Table;
3124   flatbuffers::FlatBufferBuilder &fbb_;
3125   flatbuffers::uoffset_t start_;
3126   void add_host_endpoint(uint16_t host_endpoint) {
3127     fbb_.AddElement<uint16_t>(HostEndpointDisconnected::VT_HOST_ENDPOINT, host_endpoint, 0);
3128   }
3129   explicit HostEndpointDisconnectedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3130         : fbb_(_fbb) {
3131     start_ = fbb_.StartTable();
3132   }
3133   HostEndpointDisconnectedBuilder &operator=(const HostEndpointDisconnectedBuilder &);
3134   flatbuffers::Offset<HostEndpointDisconnected> Finish() {
3135     const auto end = fbb_.EndTable(start_);
3136     auto o = flatbuffers::Offset<HostEndpointDisconnected>(end);
3137     return o;
3138   }
3139 };
3140 
3141 inline flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(
3142     flatbuffers::FlatBufferBuilder &_fbb,
3143     uint16_t host_endpoint = 0) {
3144   HostEndpointDisconnectedBuilder builder_(_fbb);
3145   builder_.add_host_endpoint(host_endpoint);
3146   return builder_.Finish();
3147 }
3148 
3149 flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3150 
3151 struct MetricLogT : public flatbuffers::NativeTable {
3152   typedef MetricLog TableType;
3153   uint32_t id;
3154   std::vector<int8_t> encoded_metric;
3155   MetricLogT()
3156       : id(0) {
3157   }
3158 };
3159 
3160 struct MetricLog FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3161   typedef MetricLogT NativeTableType;
3162   typedef MetricLogBuilder Builder;
3163   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3164     VT_ID = 4,
3165     VT_ENCODED_METRIC = 6
3166   };
3167   uint32_t id() const {
3168     return GetField<uint32_t>(VT_ID, 0);
3169   }
3170   bool mutate_id(uint32_t _id) {
3171     return SetField<uint32_t>(VT_ID, _id, 0);
3172   }
3173   const flatbuffers::Vector<int8_t> *encoded_metric() const {
3174     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_ENCODED_METRIC);
3175   }
3176   flatbuffers::Vector<int8_t> *mutable_encoded_metric() {
3177     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_ENCODED_METRIC);
3178   }
3179   bool Verify(flatbuffers::Verifier &verifier) const {
3180     return VerifyTableStart(verifier) &&
3181            VerifyField<uint32_t>(verifier, VT_ID) &&
3182            VerifyOffset(verifier, VT_ENCODED_METRIC) &&
3183            verifier.VerifyVector(encoded_metric()) &&
3184            verifier.EndTable();
3185   }
3186   MetricLogT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3187   void UnPackTo(MetricLogT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3188   static flatbuffers::Offset<MetricLog> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3189 };
3190 
3191 struct MetricLogBuilder {
3192   typedef MetricLog Table;
3193   flatbuffers::FlatBufferBuilder &fbb_;
3194   flatbuffers::uoffset_t start_;
3195   void add_id(uint32_t id) {
3196     fbb_.AddElement<uint32_t>(MetricLog::VT_ID, id, 0);
3197   }
3198   void add_encoded_metric(flatbuffers::Offset<flatbuffers::Vector<int8_t>> encoded_metric) {
3199     fbb_.AddOffset(MetricLog::VT_ENCODED_METRIC, encoded_metric);
3200   }
3201   explicit MetricLogBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3202         : fbb_(_fbb) {
3203     start_ = fbb_.StartTable();
3204   }
3205   MetricLogBuilder &operator=(const MetricLogBuilder &);
3206   flatbuffers::Offset<MetricLog> Finish() {
3207     const auto end = fbb_.EndTable(start_);
3208     auto o = flatbuffers::Offset<MetricLog>(end);
3209     return o;
3210   }
3211 };
3212 
3213 inline flatbuffers::Offset<MetricLog> CreateMetricLog(
3214     flatbuffers::FlatBufferBuilder &_fbb,
3215     uint32_t id = 0,
3216     flatbuffers::Offset<flatbuffers::Vector<int8_t>> encoded_metric = 0) {
3217   MetricLogBuilder builder_(_fbb);
3218   builder_.add_encoded_metric(encoded_metric);
3219   builder_.add_id(id);
3220   return builder_.Finish();
3221 }
3222 
3223 inline flatbuffers::Offset<MetricLog> CreateMetricLogDirect(
3224     flatbuffers::FlatBufferBuilder &_fbb,
3225     uint32_t id = 0,
3226     const std::vector<int8_t> *encoded_metric = nullptr) {
3227   auto encoded_metric__ = encoded_metric ? _fbb.CreateVector<int8_t>(*encoded_metric) : 0;
3228   return chre::fbs::CreateMetricLog(
3229       _fbb,
3230       id,
3231       encoded_metric__);
3232 }
3233 
3234 flatbuffers::Offset<MetricLog> CreateMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3235 
3236 struct BatchedMetricLogT : public flatbuffers::NativeTable {
3237   typedef BatchedMetricLog TableType;
3238   std::vector<std::unique_ptr<chre::fbs::MetricLogT>> metrics;
3239   BatchedMetricLogT() {
3240   }
3241 };
3242 
3243 struct BatchedMetricLog FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3244   typedef BatchedMetricLogT NativeTableType;
3245   typedef BatchedMetricLogBuilder Builder;
3246   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3247     VT_METRICS = 4
3248   };
3249   const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *metrics() const {
3250     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *>(VT_METRICS);
3251   }
3252   flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *mutable_metrics() {
3253     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>> *>(VT_METRICS);
3254   }
3255   bool Verify(flatbuffers::Verifier &verifier) const {
3256     return VerifyTableStart(verifier) &&
3257            VerifyOffset(verifier, VT_METRICS) &&
3258            verifier.VerifyVector(metrics()) &&
3259            verifier.VerifyVectorOfTables(metrics()) &&
3260            verifier.EndTable();
3261   }
3262   BatchedMetricLogT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3263   void UnPackTo(BatchedMetricLogT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3264   static flatbuffers::Offset<BatchedMetricLog> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3265 };
3266 
3267 struct BatchedMetricLogBuilder {
3268   typedef BatchedMetricLog Table;
3269   flatbuffers::FlatBufferBuilder &fbb_;
3270   flatbuffers::uoffset_t start_;
3271   void add_metrics(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>>> metrics) {
3272     fbb_.AddOffset(BatchedMetricLog::VT_METRICS, metrics);
3273   }
3274   explicit BatchedMetricLogBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3275         : fbb_(_fbb) {
3276     start_ = fbb_.StartTable();
3277   }
3278   BatchedMetricLogBuilder &operator=(const BatchedMetricLogBuilder &);
3279   flatbuffers::Offset<BatchedMetricLog> Finish() {
3280     const auto end = fbb_.EndTable(start_);
3281     auto o = flatbuffers::Offset<BatchedMetricLog>(end);
3282     return o;
3283   }
3284 };
3285 
3286 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(
3287     flatbuffers::FlatBufferBuilder &_fbb,
3288     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<chre::fbs::MetricLog>>> metrics = 0) {
3289   BatchedMetricLogBuilder builder_(_fbb);
3290   builder_.add_metrics(metrics);
3291   return builder_.Finish();
3292 }
3293 
3294 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLogDirect(
3295     flatbuffers::FlatBufferBuilder &_fbb,
3296     const std::vector<flatbuffers::Offset<chre::fbs::MetricLog>> *metrics = nullptr) {
3297   auto metrics__ = metrics ? _fbb.CreateVector<flatbuffers::Offset<chre::fbs::MetricLog>>(*metrics) : 0;
3298   return chre::fbs::CreateBatchedMetricLog(
3299       _fbb,
3300       metrics__);
3301 }
3302 
3303 flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3304 
3305 struct NanConfigurationRequestT : public flatbuffers::NativeTable {
3306   typedef NanConfigurationRequest TableType;
3307   bool enable;
3308   NanConfigurationRequestT()
3309       : enable(false) {
3310   }
3311 };
3312 
3313 struct NanConfigurationRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3314   typedef NanConfigurationRequestT NativeTableType;
3315   typedef NanConfigurationRequestBuilder Builder;
3316   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3317     VT_ENABLE = 4
3318   };
3319   bool enable() const {
3320     return GetField<uint8_t>(VT_ENABLE, 0) != 0;
3321   }
3322   bool mutate_enable(bool _enable) {
3323     return SetField<uint8_t>(VT_ENABLE, static_cast<uint8_t>(_enable), 0);
3324   }
3325   bool Verify(flatbuffers::Verifier &verifier) const {
3326     return VerifyTableStart(verifier) &&
3327            VerifyField<uint8_t>(verifier, VT_ENABLE) &&
3328            verifier.EndTable();
3329   }
3330   NanConfigurationRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3331   void UnPackTo(NanConfigurationRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3332   static flatbuffers::Offset<NanConfigurationRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3333 };
3334 
3335 struct NanConfigurationRequestBuilder {
3336   typedef NanConfigurationRequest Table;
3337   flatbuffers::FlatBufferBuilder &fbb_;
3338   flatbuffers::uoffset_t start_;
3339   void add_enable(bool enable) {
3340     fbb_.AddElement<uint8_t>(NanConfigurationRequest::VT_ENABLE, static_cast<uint8_t>(enable), 0);
3341   }
3342   explicit NanConfigurationRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3343         : fbb_(_fbb) {
3344     start_ = fbb_.StartTable();
3345   }
3346   NanConfigurationRequestBuilder &operator=(const NanConfigurationRequestBuilder &);
3347   flatbuffers::Offset<NanConfigurationRequest> Finish() {
3348     const auto end = fbb_.EndTable(start_);
3349     auto o = flatbuffers::Offset<NanConfigurationRequest>(end);
3350     return o;
3351   }
3352 };
3353 
3354 inline flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(
3355     flatbuffers::FlatBufferBuilder &_fbb,
3356     bool enable = false) {
3357   NanConfigurationRequestBuilder builder_(_fbb);
3358   builder_.add_enable(enable);
3359   return builder_.Finish();
3360 }
3361 
3362 flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3363 
3364 struct NanConfigurationUpdateT : public flatbuffers::NativeTable {
3365   typedef NanConfigurationUpdate TableType;
3366   bool enabled;
3367   NanConfigurationUpdateT()
3368       : enabled(false) {
3369   }
3370 };
3371 
3372 struct NanConfigurationUpdate FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3373   typedef NanConfigurationUpdateT NativeTableType;
3374   typedef NanConfigurationUpdateBuilder Builder;
3375   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3376     VT_ENABLED = 4
3377   };
3378   bool enabled() const {
3379     return GetField<uint8_t>(VT_ENABLED, 0) != 0;
3380   }
3381   bool mutate_enabled(bool _enabled) {
3382     return SetField<uint8_t>(VT_ENABLED, static_cast<uint8_t>(_enabled), 0);
3383   }
3384   bool Verify(flatbuffers::Verifier &verifier) const {
3385     return VerifyTableStart(verifier) &&
3386            VerifyField<uint8_t>(verifier, VT_ENABLED) &&
3387            verifier.EndTable();
3388   }
3389   NanConfigurationUpdateT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3390   void UnPackTo(NanConfigurationUpdateT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3391   static flatbuffers::Offset<NanConfigurationUpdate> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3392 };
3393 
3394 struct NanConfigurationUpdateBuilder {
3395   typedef NanConfigurationUpdate Table;
3396   flatbuffers::FlatBufferBuilder &fbb_;
3397   flatbuffers::uoffset_t start_;
3398   void add_enabled(bool enabled) {
3399     fbb_.AddElement<uint8_t>(NanConfigurationUpdate::VT_ENABLED, static_cast<uint8_t>(enabled), 0);
3400   }
3401   explicit NanConfigurationUpdateBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3402         : fbb_(_fbb) {
3403     start_ = fbb_.StartTable();
3404   }
3405   NanConfigurationUpdateBuilder &operator=(const NanConfigurationUpdateBuilder &);
3406   flatbuffers::Offset<NanConfigurationUpdate> Finish() {
3407     const auto end = fbb_.EndTable(start_);
3408     auto o = flatbuffers::Offset<NanConfigurationUpdate>(end);
3409     return o;
3410   }
3411 };
3412 
3413 inline flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(
3414     flatbuffers::FlatBufferBuilder &_fbb,
3415     bool enabled = false) {
3416   NanConfigurationUpdateBuilder builder_(_fbb);
3417   builder_.add_enabled(enabled);
3418   return builder_.Finish();
3419 }
3420 
3421 flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3422 
3423 struct DebugConfigurationT : public flatbuffers::NativeTable {
3424   typedef DebugConfiguration TableType;
3425   bool health_monitor_failure_crash;
3426   DebugConfigurationT()
3427       : health_monitor_failure_crash(false) {
3428   }
3429 };
3430 
3431 struct DebugConfiguration FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3432   typedef DebugConfigurationT NativeTableType;
3433   typedef DebugConfigurationBuilder Builder;
3434   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3435     VT_HEALTH_MONITOR_FAILURE_CRASH = 4
3436   };
3437   bool health_monitor_failure_crash() const {
3438     return GetField<uint8_t>(VT_HEALTH_MONITOR_FAILURE_CRASH, 0) != 0;
3439   }
3440   bool mutate_health_monitor_failure_crash(bool _health_monitor_failure_crash) {
3441     return SetField<uint8_t>(VT_HEALTH_MONITOR_FAILURE_CRASH, static_cast<uint8_t>(_health_monitor_failure_crash), 0);
3442   }
3443   bool Verify(flatbuffers::Verifier &verifier) const {
3444     return VerifyTableStart(verifier) &&
3445            VerifyField<uint8_t>(verifier, VT_HEALTH_MONITOR_FAILURE_CRASH) &&
3446            verifier.EndTable();
3447   }
3448   DebugConfigurationT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3449   void UnPackTo(DebugConfigurationT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3450   static flatbuffers::Offset<DebugConfiguration> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3451 };
3452 
3453 struct DebugConfigurationBuilder {
3454   typedef DebugConfiguration Table;
3455   flatbuffers::FlatBufferBuilder &fbb_;
3456   flatbuffers::uoffset_t start_;
3457   void add_health_monitor_failure_crash(bool health_monitor_failure_crash) {
3458     fbb_.AddElement<uint8_t>(DebugConfiguration::VT_HEALTH_MONITOR_FAILURE_CRASH, static_cast<uint8_t>(health_monitor_failure_crash), 0);
3459   }
3460   explicit DebugConfigurationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3461         : fbb_(_fbb) {
3462     start_ = fbb_.StartTable();
3463   }
3464   DebugConfigurationBuilder &operator=(const DebugConfigurationBuilder &);
3465   flatbuffers::Offset<DebugConfiguration> Finish() {
3466     const auto end = fbb_.EndTable(start_);
3467     auto o = flatbuffers::Offset<DebugConfiguration>(end);
3468     return o;
3469   }
3470 };
3471 
3472 inline flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(
3473     flatbuffers::FlatBufferBuilder &_fbb,
3474     bool health_monitor_failure_crash = false) {
3475   DebugConfigurationBuilder builder_(_fbb);
3476   builder_.add_health_monitor_failure_crash(health_monitor_failure_crash);
3477   return builder_.Finish();
3478 }
3479 
3480 flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3481 
3482 struct MessageContainerT : public flatbuffers::NativeTable {
3483   typedef MessageContainer TableType;
3484   chre::fbs::ChreMessageUnion message;
3485   std::unique_ptr<chre::fbs::HostAddress> host_addr;
3486   MessageContainerT() {
3487   }
3488 };
3489 
3490 /// The top-level container that encapsulates all possible messages. Note that
3491 /// per FlatBuffers requirements, we can't use a union as the top-level
3492 /// structure (root type), so we must wrap it in a table.
3493 struct MessageContainer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
3494   typedef MessageContainerT NativeTableType;
3495   typedef MessageContainerBuilder Builder;
3496   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
3497     VT_MESSAGE_TYPE = 4,
3498     VT_MESSAGE = 6,
3499     VT_HOST_ADDR = 8
3500   };
3501   chre::fbs::ChreMessage message_type() const {
3502     return static_cast<chre::fbs::ChreMessage>(GetField<uint8_t>(VT_MESSAGE_TYPE, 0));
3503   }
3504   const void *message() const {
3505     return GetPointer<const void *>(VT_MESSAGE);
3506   }
3507   template<typename T> const T *message_as() const;
3508   const chre::fbs::NanoappMessage *message_as_NanoappMessage() const {
3509     return message_type() == chre::fbs::ChreMessage::NanoappMessage ? static_cast<const chre::fbs::NanoappMessage *>(message()) : nullptr;
3510   }
3511   const chre::fbs::HubInfoRequest *message_as_HubInfoRequest() const {
3512     return message_type() == chre::fbs::ChreMessage::HubInfoRequest ? static_cast<const chre::fbs::HubInfoRequest *>(message()) : nullptr;
3513   }
3514   const chre::fbs::HubInfoResponse *message_as_HubInfoResponse() const {
3515     return message_type() == chre::fbs::ChreMessage::HubInfoResponse ? static_cast<const chre::fbs::HubInfoResponse *>(message()) : nullptr;
3516   }
3517   const chre::fbs::NanoappListRequest *message_as_NanoappListRequest() const {
3518     return message_type() == chre::fbs::ChreMessage::NanoappListRequest ? static_cast<const chre::fbs::NanoappListRequest *>(message()) : nullptr;
3519   }
3520   const chre::fbs::NanoappListResponse *message_as_NanoappListResponse() const {
3521     return message_type() == chre::fbs::ChreMessage::NanoappListResponse ? static_cast<const chre::fbs::NanoappListResponse *>(message()) : nullptr;
3522   }
3523   const chre::fbs::LoadNanoappRequest *message_as_LoadNanoappRequest() const {
3524     return message_type() == chre::fbs::ChreMessage::LoadNanoappRequest ? static_cast<const chre::fbs::LoadNanoappRequest *>(message()) : nullptr;
3525   }
3526   const chre::fbs::LoadNanoappResponse *message_as_LoadNanoappResponse() const {
3527     return message_type() == chre::fbs::ChreMessage::LoadNanoappResponse ? static_cast<const chre::fbs::LoadNanoappResponse *>(message()) : nullptr;
3528   }
3529   const chre::fbs::UnloadNanoappRequest *message_as_UnloadNanoappRequest() const {
3530     return message_type() == chre::fbs::ChreMessage::UnloadNanoappRequest ? static_cast<const chre::fbs::UnloadNanoappRequest *>(message()) : nullptr;
3531   }
3532   const chre::fbs::UnloadNanoappResponse *message_as_UnloadNanoappResponse() const {
3533     return message_type() == chre::fbs::ChreMessage::UnloadNanoappResponse ? static_cast<const chre::fbs::UnloadNanoappResponse *>(message()) : nullptr;
3534   }
3535   const chre::fbs::LogMessage *message_as_LogMessage() const {
3536     return message_type() == chre::fbs::ChreMessage::LogMessage ? static_cast<const chre::fbs::LogMessage *>(message()) : nullptr;
3537   }
3538   const chre::fbs::TimeSyncMessage *message_as_TimeSyncMessage() const {
3539     return message_type() == chre::fbs::ChreMessage::TimeSyncMessage ? static_cast<const chre::fbs::TimeSyncMessage *>(message()) : nullptr;
3540   }
3541   const chre::fbs::DebugDumpRequest *message_as_DebugDumpRequest() const {
3542     return message_type() == chre::fbs::ChreMessage::DebugDumpRequest ? static_cast<const chre::fbs::DebugDumpRequest *>(message()) : nullptr;
3543   }
3544   const chre::fbs::DebugDumpData *message_as_DebugDumpData() const {
3545     return message_type() == chre::fbs::ChreMessage::DebugDumpData ? static_cast<const chre::fbs::DebugDumpData *>(message()) : nullptr;
3546   }
3547   const chre::fbs::DebugDumpResponse *message_as_DebugDumpResponse() const {
3548     return message_type() == chre::fbs::ChreMessage::DebugDumpResponse ? static_cast<const chre::fbs::DebugDumpResponse *>(message()) : nullptr;
3549   }
3550   const chre::fbs::TimeSyncRequest *message_as_TimeSyncRequest() const {
3551     return message_type() == chre::fbs::ChreMessage::TimeSyncRequest ? static_cast<const chre::fbs::TimeSyncRequest *>(message()) : nullptr;
3552   }
3553   const chre::fbs::LowPowerMicAccessRequest *message_as_LowPowerMicAccessRequest() const {
3554     return message_type() == chre::fbs::ChreMessage::LowPowerMicAccessRequest ? static_cast<const chre::fbs::LowPowerMicAccessRequest *>(message()) : nullptr;
3555   }
3556   const chre::fbs::LowPowerMicAccessRelease *message_as_LowPowerMicAccessRelease() const {
3557     return message_type() == chre::fbs::ChreMessage::LowPowerMicAccessRelease ? static_cast<const chre::fbs::LowPowerMicAccessRelease *>(message()) : nullptr;
3558   }
3559   const chre::fbs::SettingChangeMessage *message_as_SettingChangeMessage() const {
3560     return message_type() == chre::fbs::ChreMessage::SettingChangeMessage ? static_cast<const chre::fbs::SettingChangeMessage *>(message()) : nullptr;
3561   }
3562   const chre::fbs::LogMessageV2 *message_as_LogMessageV2() const {
3563     return message_type() == chre::fbs::ChreMessage::LogMessageV2 ? static_cast<const chre::fbs::LogMessageV2 *>(message()) : nullptr;
3564   }
3565   const chre::fbs::SelfTestRequest *message_as_SelfTestRequest() const {
3566     return message_type() == chre::fbs::ChreMessage::SelfTestRequest ? static_cast<const chre::fbs::SelfTestRequest *>(message()) : nullptr;
3567   }
3568   const chre::fbs::SelfTestResponse *message_as_SelfTestResponse() const {
3569     return message_type() == chre::fbs::ChreMessage::SelfTestResponse ? static_cast<const chre::fbs::SelfTestResponse *>(message()) : nullptr;
3570   }
3571   const chre::fbs::HostEndpointConnected *message_as_HostEndpointConnected() const {
3572     return message_type() == chre::fbs::ChreMessage::HostEndpointConnected ? static_cast<const chre::fbs::HostEndpointConnected *>(message()) : nullptr;
3573   }
3574   const chre::fbs::HostEndpointDisconnected *message_as_HostEndpointDisconnected() const {
3575     return message_type() == chre::fbs::ChreMessage::HostEndpointDisconnected ? static_cast<const chre::fbs::HostEndpointDisconnected *>(message()) : nullptr;
3576   }
3577   const chre::fbs::MetricLog *message_as_MetricLog() const {
3578     return message_type() == chre::fbs::ChreMessage::MetricLog ? static_cast<const chre::fbs::MetricLog *>(message()) : nullptr;
3579   }
3580   const chre::fbs::BatchedMetricLog *message_as_BatchedMetricLog() const {
3581     return message_type() == chre::fbs::ChreMessage::BatchedMetricLog ? static_cast<const chre::fbs::BatchedMetricLog *>(message()) : nullptr;
3582   }
3583   const chre::fbs::NanConfigurationRequest *message_as_NanConfigurationRequest() const {
3584     return message_type() == chre::fbs::ChreMessage::NanConfigurationRequest ? static_cast<const chre::fbs::NanConfigurationRequest *>(message()) : nullptr;
3585   }
3586   const chre::fbs::NanConfigurationUpdate *message_as_NanConfigurationUpdate() const {
3587     return message_type() == chre::fbs::ChreMessage::NanConfigurationUpdate ? static_cast<const chre::fbs::NanConfigurationUpdate *>(message()) : nullptr;
3588   }
3589   const chre::fbs::DebugConfiguration *message_as_DebugConfiguration() const {
3590     return message_type() == chre::fbs::ChreMessage::DebugConfiguration ? static_cast<const chre::fbs::DebugConfiguration *>(message()) : nullptr;
3591   }
3592   void *mutable_message() {
3593     return GetPointer<void *>(VT_MESSAGE);
3594   }
3595   /// The originating or destination client ID on the host side, used to direct
3596   /// responses only to the client that sent the request. Although initially
3597   /// populated by the requesting client, this is enforced to be the correct
3598   /// value by the entity guarding access to CHRE.
3599   /// This is wrapped in a struct to ensure that it is always included when
3600   /// encoding the message, so it can be mutated by the host daemon.
3601   const chre::fbs::HostAddress *host_addr() const {
3602     return GetStruct<const chre::fbs::HostAddress *>(VT_HOST_ADDR);
3603   }
3604   chre::fbs::HostAddress *mutable_host_addr() {
3605     return GetStruct<chre::fbs::HostAddress *>(VT_HOST_ADDR);
3606   }
3607   bool Verify(flatbuffers::Verifier &verifier) const {
3608     return VerifyTableStart(verifier) &&
3609            VerifyField<uint8_t>(verifier, VT_MESSAGE_TYPE) &&
3610            VerifyOffsetRequired(verifier, VT_MESSAGE) &&
3611            VerifyChreMessage(verifier, message(), message_type()) &&
3612            VerifyFieldRequired<chre::fbs::HostAddress>(verifier, VT_HOST_ADDR) &&
3613            verifier.EndTable();
3614   }
3615   MessageContainerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3616   void UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
3617   static flatbuffers::Offset<MessageContainer> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3618 };
3619 
3620 template<> inline const chre::fbs::NanoappMessage *MessageContainer::message_as<chre::fbs::NanoappMessage>() const {
3621   return message_as_NanoappMessage();
3622 }
3623 
3624 template<> inline const chre::fbs::HubInfoRequest *MessageContainer::message_as<chre::fbs::HubInfoRequest>() const {
3625   return message_as_HubInfoRequest();
3626 }
3627 
3628 template<> inline const chre::fbs::HubInfoResponse *MessageContainer::message_as<chre::fbs::HubInfoResponse>() const {
3629   return message_as_HubInfoResponse();
3630 }
3631 
3632 template<> inline const chre::fbs::NanoappListRequest *MessageContainer::message_as<chre::fbs::NanoappListRequest>() const {
3633   return message_as_NanoappListRequest();
3634 }
3635 
3636 template<> inline const chre::fbs::NanoappListResponse *MessageContainer::message_as<chre::fbs::NanoappListResponse>() const {
3637   return message_as_NanoappListResponse();
3638 }
3639 
3640 template<> inline const chre::fbs::LoadNanoappRequest *MessageContainer::message_as<chre::fbs::LoadNanoappRequest>() const {
3641   return message_as_LoadNanoappRequest();
3642 }
3643 
3644 template<> inline const chre::fbs::LoadNanoappResponse *MessageContainer::message_as<chre::fbs::LoadNanoappResponse>() const {
3645   return message_as_LoadNanoappResponse();
3646 }
3647 
3648 template<> inline const chre::fbs::UnloadNanoappRequest *MessageContainer::message_as<chre::fbs::UnloadNanoappRequest>() const {
3649   return message_as_UnloadNanoappRequest();
3650 }
3651 
3652 template<> inline const chre::fbs::UnloadNanoappResponse *MessageContainer::message_as<chre::fbs::UnloadNanoappResponse>() const {
3653   return message_as_UnloadNanoappResponse();
3654 }
3655 
3656 template<> inline const chre::fbs::LogMessage *MessageContainer::message_as<chre::fbs::LogMessage>() const {
3657   return message_as_LogMessage();
3658 }
3659 
3660 template<> inline const chre::fbs::TimeSyncMessage *MessageContainer::message_as<chre::fbs::TimeSyncMessage>() const {
3661   return message_as_TimeSyncMessage();
3662 }
3663 
3664 template<> inline const chre::fbs::DebugDumpRequest *MessageContainer::message_as<chre::fbs::DebugDumpRequest>() const {
3665   return message_as_DebugDumpRequest();
3666 }
3667 
3668 template<> inline const chre::fbs::DebugDumpData *MessageContainer::message_as<chre::fbs::DebugDumpData>() const {
3669   return message_as_DebugDumpData();
3670 }
3671 
3672 template<> inline const chre::fbs::DebugDumpResponse *MessageContainer::message_as<chre::fbs::DebugDumpResponse>() const {
3673   return message_as_DebugDumpResponse();
3674 }
3675 
3676 template<> inline const chre::fbs::TimeSyncRequest *MessageContainer::message_as<chre::fbs::TimeSyncRequest>() const {
3677   return message_as_TimeSyncRequest();
3678 }
3679 
3680 template<> inline const chre::fbs::LowPowerMicAccessRequest *MessageContainer::message_as<chre::fbs::LowPowerMicAccessRequest>() const {
3681   return message_as_LowPowerMicAccessRequest();
3682 }
3683 
3684 template<> inline const chre::fbs::LowPowerMicAccessRelease *MessageContainer::message_as<chre::fbs::LowPowerMicAccessRelease>() const {
3685   return message_as_LowPowerMicAccessRelease();
3686 }
3687 
3688 template<> inline const chre::fbs::SettingChangeMessage *MessageContainer::message_as<chre::fbs::SettingChangeMessage>() const {
3689   return message_as_SettingChangeMessage();
3690 }
3691 
3692 template<> inline const chre::fbs::LogMessageV2 *MessageContainer::message_as<chre::fbs::LogMessageV2>() const {
3693   return message_as_LogMessageV2();
3694 }
3695 
3696 template<> inline const chre::fbs::SelfTestRequest *MessageContainer::message_as<chre::fbs::SelfTestRequest>() const {
3697   return message_as_SelfTestRequest();
3698 }
3699 
3700 template<> inline const chre::fbs::SelfTestResponse *MessageContainer::message_as<chre::fbs::SelfTestResponse>() const {
3701   return message_as_SelfTestResponse();
3702 }
3703 
3704 template<> inline const chre::fbs::HostEndpointConnected *MessageContainer::message_as<chre::fbs::HostEndpointConnected>() const {
3705   return message_as_HostEndpointConnected();
3706 }
3707 
3708 template<> inline const chre::fbs::HostEndpointDisconnected *MessageContainer::message_as<chre::fbs::HostEndpointDisconnected>() const {
3709   return message_as_HostEndpointDisconnected();
3710 }
3711 
3712 template<> inline const chre::fbs::MetricLog *MessageContainer::message_as<chre::fbs::MetricLog>() const {
3713   return message_as_MetricLog();
3714 }
3715 
3716 template<> inline const chre::fbs::BatchedMetricLog *MessageContainer::message_as<chre::fbs::BatchedMetricLog>() const {
3717   return message_as_BatchedMetricLog();
3718 }
3719 
3720 template<> inline const chre::fbs::NanConfigurationRequest *MessageContainer::message_as<chre::fbs::NanConfigurationRequest>() const {
3721   return message_as_NanConfigurationRequest();
3722 }
3723 
3724 template<> inline const chre::fbs::NanConfigurationUpdate *MessageContainer::message_as<chre::fbs::NanConfigurationUpdate>() const {
3725   return message_as_NanConfigurationUpdate();
3726 }
3727 
3728 template<> inline const chre::fbs::DebugConfiguration *MessageContainer::message_as<chre::fbs::DebugConfiguration>() const {
3729   return message_as_DebugConfiguration();
3730 }
3731 
3732 struct MessageContainerBuilder {
3733   typedef MessageContainer Table;
3734   flatbuffers::FlatBufferBuilder &fbb_;
3735   flatbuffers::uoffset_t start_;
3736   void add_message_type(chre::fbs::ChreMessage message_type) {
3737     fbb_.AddElement<uint8_t>(MessageContainer::VT_MESSAGE_TYPE, static_cast<uint8_t>(message_type), 0);
3738   }
3739   void add_message(flatbuffers::Offset<void> message) {
3740     fbb_.AddOffset(MessageContainer::VT_MESSAGE, message);
3741   }
3742   void add_host_addr(const chre::fbs::HostAddress *host_addr) {
3743     fbb_.AddStruct(MessageContainer::VT_HOST_ADDR, host_addr);
3744   }
3745   explicit MessageContainerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
3746         : fbb_(_fbb) {
3747     start_ = fbb_.StartTable();
3748   }
3749   MessageContainerBuilder &operator=(const MessageContainerBuilder &);
3750   flatbuffers::Offset<MessageContainer> Finish() {
3751     const auto end = fbb_.EndTable(start_);
3752     auto o = flatbuffers::Offset<MessageContainer>(end);
3753     fbb_.Required(o, MessageContainer::VT_MESSAGE);
3754     fbb_.Required(o, MessageContainer::VT_HOST_ADDR);
3755     return o;
3756   }
3757 };
3758 
3759 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(
3760     flatbuffers::FlatBufferBuilder &_fbb,
3761     chre::fbs::ChreMessage message_type = chre::fbs::ChreMessage::NONE,
3762     flatbuffers::Offset<void> message = 0,
3763     const chre::fbs::HostAddress *host_addr = 0) {
3764   MessageContainerBuilder builder_(_fbb);
3765   builder_.add_host_addr(host_addr);
3766   builder_.add_message(message);
3767   builder_.add_message_type(message_type);
3768   return builder_.Finish();
3769 }
3770 
3771 flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
3772 
3773 inline NanoappMessageT *NanoappMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3774   std::unique_ptr<chre::fbs::NanoappMessageT> _o = std::unique_ptr<chre::fbs::NanoappMessageT>(new NanoappMessageT());
3775   UnPackTo(_o.get(), _resolver);
3776   return _o.release();
3777 }
3778 
3779 inline void NanoappMessage::UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3780   (void)_o;
3781   (void)_resolver;
3782   { auto _e = app_id(); _o->app_id = _e; }
3783   { auto _e = message_type(); _o->message_type = _e; }
3784   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
3785   { 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); } } }
3786   { auto _e = message_permissions(); _o->message_permissions = _e; }
3787   { auto _e = permissions(); _o->permissions = _e; }
3788   { auto _e = woke_host(); _o->woke_host = _e; }
3789 }
3790 
3791 inline flatbuffers::Offset<NanoappMessage> NanoappMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3792   return CreateNanoappMessage(_fbb, _o, _rehasher);
3793 }
3794 
3795 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3796   (void)_rehasher;
3797   (void)_o;
3798   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3799   auto _app_id = _o->app_id;
3800   auto _message_type = _o->message_type;
3801   auto _host_endpoint = _o->host_endpoint;
3802   auto _message = _fbb.CreateVector(_o->message);
3803   auto _message_permissions = _o->message_permissions;
3804   auto _permissions = _o->permissions;
3805   auto _woke_host = _o->woke_host;
3806   return chre::fbs::CreateNanoappMessage(
3807       _fbb,
3808       _app_id,
3809       _message_type,
3810       _host_endpoint,
3811       _message,
3812       _message_permissions,
3813       _permissions,
3814       _woke_host);
3815 }
3816 
3817 inline HubInfoRequestT *HubInfoRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3818   std::unique_ptr<chre::fbs::HubInfoRequestT> _o = std::unique_ptr<chre::fbs::HubInfoRequestT>(new HubInfoRequestT());
3819   UnPackTo(_o.get(), _resolver);
3820   return _o.release();
3821 }
3822 
3823 inline void HubInfoRequest::UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3824   (void)_o;
3825   (void)_resolver;
3826 }
3827 
3828 inline flatbuffers::Offset<HubInfoRequest> HubInfoRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3829   return CreateHubInfoRequest(_fbb, _o, _rehasher);
3830 }
3831 
3832 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3833   (void)_rehasher;
3834   (void)_o;
3835   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HubInfoRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3836   return chre::fbs::CreateHubInfoRequest(
3837       _fbb);
3838 }
3839 
3840 inline HubInfoResponseT *HubInfoResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3841   std::unique_ptr<chre::fbs::HubInfoResponseT> _o = std::unique_ptr<chre::fbs::HubInfoResponseT>(new HubInfoResponseT());
3842   UnPackTo(_o.get(), _resolver);
3843   return _o.release();
3844 }
3845 
3846 inline void HubInfoResponse::UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3847   (void)_o;
3848   (void)_resolver;
3849   { 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); } } }
3850   { 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); } } }
3851   { 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); } } }
3852   { auto _e = platform_version(); _o->platform_version = _e; }
3853   { auto _e = toolchain_version(); _o->toolchain_version = _e; }
3854   { auto _e = peak_mips(); _o->peak_mips = _e; }
3855   { auto _e = stopped_power(); _o->stopped_power = _e; }
3856   { auto _e = sleep_power(); _o->sleep_power = _e; }
3857   { auto _e = peak_power(); _o->peak_power = _e; }
3858   { auto _e = max_msg_len(); _o->max_msg_len = _e; }
3859   { auto _e = platform_id(); _o->platform_id = _e; }
3860   { auto _e = chre_platform_version(); _o->chre_platform_version = _e; }
3861 }
3862 
3863 inline flatbuffers::Offset<HubInfoResponse> HubInfoResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3864   return CreateHubInfoResponse(_fbb, _o, _rehasher);
3865 }
3866 
3867 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3868   (void)_rehasher;
3869   (void)_o;
3870   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HubInfoResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3871   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
3872   auto _vendor = _o->vendor.size() ? _fbb.CreateVector(_o->vendor) : 0;
3873   auto _toolchain = _o->toolchain.size() ? _fbb.CreateVector(_o->toolchain) : 0;
3874   auto _platform_version = _o->platform_version;
3875   auto _toolchain_version = _o->toolchain_version;
3876   auto _peak_mips = _o->peak_mips;
3877   auto _stopped_power = _o->stopped_power;
3878   auto _sleep_power = _o->sleep_power;
3879   auto _peak_power = _o->peak_power;
3880   auto _max_msg_len = _o->max_msg_len;
3881   auto _platform_id = _o->platform_id;
3882   auto _chre_platform_version = _o->chre_platform_version;
3883   return chre::fbs::CreateHubInfoResponse(
3884       _fbb,
3885       _name,
3886       _vendor,
3887       _toolchain,
3888       _platform_version,
3889       _toolchain_version,
3890       _peak_mips,
3891       _stopped_power,
3892       _sleep_power,
3893       _peak_power,
3894       _max_msg_len,
3895       _platform_id,
3896       _chre_platform_version);
3897 }
3898 
3899 inline NanoappListRequestT *NanoappListRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3900   std::unique_ptr<chre::fbs::NanoappListRequestT> _o = std::unique_ptr<chre::fbs::NanoappListRequestT>(new NanoappListRequestT());
3901   UnPackTo(_o.get(), _resolver);
3902   return _o.release();
3903 }
3904 
3905 inline void NanoappListRequest::UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3906   (void)_o;
3907   (void)_resolver;
3908 }
3909 
3910 inline flatbuffers::Offset<NanoappListRequest> NanoappListRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3911   return CreateNanoappListRequest(_fbb, _o, _rehasher);
3912 }
3913 
3914 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3915   (void)_rehasher;
3916   (void)_o;
3917   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3918   return chre::fbs::CreateNanoappListRequest(
3919       _fbb);
3920 }
3921 
3922 inline NanoappRpcServiceT *NanoappRpcService::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3923   std::unique_ptr<chre::fbs::NanoappRpcServiceT> _o = std::unique_ptr<chre::fbs::NanoappRpcServiceT>(new NanoappRpcServiceT());
3924   UnPackTo(_o.get(), _resolver);
3925   return _o.release();
3926 }
3927 
3928 inline void NanoappRpcService::UnPackTo(NanoappRpcServiceT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3929   (void)_o;
3930   (void)_resolver;
3931   { auto _e = id(); _o->id = _e; }
3932   { auto _e = version(); _o->version = _e; }
3933 }
3934 
3935 inline flatbuffers::Offset<NanoappRpcService> NanoappRpcService::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3936   return CreateNanoappRpcService(_fbb, _o, _rehasher);
3937 }
3938 
3939 inline flatbuffers::Offset<NanoappRpcService> CreateNanoappRpcService(flatbuffers::FlatBufferBuilder &_fbb, const NanoappRpcServiceT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3940   (void)_rehasher;
3941   (void)_o;
3942   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappRpcServiceT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3943   auto _id = _o->id;
3944   auto _version = _o->version;
3945   return chre::fbs::CreateNanoappRpcService(
3946       _fbb,
3947       _id,
3948       _version);
3949 }
3950 
3951 inline NanoappListEntryT *NanoappListEntry::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3952   std::unique_ptr<chre::fbs::NanoappListEntryT> _o = std::unique_ptr<chre::fbs::NanoappListEntryT>(new NanoappListEntryT());
3953   UnPackTo(_o.get(), _resolver);
3954   return _o.release();
3955 }
3956 
3957 inline void NanoappListEntry::UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3958   (void)_o;
3959   (void)_resolver;
3960   { auto _e = app_id(); _o->app_id = _e; }
3961   { auto _e = version(); _o->version = _e; }
3962   { auto _e = enabled(); _o->enabled = _e; }
3963   { auto _e = is_system(); _o->is_system = _e; }
3964   { auto _e = permissions(); _o->permissions = _e; }
3965   { 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)); } } }
3966 }
3967 
3968 inline flatbuffers::Offset<NanoappListEntry> NanoappListEntry::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3969   return CreateNanoappListEntry(_fbb, _o, _rehasher);
3970 }
3971 
3972 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3973   (void)_rehasher;
3974   (void)_o;
3975   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListEntryT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3976   auto _app_id = _o->app_id;
3977   auto _version = _o->version;
3978   auto _enabled = _o->enabled;
3979   auto _is_system = _o->is_system;
3980   auto _permissions = _o->permissions;
3981   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;
3982   return chre::fbs::CreateNanoappListEntry(
3983       _fbb,
3984       _app_id,
3985       _version,
3986       _enabled,
3987       _is_system,
3988       _permissions,
3989       _rpc_services);
3990 }
3991 
3992 inline NanoappListResponseT *NanoappListResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3993   std::unique_ptr<chre::fbs::NanoappListResponseT> _o = std::unique_ptr<chre::fbs::NanoappListResponseT>(new NanoappListResponseT());
3994   UnPackTo(_o.get(), _resolver);
3995   return _o.release();
3996 }
3997 
3998 inline void NanoappListResponse::UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3999   (void)_o;
4000   (void)_resolver;
4001   { 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)); } } }
4002 }
4003 
4004 inline flatbuffers::Offset<NanoappListResponse> NanoappListResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4005   return CreateNanoappListResponse(_fbb, _o, _rehasher);
4006 }
4007 
4008 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4009   (void)_rehasher;
4010   (void)_o;
4011   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanoappListResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4012   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 );
4013   return chre::fbs::CreateNanoappListResponse(
4014       _fbb,
4015       _nanoapps);
4016 }
4017 
4018 inline LoadNanoappRequestT *LoadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4019   std::unique_ptr<chre::fbs::LoadNanoappRequestT> _o = std::unique_ptr<chre::fbs::LoadNanoappRequestT>(new LoadNanoappRequestT());
4020   UnPackTo(_o.get(), _resolver);
4021   return _o.release();
4022 }
4023 
4024 inline void LoadNanoappRequest::UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4025   (void)_o;
4026   (void)_resolver;
4027   { auto _e = transaction_id(); _o->transaction_id = _e; }
4028   { auto _e = app_id(); _o->app_id = _e; }
4029   { auto _e = app_version(); _o->app_version = _e; }
4030   { auto _e = target_api_version(); _o->target_api_version = _e; }
4031   { 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); } } }
4032   { auto _e = fragment_id(); _o->fragment_id = _e; }
4033   { auto _e = total_app_size(); _o->total_app_size = _e; }
4034   { 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); } } }
4035   { auto _e = app_flags(); _o->app_flags = _e; }
4036   { auto _e = respond_before_start(); _o->respond_before_start = _e; }
4037 }
4038 
4039 inline flatbuffers::Offset<LoadNanoappRequest> LoadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4040   return CreateLoadNanoappRequest(_fbb, _o, _rehasher);
4041 }
4042 
4043 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4044   (void)_rehasher;
4045   (void)_o;
4046   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LoadNanoappRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4047   auto _transaction_id = _o->transaction_id;
4048   auto _app_id = _o->app_id;
4049   auto _app_version = _o->app_version;
4050   auto _target_api_version = _o->target_api_version;
4051   auto _app_binary = _fbb.CreateVector(_o->app_binary);
4052   auto _fragment_id = _o->fragment_id;
4053   auto _total_app_size = _o->total_app_size;
4054   auto _app_binary_file_name = _o->app_binary_file_name.size() ? _fbb.CreateVector(_o->app_binary_file_name) : 0;
4055   auto _app_flags = _o->app_flags;
4056   auto _respond_before_start = _o->respond_before_start;
4057   return chre::fbs::CreateLoadNanoappRequest(
4058       _fbb,
4059       _transaction_id,
4060       _app_id,
4061       _app_version,
4062       _target_api_version,
4063       _app_binary,
4064       _fragment_id,
4065       _total_app_size,
4066       _app_binary_file_name,
4067       _app_flags,
4068       _respond_before_start);
4069 }
4070 
4071 inline LoadNanoappResponseT *LoadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4072   std::unique_ptr<chre::fbs::LoadNanoappResponseT> _o = std::unique_ptr<chre::fbs::LoadNanoappResponseT>(new LoadNanoappResponseT());
4073   UnPackTo(_o.get(), _resolver);
4074   return _o.release();
4075 }
4076 
4077 inline void LoadNanoappResponse::UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4078   (void)_o;
4079   (void)_resolver;
4080   { auto _e = transaction_id(); _o->transaction_id = _e; }
4081   { auto _e = success(); _o->success = _e; }
4082   { auto _e = fragment_id(); _o->fragment_id = _e; }
4083 }
4084 
4085 inline flatbuffers::Offset<LoadNanoappResponse> LoadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4086   return CreateLoadNanoappResponse(_fbb, _o, _rehasher);
4087 }
4088 
4089 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4090   (void)_rehasher;
4091   (void)_o;
4092   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LoadNanoappResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4093   auto _transaction_id = _o->transaction_id;
4094   auto _success = _o->success;
4095   auto _fragment_id = _o->fragment_id;
4096   return chre::fbs::CreateLoadNanoappResponse(
4097       _fbb,
4098       _transaction_id,
4099       _success,
4100       _fragment_id);
4101 }
4102 
4103 inline UnloadNanoappRequestT *UnloadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4104   std::unique_ptr<chre::fbs::UnloadNanoappRequestT> _o = std::unique_ptr<chre::fbs::UnloadNanoappRequestT>(new UnloadNanoappRequestT());
4105   UnPackTo(_o.get(), _resolver);
4106   return _o.release();
4107 }
4108 
4109 inline void UnloadNanoappRequest::UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4110   (void)_o;
4111   (void)_resolver;
4112   { auto _e = transaction_id(); _o->transaction_id = _e; }
4113   { auto _e = app_id(); _o->app_id = _e; }
4114   { auto _e = allow_system_nanoapp_unload(); _o->allow_system_nanoapp_unload = _e; }
4115 }
4116 
4117 inline flatbuffers::Offset<UnloadNanoappRequest> UnloadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4118   return CreateUnloadNanoappRequest(_fbb, _o, _rehasher);
4119 }
4120 
4121 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4122   (void)_rehasher;
4123   (void)_o;
4124   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnloadNanoappRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4125   auto _transaction_id = _o->transaction_id;
4126   auto _app_id = _o->app_id;
4127   auto _allow_system_nanoapp_unload = _o->allow_system_nanoapp_unload;
4128   return chre::fbs::CreateUnloadNanoappRequest(
4129       _fbb,
4130       _transaction_id,
4131       _app_id,
4132       _allow_system_nanoapp_unload);
4133 }
4134 
4135 inline UnloadNanoappResponseT *UnloadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4136   std::unique_ptr<chre::fbs::UnloadNanoappResponseT> _o = std::unique_ptr<chre::fbs::UnloadNanoappResponseT>(new UnloadNanoappResponseT());
4137   UnPackTo(_o.get(), _resolver);
4138   return _o.release();
4139 }
4140 
4141 inline void UnloadNanoappResponse::UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4142   (void)_o;
4143   (void)_resolver;
4144   { auto _e = transaction_id(); _o->transaction_id = _e; }
4145   { auto _e = success(); _o->success = _e; }
4146 }
4147 
4148 inline flatbuffers::Offset<UnloadNanoappResponse> UnloadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4149   return CreateUnloadNanoappResponse(_fbb, _o, _rehasher);
4150 }
4151 
4152 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4153   (void)_rehasher;
4154   (void)_o;
4155   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnloadNanoappResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4156   auto _transaction_id = _o->transaction_id;
4157   auto _success = _o->success;
4158   return chre::fbs::CreateUnloadNanoappResponse(
4159       _fbb,
4160       _transaction_id,
4161       _success);
4162 }
4163 
4164 inline LogMessageT *LogMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4165   std::unique_ptr<chre::fbs::LogMessageT> _o = std::unique_ptr<chre::fbs::LogMessageT>(new LogMessageT());
4166   UnPackTo(_o.get(), _resolver);
4167   return _o.release();
4168 }
4169 
4170 inline void LogMessage::UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4171   (void)_o;
4172   (void)_resolver;
4173   { 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); } } }
4174 }
4175 
4176 inline flatbuffers::Offset<LogMessage> LogMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4177   return CreateLogMessage(_fbb, _o, _rehasher);
4178 }
4179 
4180 inline flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4181   (void)_rehasher;
4182   (void)_o;
4183   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4184   auto _buffer = _o->buffer.size() ? _fbb.CreateVector(_o->buffer) : 0;
4185   return chre::fbs::CreateLogMessage(
4186       _fbb,
4187       _buffer);
4188 }
4189 
4190 inline TimeSyncMessageT *TimeSyncMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4191   std::unique_ptr<chre::fbs::TimeSyncMessageT> _o = std::unique_ptr<chre::fbs::TimeSyncMessageT>(new TimeSyncMessageT());
4192   UnPackTo(_o.get(), _resolver);
4193   return _o.release();
4194 }
4195 
4196 inline void TimeSyncMessage::UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4197   (void)_o;
4198   (void)_resolver;
4199   { auto _e = offset(); _o->offset = _e; }
4200 }
4201 
4202 inline flatbuffers::Offset<TimeSyncMessage> TimeSyncMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4203   return CreateTimeSyncMessage(_fbb, _o, _rehasher);
4204 }
4205 
4206 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4207   (void)_rehasher;
4208   (void)_o;
4209   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TimeSyncMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4210   auto _offset = _o->offset;
4211   return chre::fbs::CreateTimeSyncMessage(
4212       _fbb,
4213       _offset);
4214 }
4215 
4216 inline DebugDumpRequestT *DebugDumpRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4217   std::unique_ptr<chre::fbs::DebugDumpRequestT> _o = std::unique_ptr<chre::fbs::DebugDumpRequestT>(new DebugDumpRequestT());
4218   UnPackTo(_o.get(), _resolver);
4219   return _o.release();
4220 }
4221 
4222 inline void DebugDumpRequest::UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4223   (void)_o;
4224   (void)_resolver;
4225 }
4226 
4227 inline flatbuffers::Offset<DebugDumpRequest> DebugDumpRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4228   return CreateDebugDumpRequest(_fbb, _o, _rehasher);
4229 }
4230 
4231 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4232   (void)_rehasher;
4233   (void)_o;
4234   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4235   return chre::fbs::CreateDebugDumpRequest(
4236       _fbb);
4237 }
4238 
4239 inline DebugDumpDataT *DebugDumpData::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4240   std::unique_ptr<chre::fbs::DebugDumpDataT> _o = std::unique_ptr<chre::fbs::DebugDumpDataT>(new DebugDumpDataT());
4241   UnPackTo(_o.get(), _resolver);
4242   return _o.release();
4243 }
4244 
4245 inline void DebugDumpData::UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4246   (void)_o;
4247   (void)_resolver;
4248   { 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); } } }
4249 }
4250 
4251 inline flatbuffers::Offset<DebugDumpData> DebugDumpData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4252   return CreateDebugDumpData(_fbb, _o, _rehasher);
4253 }
4254 
4255 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4256   (void)_rehasher;
4257   (void)_o;
4258   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4259   auto _debug_str = _o->debug_str.size() ? _fbb.CreateVector(_o->debug_str) : 0;
4260   return chre::fbs::CreateDebugDumpData(
4261       _fbb,
4262       _debug_str);
4263 }
4264 
4265 inline DebugDumpResponseT *DebugDumpResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4266   std::unique_ptr<chre::fbs::DebugDumpResponseT> _o = std::unique_ptr<chre::fbs::DebugDumpResponseT>(new DebugDumpResponseT());
4267   UnPackTo(_o.get(), _resolver);
4268   return _o.release();
4269 }
4270 
4271 inline void DebugDumpResponse::UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4272   (void)_o;
4273   (void)_resolver;
4274   { auto _e = success(); _o->success = _e; }
4275   { auto _e = data_count(); _o->data_count = _e; }
4276 }
4277 
4278 inline flatbuffers::Offset<DebugDumpResponse> DebugDumpResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4279   return CreateDebugDumpResponse(_fbb, _o, _rehasher);
4280 }
4281 
4282 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4283   (void)_rehasher;
4284   (void)_o;
4285   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugDumpResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4286   auto _success = _o->success;
4287   auto _data_count = _o->data_count;
4288   return chre::fbs::CreateDebugDumpResponse(
4289       _fbb,
4290       _success,
4291       _data_count);
4292 }
4293 
4294 inline TimeSyncRequestT *TimeSyncRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4295   std::unique_ptr<chre::fbs::TimeSyncRequestT> _o = std::unique_ptr<chre::fbs::TimeSyncRequestT>(new TimeSyncRequestT());
4296   UnPackTo(_o.get(), _resolver);
4297   return _o.release();
4298 }
4299 
4300 inline void TimeSyncRequest::UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4301   (void)_o;
4302   (void)_resolver;
4303 }
4304 
4305 inline flatbuffers::Offset<TimeSyncRequest> TimeSyncRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4306   return CreateTimeSyncRequest(_fbb, _o, _rehasher);
4307 }
4308 
4309 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4310   (void)_rehasher;
4311   (void)_o;
4312   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TimeSyncRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4313   return chre::fbs::CreateTimeSyncRequest(
4314       _fbb);
4315 }
4316 
4317 inline LowPowerMicAccessRequestT *LowPowerMicAccessRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4318   std::unique_ptr<chre::fbs::LowPowerMicAccessRequestT> _o = std::unique_ptr<chre::fbs::LowPowerMicAccessRequestT>(new LowPowerMicAccessRequestT());
4319   UnPackTo(_o.get(), _resolver);
4320   return _o.release();
4321 }
4322 
4323 inline void LowPowerMicAccessRequest::UnPackTo(LowPowerMicAccessRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4324   (void)_o;
4325   (void)_resolver;
4326 }
4327 
4328 inline flatbuffers::Offset<LowPowerMicAccessRequest> LowPowerMicAccessRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4329   return CreateLowPowerMicAccessRequest(_fbb, _o, _rehasher);
4330 }
4331 
4332 inline flatbuffers::Offset<LowPowerMicAccessRequest> CreateLowPowerMicAccessRequest(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4333   (void)_rehasher;
4334   (void)_o;
4335   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LowPowerMicAccessRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4336   return chre::fbs::CreateLowPowerMicAccessRequest(
4337       _fbb);
4338 }
4339 
4340 inline LowPowerMicAccessReleaseT *LowPowerMicAccessRelease::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4341   std::unique_ptr<chre::fbs::LowPowerMicAccessReleaseT> _o = std::unique_ptr<chre::fbs::LowPowerMicAccessReleaseT>(new LowPowerMicAccessReleaseT());
4342   UnPackTo(_o.get(), _resolver);
4343   return _o.release();
4344 }
4345 
4346 inline void LowPowerMicAccessRelease::UnPackTo(LowPowerMicAccessReleaseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4347   (void)_o;
4348   (void)_resolver;
4349 }
4350 
4351 inline flatbuffers::Offset<LowPowerMicAccessRelease> LowPowerMicAccessRelease::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4352   return CreateLowPowerMicAccessRelease(_fbb, _o, _rehasher);
4353 }
4354 
4355 inline flatbuffers::Offset<LowPowerMicAccessRelease> CreateLowPowerMicAccessRelease(flatbuffers::FlatBufferBuilder &_fbb, const LowPowerMicAccessReleaseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4356   (void)_rehasher;
4357   (void)_o;
4358   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LowPowerMicAccessReleaseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4359   return chre::fbs::CreateLowPowerMicAccessRelease(
4360       _fbb);
4361 }
4362 
4363 inline SettingChangeMessageT *SettingChangeMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4364   std::unique_ptr<chre::fbs::SettingChangeMessageT> _o = std::unique_ptr<chre::fbs::SettingChangeMessageT>(new SettingChangeMessageT());
4365   UnPackTo(_o.get(), _resolver);
4366   return _o.release();
4367 }
4368 
4369 inline void SettingChangeMessage::UnPackTo(SettingChangeMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4370   (void)_o;
4371   (void)_resolver;
4372   { auto _e = setting(); _o->setting = _e; }
4373   { auto _e = state(); _o->state = _e; }
4374 }
4375 
4376 inline flatbuffers::Offset<SettingChangeMessage> SettingChangeMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4377   return CreateSettingChangeMessage(_fbb, _o, _rehasher);
4378 }
4379 
4380 inline flatbuffers::Offset<SettingChangeMessage> CreateSettingChangeMessage(flatbuffers::FlatBufferBuilder &_fbb, const SettingChangeMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4381   (void)_rehasher;
4382   (void)_o;
4383   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SettingChangeMessageT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4384   auto _setting = _o->setting;
4385   auto _state = _o->state;
4386   return chre::fbs::CreateSettingChangeMessage(
4387       _fbb,
4388       _setting,
4389       _state);
4390 }
4391 
4392 inline LogMessageV2T *LogMessageV2::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4393   std::unique_ptr<chre::fbs::LogMessageV2T> _o = std::unique_ptr<chre::fbs::LogMessageV2T>(new LogMessageV2T());
4394   UnPackTo(_o.get(), _resolver);
4395   return _o.release();
4396 }
4397 
4398 inline void LogMessageV2::UnPackTo(LogMessageV2T *_o, const flatbuffers::resolver_function_t *_resolver) const {
4399   (void)_o;
4400   (void)_resolver;
4401   { 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); } } }
4402   { auto _e = num_logs_dropped(); _o->num_logs_dropped = _e; }
4403 }
4404 
4405 inline flatbuffers::Offset<LogMessageV2> LogMessageV2::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4406   return CreateLogMessageV2(_fbb, _o, _rehasher);
4407 }
4408 
4409 inline flatbuffers::Offset<LogMessageV2> CreateLogMessageV2(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageV2T *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4410   (void)_rehasher;
4411   (void)_o;
4412   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LogMessageV2T* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4413   auto _buffer = _o->buffer.size() ? _fbb.CreateVector(_o->buffer) : 0;
4414   auto _num_logs_dropped = _o->num_logs_dropped;
4415   return chre::fbs::CreateLogMessageV2(
4416       _fbb,
4417       _buffer,
4418       _num_logs_dropped);
4419 }
4420 
4421 inline SelfTestRequestT *SelfTestRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4422   std::unique_ptr<chre::fbs::SelfTestRequestT> _o = std::unique_ptr<chre::fbs::SelfTestRequestT>(new SelfTestRequestT());
4423   UnPackTo(_o.get(), _resolver);
4424   return _o.release();
4425 }
4426 
4427 inline void SelfTestRequest::UnPackTo(SelfTestRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4428   (void)_o;
4429   (void)_resolver;
4430 }
4431 
4432 inline flatbuffers::Offset<SelfTestRequest> SelfTestRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4433   return CreateSelfTestRequest(_fbb, _o, _rehasher);
4434 }
4435 
4436 inline flatbuffers::Offset<SelfTestRequest> CreateSelfTestRequest(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4437   (void)_rehasher;
4438   (void)_o;
4439   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelfTestRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4440   return chre::fbs::CreateSelfTestRequest(
4441       _fbb);
4442 }
4443 
4444 inline SelfTestResponseT *SelfTestResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4445   std::unique_ptr<chre::fbs::SelfTestResponseT> _o = std::unique_ptr<chre::fbs::SelfTestResponseT>(new SelfTestResponseT());
4446   UnPackTo(_o.get(), _resolver);
4447   return _o.release();
4448 }
4449 
4450 inline void SelfTestResponse::UnPackTo(SelfTestResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4451   (void)_o;
4452   (void)_resolver;
4453   { auto _e = success(); _o->success = _e; }
4454 }
4455 
4456 inline flatbuffers::Offset<SelfTestResponse> SelfTestResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4457   return CreateSelfTestResponse(_fbb, _o, _rehasher);
4458 }
4459 
4460 inline flatbuffers::Offset<SelfTestResponse> CreateSelfTestResponse(flatbuffers::FlatBufferBuilder &_fbb, const SelfTestResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4461   (void)_rehasher;
4462   (void)_o;
4463   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SelfTestResponseT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4464   auto _success = _o->success;
4465   return chre::fbs::CreateSelfTestResponse(
4466       _fbb,
4467       _success);
4468 }
4469 
4470 inline HostEndpointConnectedT *HostEndpointConnected::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4471   std::unique_ptr<chre::fbs::HostEndpointConnectedT> _o = std::unique_ptr<chre::fbs::HostEndpointConnectedT>(new HostEndpointConnectedT());
4472   UnPackTo(_o.get(), _resolver);
4473   return _o.release();
4474 }
4475 
4476 inline void HostEndpointConnected::UnPackTo(HostEndpointConnectedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4477   (void)_o;
4478   (void)_resolver;
4479   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
4480   { auto _e = type(); _o->type = _e; }
4481   { 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); } } }
4482   { 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); } } }
4483 }
4484 
4485 inline flatbuffers::Offset<HostEndpointConnected> HostEndpointConnected::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4486   return CreateHostEndpointConnected(_fbb, _o, _rehasher);
4487 }
4488 
4489 inline flatbuffers::Offset<HostEndpointConnected> CreateHostEndpointConnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointConnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4490   (void)_rehasher;
4491   (void)_o;
4492   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HostEndpointConnectedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4493   auto _host_endpoint = _o->host_endpoint;
4494   auto _type = _o->type;
4495   auto _package_name = _o->package_name.size() ? _fbb.CreateVector(_o->package_name) : 0;
4496   auto _attribution_tag = _o->attribution_tag.size() ? _fbb.CreateVector(_o->attribution_tag) : 0;
4497   return chre::fbs::CreateHostEndpointConnected(
4498       _fbb,
4499       _host_endpoint,
4500       _type,
4501       _package_name,
4502       _attribution_tag);
4503 }
4504 
4505 inline HostEndpointDisconnectedT *HostEndpointDisconnected::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4506   std::unique_ptr<chre::fbs::HostEndpointDisconnectedT> _o = std::unique_ptr<chre::fbs::HostEndpointDisconnectedT>(new HostEndpointDisconnectedT());
4507   UnPackTo(_o.get(), _resolver);
4508   return _o.release();
4509 }
4510 
4511 inline void HostEndpointDisconnected::UnPackTo(HostEndpointDisconnectedT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4512   (void)_o;
4513   (void)_resolver;
4514   { auto _e = host_endpoint(); _o->host_endpoint = _e; }
4515 }
4516 
4517 inline flatbuffers::Offset<HostEndpointDisconnected> HostEndpointDisconnected::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4518   return CreateHostEndpointDisconnected(_fbb, _o, _rehasher);
4519 }
4520 
4521 inline flatbuffers::Offset<HostEndpointDisconnected> CreateHostEndpointDisconnected(flatbuffers::FlatBufferBuilder &_fbb, const HostEndpointDisconnectedT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4522   (void)_rehasher;
4523   (void)_o;
4524   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HostEndpointDisconnectedT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4525   auto _host_endpoint = _o->host_endpoint;
4526   return chre::fbs::CreateHostEndpointDisconnected(
4527       _fbb,
4528       _host_endpoint);
4529 }
4530 
4531 inline MetricLogT *MetricLog::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4532   std::unique_ptr<chre::fbs::MetricLogT> _o = std::unique_ptr<chre::fbs::MetricLogT>(new MetricLogT());
4533   UnPackTo(_o.get(), _resolver);
4534   return _o.release();
4535 }
4536 
4537 inline void MetricLog::UnPackTo(MetricLogT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4538   (void)_o;
4539   (void)_resolver;
4540   { auto _e = id(); _o->id = _e; }
4541   { 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); } } }
4542 }
4543 
4544 inline flatbuffers::Offset<MetricLog> MetricLog::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4545   return CreateMetricLog(_fbb, _o, _rehasher);
4546 }
4547 
4548 inline flatbuffers::Offset<MetricLog> CreateMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const MetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4549   (void)_rehasher;
4550   (void)_o;
4551   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MetricLogT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4552   auto _id = _o->id;
4553   auto _encoded_metric = _o->encoded_metric.size() ? _fbb.CreateVector(_o->encoded_metric) : 0;
4554   return chre::fbs::CreateMetricLog(
4555       _fbb,
4556       _id,
4557       _encoded_metric);
4558 }
4559 
4560 inline BatchedMetricLogT *BatchedMetricLog::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4561   std::unique_ptr<chre::fbs::BatchedMetricLogT> _o = std::unique_ptr<chre::fbs::BatchedMetricLogT>(new BatchedMetricLogT());
4562   UnPackTo(_o.get(), _resolver);
4563   return _o.release();
4564 }
4565 
4566 inline void BatchedMetricLog::UnPackTo(BatchedMetricLogT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4567   (void)_o;
4568   (void)_resolver;
4569   { 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)); } } }
4570 }
4571 
4572 inline flatbuffers::Offset<BatchedMetricLog> BatchedMetricLog::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4573   return CreateBatchedMetricLog(_fbb, _o, _rehasher);
4574 }
4575 
4576 inline flatbuffers::Offset<BatchedMetricLog> CreateBatchedMetricLog(flatbuffers::FlatBufferBuilder &_fbb, const BatchedMetricLogT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4577   (void)_rehasher;
4578   (void)_o;
4579   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BatchedMetricLogT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4580   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;
4581   return chre::fbs::CreateBatchedMetricLog(
4582       _fbb,
4583       _metrics);
4584 }
4585 
4586 inline NanConfigurationRequestT *NanConfigurationRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4587   std::unique_ptr<chre::fbs::NanConfigurationRequestT> _o = std::unique_ptr<chre::fbs::NanConfigurationRequestT>(new NanConfigurationRequestT());
4588   UnPackTo(_o.get(), _resolver);
4589   return _o.release();
4590 }
4591 
4592 inline void NanConfigurationRequest::UnPackTo(NanConfigurationRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4593   (void)_o;
4594   (void)_resolver;
4595   { auto _e = enable(); _o->enable = _e; }
4596 }
4597 
4598 inline flatbuffers::Offset<NanConfigurationRequest> NanConfigurationRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4599   return CreateNanConfigurationRequest(_fbb, _o, _rehasher);
4600 }
4601 
4602 inline flatbuffers::Offset<NanConfigurationRequest> CreateNanConfigurationRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4603   (void)_rehasher;
4604   (void)_o;
4605   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanConfigurationRequestT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4606   auto _enable = _o->enable;
4607   return chre::fbs::CreateNanConfigurationRequest(
4608       _fbb,
4609       _enable);
4610 }
4611 
4612 inline NanConfigurationUpdateT *NanConfigurationUpdate::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4613   std::unique_ptr<chre::fbs::NanConfigurationUpdateT> _o = std::unique_ptr<chre::fbs::NanConfigurationUpdateT>(new NanConfigurationUpdateT());
4614   UnPackTo(_o.get(), _resolver);
4615   return _o.release();
4616 }
4617 
4618 inline void NanConfigurationUpdate::UnPackTo(NanConfigurationUpdateT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4619   (void)_o;
4620   (void)_resolver;
4621   { auto _e = enabled(); _o->enabled = _e; }
4622 }
4623 
4624 inline flatbuffers::Offset<NanConfigurationUpdate> NanConfigurationUpdate::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4625   return CreateNanConfigurationUpdate(_fbb, _o, _rehasher);
4626 }
4627 
4628 inline flatbuffers::Offset<NanConfigurationUpdate> CreateNanConfigurationUpdate(flatbuffers::FlatBufferBuilder &_fbb, const NanConfigurationUpdateT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4629   (void)_rehasher;
4630   (void)_o;
4631   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NanConfigurationUpdateT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4632   auto _enabled = _o->enabled;
4633   return chre::fbs::CreateNanConfigurationUpdate(
4634       _fbb,
4635       _enabled);
4636 }
4637 
4638 inline DebugConfigurationT *DebugConfiguration::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4639   std::unique_ptr<chre::fbs::DebugConfigurationT> _o = std::unique_ptr<chre::fbs::DebugConfigurationT>(new DebugConfigurationT());
4640   UnPackTo(_o.get(), _resolver);
4641   return _o.release();
4642 }
4643 
4644 inline void DebugConfiguration::UnPackTo(DebugConfigurationT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4645   (void)_o;
4646   (void)_resolver;
4647   { auto _e = health_monitor_failure_crash(); _o->health_monitor_failure_crash = _e; }
4648 }
4649 
4650 inline flatbuffers::Offset<DebugConfiguration> DebugConfiguration::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4651   return CreateDebugConfiguration(_fbb, _o, _rehasher);
4652 }
4653 
4654 inline flatbuffers::Offset<DebugConfiguration> CreateDebugConfiguration(flatbuffers::FlatBufferBuilder &_fbb, const DebugConfigurationT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4655   (void)_rehasher;
4656   (void)_o;
4657   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugConfigurationT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4658   auto _health_monitor_failure_crash = _o->health_monitor_failure_crash;
4659   return chre::fbs::CreateDebugConfiguration(
4660       _fbb,
4661       _health_monitor_failure_crash);
4662 }
4663 
4664 inline MessageContainerT *MessageContainer::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
4665   std::unique_ptr<chre::fbs::MessageContainerT> _o = std::unique_ptr<chre::fbs::MessageContainerT>(new MessageContainerT());
4666   UnPackTo(_o.get(), _resolver);
4667   return _o.release();
4668 }
4669 
4670 inline void MessageContainer::UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver) const {
4671   (void)_o;
4672   (void)_resolver;
4673   { auto _e = message_type(); _o->message.type = _e; }
4674   { auto _e = message(); if (_e) _o->message.value = chre::fbs::ChreMessageUnion::UnPack(_e, message_type(), _resolver); }
4675   { auto _e = host_addr(); if (_e) _o->host_addr = std::unique_ptr<chre::fbs::HostAddress>(new chre::fbs::HostAddress(*_e)); }
4676 }
4677 
4678 inline flatbuffers::Offset<MessageContainer> MessageContainer::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
4679   return CreateMessageContainer(_fbb, _o, _rehasher);
4680 }
4681 
4682 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
4683   (void)_rehasher;
4684   (void)_o;
4685   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MessageContainerT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
4686   auto _message_type = _o->message.type;
4687   auto _message = _o->message.Pack(_fbb);
4688   auto _host_addr = _o->host_addr ? _o->host_addr.get() : 0;
4689   return chre::fbs::CreateMessageContainer(
4690       _fbb,
4691       _message_type,
4692       _message,
4693       _host_addr);
4694 }
4695 
4696 inline bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type) {
4697   switch (type) {
4698     case ChreMessage::NONE: {
4699       return true;
4700     }
4701     case ChreMessage::NanoappMessage: {
4702       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessage *>(obj);
4703       return verifier.VerifyTable(ptr);
4704     }
4705     case ChreMessage::HubInfoRequest: {
4706       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequest *>(obj);
4707       return verifier.VerifyTable(ptr);
4708     }
4709     case ChreMessage::HubInfoResponse: {
4710       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
4711       return verifier.VerifyTable(ptr);
4712     }
4713     case ChreMessage::NanoappListRequest: {
4714       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequest *>(obj);
4715       return verifier.VerifyTable(ptr);
4716     }
4717     case ChreMessage::NanoappListResponse: {
4718       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponse *>(obj);
4719       return verifier.VerifyTable(ptr);
4720     }
4721     case ChreMessage::LoadNanoappRequest: {
4722       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequest *>(obj);
4723       return verifier.VerifyTable(ptr);
4724     }
4725     case ChreMessage::LoadNanoappResponse: {
4726       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponse *>(obj);
4727       return verifier.VerifyTable(ptr);
4728     }
4729     case ChreMessage::UnloadNanoappRequest: {
4730       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequest *>(obj);
4731       return verifier.VerifyTable(ptr);
4732     }
4733     case ChreMessage::UnloadNanoappResponse: {
4734       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponse *>(obj);
4735       return verifier.VerifyTable(ptr);
4736     }
4737     case ChreMessage::LogMessage: {
4738       auto ptr = reinterpret_cast<const chre::fbs::LogMessage *>(obj);
4739       return verifier.VerifyTable(ptr);
4740     }
4741     case ChreMessage::TimeSyncMessage: {
4742       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessage *>(obj);
4743       return verifier.VerifyTable(ptr);
4744     }
4745     case ChreMessage::DebugDumpRequest: {
4746       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequest *>(obj);
4747       return verifier.VerifyTable(ptr);
4748     }
4749     case ChreMessage::DebugDumpData: {
4750       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpData *>(obj);
4751       return verifier.VerifyTable(ptr);
4752     }
4753     case ChreMessage::DebugDumpResponse: {
4754       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponse *>(obj);
4755       return verifier.VerifyTable(ptr);
4756     }
4757     case ChreMessage::TimeSyncRequest: {
4758       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequest *>(obj);
4759       return verifier.VerifyTable(ptr);
4760     }
4761     case ChreMessage::LowPowerMicAccessRequest: {
4762       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequest *>(obj);
4763       return verifier.VerifyTable(ptr);
4764     }
4765     case ChreMessage::LowPowerMicAccessRelease: {
4766       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRelease *>(obj);
4767       return verifier.VerifyTable(ptr);
4768     }
4769     case ChreMessage::SettingChangeMessage: {
4770       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessage *>(obj);
4771       return verifier.VerifyTable(ptr);
4772     }
4773     case ChreMessage::LogMessageV2: {
4774       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2 *>(obj);
4775       return verifier.VerifyTable(ptr);
4776     }
4777     case ChreMessage::SelfTestRequest: {
4778       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequest *>(obj);
4779       return verifier.VerifyTable(ptr);
4780     }
4781     case ChreMessage::SelfTestResponse: {
4782       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponse *>(obj);
4783       return verifier.VerifyTable(ptr);
4784     }
4785     case ChreMessage::HostEndpointConnected: {
4786       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnected *>(obj);
4787       return verifier.VerifyTable(ptr);
4788     }
4789     case ChreMessage::HostEndpointDisconnected: {
4790       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnected *>(obj);
4791       return verifier.VerifyTable(ptr);
4792     }
4793     case ChreMessage::MetricLog: {
4794       auto ptr = reinterpret_cast<const chre::fbs::MetricLog *>(obj);
4795       return verifier.VerifyTable(ptr);
4796     }
4797     case ChreMessage::BatchedMetricLog: {
4798       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLog *>(obj);
4799       return verifier.VerifyTable(ptr);
4800     }
4801     case ChreMessage::NanConfigurationRequest: {
4802       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequest *>(obj);
4803       return verifier.VerifyTable(ptr);
4804     }
4805     case ChreMessage::NanConfigurationUpdate: {
4806       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdate *>(obj);
4807       return verifier.VerifyTable(ptr);
4808     }
4809     case ChreMessage::DebugConfiguration: {
4810       auto ptr = reinterpret_cast<const chre::fbs::DebugConfiguration *>(obj);
4811       return verifier.VerifyTable(ptr);
4812     }
4813     default: return true;
4814   }
4815 }
4816 
4817 inline bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
4818   if (!values || !types) return !values && !types;
4819   if (values->size() != types->size()) return false;
4820   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
4821     if (!VerifyChreMessage(
4822         verifier,  values->Get(i), types->GetEnum<ChreMessage>(i))) {
4823       return false;
4824     }
4825   }
4826   return true;
4827 }
4828 
4829 inline void *ChreMessageUnion::UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver) {
4830   switch (type) {
4831     case ChreMessage::NanoappMessage: {
4832       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessage *>(obj);
4833       return ptr->UnPack(resolver);
4834     }
4835     case ChreMessage::HubInfoRequest: {
4836       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequest *>(obj);
4837       return ptr->UnPack(resolver);
4838     }
4839     case ChreMessage::HubInfoResponse: {
4840       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponse *>(obj);
4841       return ptr->UnPack(resolver);
4842     }
4843     case ChreMessage::NanoappListRequest: {
4844       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequest *>(obj);
4845       return ptr->UnPack(resolver);
4846     }
4847     case ChreMessage::NanoappListResponse: {
4848       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponse *>(obj);
4849       return ptr->UnPack(resolver);
4850     }
4851     case ChreMessage::LoadNanoappRequest: {
4852       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequest *>(obj);
4853       return ptr->UnPack(resolver);
4854     }
4855     case ChreMessage::LoadNanoappResponse: {
4856       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponse *>(obj);
4857       return ptr->UnPack(resolver);
4858     }
4859     case ChreMessage::UnloadNanoappRequest: {
4860       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequest *>(obj);
4861       return ptr->UnPack(resolver);
4862     }
4863     case ChreMessage::UnloadNanoappResponse: {
4864       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponse *>(obj);
4865       return ptr->UnPack(resolver);
4866     }
4867     case ChreMessage::LogMessage: {
4868       auto ptr = reinterpret_cast<const chre::fbs::LogMessage *>(obj);
4869       return ptr->UnPack(resolver);
4870     }
4871     case ChreMessage::TimeSyncMessage: {
4872       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessage *>(obj);
4873       return ptr->UnPack(resolver);
4874     }
4875     case ChreMessage::DebugDumpRequest: {
4876       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequest *>(obj);
4877       return ptr->UnPack(resolver);
4878     }
4879     case ChreMessage::DebugDumpData: {
4880       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpData *>(obj);
4881       return ptr->UnPack(resolver);
4882     }
4883     case ChreMessage::DebugDumpResponse: {
4884       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponse *>(obj);
4885       return ptr->UnPack(resolver);
4886     }
4887     case ChreMessage::TimeSyncRequest: {
4888       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequest *>(obj);
4889       return ptr->UnPack(resolver);
4890     }
4891     case ChreMessage::LowPowerMicAccessRequest: {
4892       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequest *>(obj);
4893       return ptr->UnPack(resolver);
4894     }
4895     case ChreMessage::LowPowerMicAccessRelease: {
4896       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRelease *>(obj);
4897       return ptr->UnPack(resolver);
4898     }
4899     case ChreMessage::SettingChangeMessage: {
4900       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessage *>(obj);
4901       return ptr->UnPack(resolver);
4902     }
4903     case ChreMessage::LogMessageV2: {
4904       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2 *>(obj);
4905       return ptr->UnPack(resolver);
4906     }
4907     case ChreMessage::SelfTestRequest: {
4908       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequest *>(obj);
4909       return ptr->UnPack(resolver);
4910     }
4911     case ChreMessage::SelfTestResponse: {
4912       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponse *>(obj);
4913       return ptr->UnPack(resolver);
4914     }
4915     case ChreMessage::HostEndpointConnected: {
4916       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnected *>(obj);
4917       return ptr->UnPack(resolver);
4918     }
4919     case ChreMessage::HostEndpointDisconnected: {
4920       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnected *>(obj);
4921       return ptr->UnPack(resolver);
4922     }
4923     case ChreMessage::MetricLog: {
4924       auto ptr = reinterpret_cast<const chre::fbs::MetricLog *>(obj);
4925       return ptr->UnPack(resolver);
4926     }
4927     case ChreMessage::BatchedMetricLog: {
4928       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLog *>(obj);
4929       return ptr->UnPack(resolver);
4930     }
4931     case ChreMessage::NanConfigurationRequest: {
4932       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequest *>(obj);
4933       return ptr->UnPack(resolver);
4934     }
4935     case ChreMessage::NanConfigurationUpdate: {
4936       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdate *>(obj);
4937       return ptr->UnPack(resolver);
4938     }
4939     case ChreMessage::DebugConfiguration: {
4940       auto ptr = reinterpret_cast<const chre::fbs::DebugConfiguration *>(obj);
4941       return ptr->UnPack(resolver);
4942     }
4943     default: return nullptr;
4944   }
4945 }
4946 
4947 inline flatbuffers::Offset<void> ChreMessageUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
4948   switch (type) {
4949     case ChreMessage::NanoappMessage: {
4950       auto ptr = reinterpret_cast<const chre::fbs::NanoappMessageT *>(value);
4951       return CreateNanoappMessage(_fbb, ptr, _rehasher).Union();
4952     }
4953     case ChreMessage::HubInfoRequest: {
4954       auto ptr = reinterpret_cast<const chre::fbs::HubInfoRequestT *>(value);
4955       return CreateHubInfoRequest(_fbb, ptr, _rehasher).Union();
4956     }
4957     case ChreMessage::HubInfoResponse: {
4958       auto ptr = reinterpret_cast<const chre::fbs::HubInfoResponseT *>(value);
4959       return CreateHubInfoResponse(_fbb, ptr, _rehasher).Union();
4960     }
4961     case ChreMessage::NanoappListRequest: {
4962       auto ptr = reinterpret_cast<const chre::fbs::NanoappListRequestT *>(value);
4963       return CreateNanoappListRequest(_fbb, ptr, _rehasher).Union();
4964     }
4965     case ChreMessage::NanoappListResponse: {
4966       auto ptr = reinterpret_cast<const chre::fbs::NanoappListResponseT *>(value);
4967       return CreateNanoappListResponse(_fbb, ptr, _rehasher).Union();
4968     }
4969     case ChreMessage::LoadNanoappRequest: {
4970       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappRequestT *>(value);
4971       return CreateLoadNanoappRequest(_fbb, ptr, _rehasher).Union();
4972     }
4973     case ChreMessage::LoadNanoappResponse: {
4974       auto ptr = reinterpret_cast<const chre::fbs::LoadNanoappResponseT *>(value);
4975       return CreateLoadNanoappResponse(_fbb, ptr, _rehasher).Union();
4976     }
4977     case ChreMessage::UnloadNanoappRequest: {
4978       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappRequestT *>(value);
4979       return CreateUnloadNanoappRequest(_fbb, ptr, _rehasher).Union();
4980     }
4981     case ChreMessage::UnloadNanoappResponse: {
4982       auto ptr = reinterpret_cast<const chre::fbs::UnloadNanoappResponseT *>(value);
4983       return CreateUnloadNanoappResponse(_fbb, ptr, _rehasher).Union();
4984     }
4985     case ChreMessage::LogMessage: {
4986       auto ptr = reinterpret_cast<const chre::fbs::LogMessageT *>(value);
4987       return CreateLogMessage(_fbb, ptr, _rehasher).Union();
4988     }
4989     case ChreMessage::TimeSyncMessage: {
4990       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncMessageT *>(value);
4991       return CreateTimeSyncMessage(_fbb, ptr, _rehasher).Union();
4992     }
4993     case ChreMessage::DebugDumpRequest: {
4994       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpRequestT *>(value);
4995       return CreateDebugDumpRequest(_fbb, ptr, _rehasher).Union();
4996     }
4997     case ChreMessage::DebugDumpData: {
4998       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpDataT *>(value);
4999       return CreateDebugDumpData(_fbb, ptr, _rehasher).Union();
5000     }
5001     case ChreMessage::DebugDumpResponse: {
5002       auto ptr = reinterpret_cast<const chre::fbs::DebugDumpResponseT *>(value);
5003       return CreateDebugDumpResponse(_fbb, ptr, _rehasher).Union();
5004     }
5005     case ChreMessage::TimeSyncRequest: {
5006       auto ptr = reinterpret_cast<const chre::fbs::TimeSyncRequestT *>(value);
5007       return CreateTimeSyncRequest(_fbb, ptr, _rehasher).Union();
5008     }
5009     case ChreMessage::LowPowerMicAccessRequest: {
5010       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessRequestT *>(value);
5011       return CreateLowPowerMicAccessRequest(_fbb, ptr, _rehasher).Union();
5012     }
5013     case ChreMessage::LowPowerMicAccessRelease: {
5014       auto ptr = reinterpret_cast<const chre::fbs::LowPowerMicAccessReleaseT *>(value);
5015       return CreateLowPowerMicAccessRelease(_fbb, ptr, _rehasher).Union();
5016     }
5017     case ChreMessage::SettingChangeMessage: {
5018       auto ptr = reinterpret_cast<const chre::fbs::SettingChangeMessageT *>(value);
5019       return CreateSettingChangeMessage(_fbb, ptr, _rehasher).Union();
5020     }
5021     case ChreMessage::LogMessageV2: {
5022       auto ptr = reinterpret_cast<const chre::fbs::LogMessageV2T *>(value);
5023       return CreateLogMessageV2(_fbb, ptr, _rehasher).Union();
5024     }
5025     case ChreMessage::SelfTestRequest: {
5026       auto ptr = reinterpret_cast<const chre::fbs::SelfTestRequestT *>(value);
5027       return CreateSelfTestRequest(_fbb, ptr, _rehasher).Union();
5028     }
5029     case ChreMessage::SelfTestResponse: {
5030       auto ptr = reinterpret_cast<const chre::fbs::SelfTestResponseT *>(value);
5031       return CreateSelfTestResponse(_fbb, ptr, _rehasher).Union();
5032     }
5033     case ChreMessage::HostEndpointConnected: {
5034       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointConnectedT *>(value);
5035       return CreateHostEndpointConnected(_fbb, ptr, _rehasher).Union();
5036     }
5037     case ChreMessage::HostEndpointDisconnected: {
5038       auto ptr = reinterpret_cast<const chre::fbs::HostEndpointDisconnectedT *>(value);
5039       return CreateHostEndpointDisconnected(_fbb, ptr, _rehasher).Union();
5040     }
5041     case ChreMessage::MetricLog: {
5042       auto ptr = reinterpret_cast<const chre::fbs::MetricLogT *>(value);
5043       return CreateMetricLog(_fbb, ptr, _rehasher).Union();
5044     }
5045     case ChreMessage::BatchedMetricLog: {
5046       auto ptr = reinterpret_cast<const chre::fbs::BatchedMetricLogT *>(value);
5047       return CreateBatchedMetricLog(_fbb, ptr, _rehasher).Union();
5048     }
5049     case ChreMessage::NanConfigurationRequest: {
5050       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationRequestT *>(value);
5051       return CreateNanConfigurationRequest(_fbb, ptr, _rehasher).Union();
5052     }
5053     case ChreMessage::NanConfigurationUpdate: {
5054       auto ptr = reinterpret_cast<const chre::fbs::NanConfigurationUpdateT *>(value);
5055       return CreateNanConfigurationUpdate(_fbb, ptr, _rehasher).Union();
5056     }
5057     case ChreMessage::DebugConfiguration: {
5058       auto ptr = reinterpret_cast<const chre::fbs::DebugConfigurationT *>(value);
5059       return CreateDebugConfiguration(_fbb, ptr, _rehasher).Union();
5060     }
5061     default: return 0;
5062   }
5063 }
5064 
5065 inline ChreMessageUnion::ChreMessageUnion(const ChreMessageUnion &u) : type(u.type), value(nullptr) {
5066   switch (type) {
5067     case ChreMessage::NanoappMessage: {
5068       value = new chre::fbs::NanoappMessageT(*reinterpret_cast<chre::fbs::NanoappMessageT *>(u.value));
5069       break;
5070     }
5071     case ChreMessage::HubInfoRequest: {
5072       value = new chre::fbs::HubInfoRequestT(*reinterpret_cast<chre::fbs::HubInfoRequestT *>(u.value));
5073       break;
5074     }
5075     case ChreMessage::HubInfoResponse: {
5076       value = new chre::fbs::HubInfoResponseT(*reinterpret_cast<chre::fbs::HubInfoResponseT *>(u.value));
5077       break;
5078     }
5079     case ChreMessage::NanoappListRequest: {
5080       value = new chre::fbs::NanoappListRequestT(*reinterpret_cast<chre::fbs::NanoappListRequestT *>(u.value));
5081       break;
5082     }
5083     case ChreMessage::NanoappListResponse: {
5084       FLATBUFFERS_ASSERT(false);  // chre::fbs::NanoappListResponseT not copyable.
5085       break;
5086     }
5087     case ChreMessage::LoadNanoappRequest: {
5088       value = new chre::fbs::LoadNanoappRequestT(*reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(u.value));
5089       break;
5090     }
5091     case ChreMessage::LoadNanoappResponse: {
5092       value = new chre::fbs::LoadNanoappResponseT(*reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(u.value));
5093       break;
5094     }
5095     case ChreMessage::UnloadNanoappRequest: {
5096       value = new chre::fbs::UnloadNanoappRequestT(*reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(u.value));
5097       break;
5098     }
5099     case ChreMessage::UnloadNanoappResponse: {
5100       value = new chre::fbs::UnloadNanoappResponseT(*reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(u.value));
5101       break;
5102     }
5103     case ChreMessage::LogMessage: {
5104       value = new chre::fbs::LogMessageT(*reinterpret_cast<chre::fbs::LogMessageT *>(u.value));
5105       break;
5106     }
5107     case ChreMessage::TimeSyncMessage: {
5108       value = new chre::fbs::TimeSyncMessageT(*reinterpret_cast<chre::fbs::TimeSyncMessageT *>(u.value));
5109       break;
5110     }
5111     case ChreMessage::DebugDumpRequest: {
5112       value = new chre::fbs::DebugDumpRequestT(*reinterpret_cast<chre::fbs::DebugDumpRequestT *>(u.value));
5113       break;
5114     }
5115     case ChreMessage::DebugDumpData: {
5116       value = new chre::fbs::DebugDumpDataT(*reinterpret_cast<chre::fbs::DebugDumpDataT *>(u.value));
5117       break;
5118     }
5119     case ChreMessage::DebugDumpResponse: {
5120       value = new chre::fbs::DebugDumpResponseT(*reinterpret_cast<chre::fbs::DebugDumpResponseT *>(u.value));
5121       break;
5122     }
5123     case ChreMessage::TimeSyncRequest: {
5124       value = new chre::fbs::TimeSyncRequestT(*reinterpret_cast<chre::fbs::TimeSyncRequestT *>(u.value));
5125       break;
5126     }
5127     case ChreMessage::LowPowerMicAccessRequest: {
5128       value = new chre::fbs::LowPowerMicAccessRequestT(*reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(u.value));
5129       break;
5130     }
5131     case ChreMessage::LowPowerMicAccessRelease: {
5132       value = new chre::fbs::LowPowerMicAccessReleaseT(*reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(u.value));
5133       break;
5134     }
5135     case ChreMessage::SettingChangeMessage: {
5136       value = new chre::fbs::SettingChangeMessageT(*reinterpret_cast<chre::fbs::SettingChangeMessageT *>(u.value));
5137       break;
5138     }
5139     case ChreMessage::LogMessageV2: {
5140       value = new chre::fbs::LogMessageV2T(*reinterpret_cast<chre::fbs::LogMessageV2T *>(u.value));
5141       break;
5142     }
5143     case ChreMessage::SelfTestRequest: {
5144       value = new chre::fbs::SelfTestRequestT(*reinterpret_cast<chre::fbs::SelfTestRequestT *>(u.value));
5145       break;
5146     }
5147     case ChreMessage::SelfTestResponse: {
5148       value = new chre::fbs::SelfTestResponseT(*reinterpret_cast<chre::fbs::SelfTestResponseT *>(u.value));
5149       break;
5150     }
5151     case ChreMessage::HostEndpointConnected: {
5152       value = new chre::fbs::HostEndpointConnectedT(*reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(u.value));
5153       break;
5154     }
5155     case ChreMessage::HostEndpointDisconnected: {
5156       value = new chre::fbs::HostEndpointDisconnectedT(*reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(u.value));
5157       break;
5158     }
5159     case ChreMessage::MetricLog: {
5160       value = new chre::fbs::MetricLogT(*reinterpret_cast<chre::fbs::MetricLogT *>(u.value));
5161       break;
5162     }
5163     case ChreMessage::BatchedMetricLog: {
5164       FLATBUFFERS_ASSERT(false);  // chre::fbs::BatchedMetricLogT not copyable.
5165       break;
5166     }
5167     case ChreMessage::NanConfigurationRequest: {
5168       value = new chre::fbs::NanConfigurationRequestT(*reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(u.value));
5169       break;
5170     }
5171     case ChreMessage::NanConfigurationUpdate: {
5172       value = new chre::fbs::NanConfigurationUpdateT(*reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(u.value));
5173       break;
5174     }
5175     case ChreMessage::DebugConfiguration: {
5176       value = new chre::fbs::DebugConfigurationT(*reinterpret_cast<chre::fbs::DebugConfigurationT *>(u.value));
5177       break;
5178     }
5179     default:
5180       break;
5181   }
5182 }
5183 
5184 inline void ChreMessageUnion::Reset() {
5185   switch (type) {
5186     case ChreMessage::NanoappMessage: {
5187       auto ptr = reinterpret_cast<chre::fbs::NanoappMessageT *>(value);
5188       delete ptr;
5189       break;
5190     }
5191     case ChreMessage::HubInfoRequest: {
5192       auto ptr = reinterpret_cast<chre::fbs::HubInfoRequestT *>(value);
5193       delete ptr;
5194       break;
5195     }
5196     case ChreMessage::HubInfoResponse: {
5197       auto ptr = reinterpret_cast<chre::fbs::HubInfoResponseT *>(value);
5198       delete ptr;
5199       break;
5200     }
5201     case ChreMessage::NanoappListRequest: {
5202       auto ptr = reinterpret_cast<chre::fbs::NanoappListRequestT *>(value);
5203       delete ptr;
5204       break;
5205     }
5206     case ChreMessage::NanoappListResponse: {
5207       auto ptr = reinterpret_cast<chre::fbs::NanoappListResponseT *>(value);
5208       delete ptr;
5209       break;
5210     }
5211     case ChreMessage::LoadNanoappRequest: {
5212       auto ptr = reinterpret_cast<chre::fbs::LoadNanoappRequestT *>(value);
5213       delete ptr;
5214       break;
5215     }
5216     case ChreMessage::LoadNanoappResponse: {
5217       auto ptr = reinterpret_cast<chre::fbs::LoadNanoappResponseT *>(value);
5218       delete ptr;
5219       break;
5220     }
5221     case ChreMessage::UnloadNanoappRequest: {
5222       auto ptr = reinterpret_cast<chre::fbs::UnloadNanoappRequestT *>(value);
5223       delete ptr;
5224       break;
5225     }
5226     case ChreMessage::UnloadNanoappResponse: {
5227       auto ptr = reinterpret_cast<chre::fbs::UnloadNanoappResponseT *>(value);
5228       delete ptr;
5229       break;
5230     }
5231     case ChreMessage::LogMessage: {
5232       auto ptr = reinterpret_cast<chre::fbs::LogMessageT *>(value);
5233       delete ptr;
5234       break;
5235     }
5236     case ChreMessage::TimeSyncMessage: {
5237       auto ptr = reinterpret_cast<chre::fbs::TimeSyncMessageT *>(value);
5238       delete ptr;
5239       break;
5240     }
5241     case ChreMessage::DebugDumpRequest: {
5242       auto ptr = reinterpret_cast<chre::fbs::DebugDumpRequestT *>(value);
5243       delete ptr;
5244       break;
5245     }
5246     case ChreMessage::DebugDumpData: {
5247       auto ptr = reinterpret_cast<chre::fbs::DebugDumpDataT *>(value);
5248       delete ptr;
5249       break;
5250     }
5251     case ChreMessage::DebugDumpResponse: {
5252       auto ptr = reinterpret_cast<chre::fbs::DebugDumpResponseT *>(value);
5253       delete ptr;
5254       break;
5255     }
5256     case ChreMessage::TimeSyncRequest: {
5257       auto ptr = reinterpret_cast<chre::fbs::TimeSyncRequestT *>(value);
5258       delete ptr;
5259       break;
5260     }
5261     case ChreMessage::LowPowerMicAccessRequest: {
5262       auto ptr = reinterpret_cast<chre::fbs::LowPowerMicAccessRequestT *>(value);
5263       delete ptr;
5264       break;
5265     }
5266     case ChreMessage::LowPowerMicAccessRelease: {
5267       auto ptr = reinterpret_cast<chre::fbs::LowPowerMicAccessReleaseT *>(value);
5268       delete ptr;
5269       break;
5270     }
5271     case ChreMessage::SettingChangeMessage: {
5272       auto ptr = reinterpret_cast<chre::fbs::SettingChangeMessageT *>(value);
5273       delete ptr;
5274       break;
5275     }
5276     case ChreMessage::LogMessageV2: {
5277       auto ptr = reinterpret_cast<chre::fbs::LogMessageV2T *>(value);
5278       delete ptr;
5279       break;
5280     }
5281     case ChreMessage::SelfTestRequest: {
5282       auto ptr = reinterpret_cast<chre::fbs::SelfTestRequestT *>(value);
5283       delete ptr;
5284       break;
5285     }
5286     case ChreMessage::SelfTestResponse: {
5287       auto ptr = reinterpret_cast<chre::fbs::SelfTestResponseT *>(value);
5288       delete ptr;
5289       break;
5290     }
5291     case ChreMessage::HostEndpointConnected: {
5292       auto ptr = reinterpret_cast<chre::fbs::HostEndpointConnectedT *>(value);
5293       delete ptr;
5294       break;
5295     }
5296     case ChreMessage::HostEndpointDisconnected: {
5297       auto ptr = reinterpret_cast<chre::fbs::HostEndpointDisconnectedT *>(value);
5298       delete ptr;
5299       break;
5300     }
5301     case ChreMessage::MetricLog: {
5302       auto ptr = reinterpret_cast<chre::fbs::MetricLogT *>(value);
5303       delete ptr;
5304       break;
5305     }
5306     case ChreMessage::BatchedMetricLog: {
5307       auto ptr = reinterpret_cast<chre::fbs::BatchedMetricLogT *>(value);
5308       delete ptr;
5309       break;
5310     }
5311     case ChreMessage::NanConfigurationRequest: {
5312       auto ptr = reinterpret_cast<chre::fbs::NanConfigurationRequestT *>(value);
5313       delete ptr;
5314       break;
5315     }
5316     case ChreMessage::NanConfigurationUpdate: {
5317       auto ptr = reinterpret_cast<chre::fbs::NanConfigurationUpdateT *>(value);
5318       delete ptr;
5319       break;
5320     }
5321     case ChreMessage::DebugConfiguration: {
5322       auto ptr = reinterpret_cast<chre::fbs::DebugConfigurationT *>(value);
5323       delete ptr;
5324       break;
5325     }
5326     default: break;
5327   }
5328   value = nullptr;
5329   type = ChreMessage::NONE;
5330 }
5331 
5332 inline const chre::fbs::MessageContainer *GetMessageContainer(const void *buf) {
5333   return flatbuffers::GetRoot<chre::fbs::MessageContainer>(buf);
5334 }
5335 
5336 inline const chre::fbs::MessageContainer *GetSizePrefixedMessageContainer(const void *buf) {
5337   return flatbuffers::GetSizePrefixedRoot<chre::fbs::MessageContainer>(buf);
5338 }
5339 
5340 inline MessageContainer *GetMutableMessageContainer(void *buf) {
5341   return flatbuffers::GetMutableRoot<MessageContainer>(buf);
5342 }
5343 
5344 inline bool VerifyMessageContainerBuffer(
5345     flatbuffers::Verifier &verifier) {
5346   return verifier.VerifyBuffer<chre::fbs::MessageContainer>(nullptr);
5347 }
5348 
5349 inline bool VerifySizePrefixedMessageContainerBuffer(
5350     flatbuffers::Verifier &verifier) {
5351   return verifier.VerifySizePrefixedBuffer<chre::fbs::MessageContainer>(nullptr);
5352 }
5353 
5354 inline void FinishMessageContainerBuffer(
5355     flatbuffers::FlatBufferBuilder &fbb,
5356     flatbuffers::Offset<chre::fbs::MessageContainer> root) {
5357   fbb.Finish(root);
5358 }
5359 
5360 inline void FinishSizePrefixedMessageContainerBuffer(
5361     flatbuffers::FlatBufferBuilder &fbb,
5362     flatbuffers::Offset<chre::fbs::MessageContainer> root) {
5363   fbb.FinishSizePrefixed(root);
5364 }
5365 
5366 inline std::unique_ptr<chre::fbs::MessageContainerT> UnPackMessageContainer(
5367     const void *buf,
5368     const flatbuffers::resolver_function_t *res = nullptr) {
5369   return std::unique_ptr<chre::fbs::MessageContainerT>(GetMessageContainer(buf)->UnPack(res));
5370 }
5371 
5372 inline std::unique_ptr<chre::fbs::MessageContainerT> UnPackSizePrefixedMessageContainer(
5373     const void *buf,
5374     const flatbuffers::resolver_function_t *res = nullptr) {
5375   return std::unique_ptr<chre::fbs::MessageContainerT>(GetSizePrefixedMessageContainer(buf)->UnPack(res));
5376 }
5377 
5378 }  // namespace fbs
5379 }  // namespace chre
5380 
5381 #endif  // FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
5382