Home | History | Annotate | Download | only in chre_host
      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 NanoappMessageT;
     14 
     15 struct HubInfoRequest;
     16 struct HubInfoRequestT;
     17 
     18 struct HubInfoResponse;
     19 struct HubInfoResponseT;
     20 
     21 struct NanoappListRequest;
     22 struct NanoappListRequestT;
     23 
     24 struct NanoappListEntry;
     25 struct NanoappListEntryT;
     26 
     27 struct NanoappListResponse;
     28 struct NanoappListResponseT;
     29 
     30 struct LoadNanoappRequest;
     31 struct LoadNanoappRequestT;
     32 
     33 struct LoadNanoappResponse;
     34 struct LoadNanoappResponseT;
     35 
     36 struct UnloadNanoappRequest;
     37 struct UnloadNanoappRequestT;
     38 
     39 struct UnloadNanoappResponse;
     40 struct UnloadNanoappResponseT;
     41 
     42 struct LogMessage;
     43 struct LogMessageT;
     44 
     45 struct TimeSyncMessage;
     46 struct TimeSyncMessageT;
     47 
     48 struct DebugDumpRequest;
     49 struct DebugDumpRequestT;
     50 
     51 struct DebugDumpData;
     52 struct DebugDumpDataT;
     53 
     54 struct DebugDumpResponse;
     55 struct DebugDumpResponseT;
     56 
     57 struct TimeSyncRequest;
     58 struct TimeSyncRequestT;
     59 
     60 struct HostAddress;
     61 
     62 struct MessageContainer;
     63 struct MessageContainerT;
     64 
     65 /// A union that joins together all possible messages. Note that in FlatBuffers,
     66 /// unions have an implicit type
     67 enum class ChreMessage : uint8_t {
     68   NONE = 0,
     69   NanoappMessage = 1,
     70   HubInfoRequest = 2,
     71   HubInfoResponse = 3,
     72   NanoappListRequest = 4,
     73   NanoappListResponse = 5,
     74   LoadNanoappRequest = 6,
     75   LoadNanoappResponse = 7,
     76   UnloadNanoappRequest = 8,
     77   UnloadNanoappResponse = 9,
     78   LogMessage = 10,
     79   TimeSyncMessage = 11,
     80   DebugDumpRequest = 12,
     81   DebugDumpData = 13,
     82   DebugDumpResponse = 14,
     83   TimeSyncRequest = 15,
     84   MIN = NONE,
     85   MAX = TimeSyncRequest
     86 };
     87 
     88 inline const char **EnumNamesChreMessage() {
     89   static const char *names[] = {
     90     "NONE",
     91     "NanoappMessage",
     92     "HubInfoRequest",
     93     "HubInfoResponse",
     94     "NanoappListRequest",
     95     "NanoappListResponse",
     96     "LoadNanoappRequest",
     97     "LoadNanoappResponse",
     98     "UnloadNanoappRequest",
     99     "UnloadNanoappResponse",
    100     "LogMessage",
    101     "TimeSyncMessage",
    102     "DebugDumpRequest",
    103     "DebugDumpData",
    104     "DebugDumpResponse",
    105     "TimeSyncRequest",
    106     nullptr
    107   };
    108   return names;
    109 }
    110 
    111 inline const char *EnumNameChreMessage(ChreMessage e) {
    112   const size_t index = static_cast<int>(e);
    113   return EnumNamesChreMessage()[index];
    114 }
    115 
    116 template<typename T> struct ChreMessageTraits {
    117   static const ChreMessage enum_value = ChreMessage::NONE;
    118 };
    119 
    120 template<> struct ChreMessageTraits<NanoappMessage> {
    121   static const ChreMessage enum_value = ChreMessage::NanoappMessage;
    122 };
    123 
    124 template<> struct ChreMessageTraits<HubInfoRequest> {
    125   static const ChreMessage enum_value = ChreMessage::HubInfoRequest;
    126 };
    127 
    128 template<> struct ChreMessageTraits<HubInfoResponse> {
    129   static const ChreMessage enum_value = ChreMessage::HubInfoResponse;
    130 };
    131 
    132 template<> struct ChreMessageTraits<NanoappListRequest> {
    133   static const ChreMessage enum_value = ChreMessage::NanoappListRequest;
    134 };
    135 
    136 template<> struct ChreMessageTraits<NanoappListResponse> {
    137   static const ChreMessage enum_value = ChreMessage::NanoappListResponse;
    138 };
    139 
    140 template<> struct ChreMessageTraits<LoadNanoappRequest> {
    141   static const ChreMessage enum_value = ChreMessage::LoadNanoappRequest;
    142 };
    143 
    144 template<> struct ChreMessageTraits<LoadNanoappResponse> {
    145   static const ChreMessage enum_value = ChreMessage::LoadNanoappResponse;
    146 };
    147 
    148 template<> struct ChreMessageTraits<UnloadNanoappRequest> {
    149   static const ChreMessage enum_value = ChreMessage::UnloadNanoappRequest;
    150 };
    151 
    152 template<> struct ChreMessageTraits<UnloadNanoappResponse> {
    153   static const ChreMessage enum_value = ChreMessage::UnloadNanoappResponse;
    154 };
    155 
    156 template<> struct ChreMessageTraits<LogMessage> {
    157   static const ChreMessage enum_value = ChreMessage::LogMessage;
    158 };
    159 
    160 template<> struct ChreMessageTraits<TimeSyncMessage> {
    161   static const ChreMessage enum_value = ChreMessage::TimeSyncMessage;
    162 };
    163 
    164 template<> struct ChreMessageTraits<DebugDumpRequest> {
    165   static const ChreMessage enum_value = ChreMessage::DebugDumpRequest;
    166 };
    167 
    168 template<> struct ChreMessageTraits<DebugDumpData> {
    169   static const ChreMessage enum_value = ChreMessage::DebugDumpData;
    170 };
    171 
    172 template<> struct ChreMessageTraits<DebugDumpResponse> {
    173   static const ChreMessage enum_value = ChreMessage::DebugDumpResponse;
    174 };
    175 
    176 template<> struct ChreMessageTraits<TimeSyncRequest> {
    177   static const ChreMessage enum_value = ChreMessage::TimeSyncRequest;
    178 };
    179 
    180 struct ChreMessageUnion {
    181   ChreMessage type;
    182   flatbuffers::NativeTable *table;
    183 
    184   ChreMessageUnion() : type(ChreMessage::NONE), table(nullptr) {}
    185   ChreMessageUnion(ChreMessageUnion&& u):
    186     type(std::move(u.type)), table(std::move(u.table)) {}
    187   ChreMessageUnion(const ChreMessageUnion &);
    188   ChreMessageUnion &operator=(const ChreMessageUnion &);
    189   ~ChreMessageUnion() { Reset(); }
    190 
    191   void Reset();
    192 
    193   template <typename T>
    194   void Set(T&& value) {
    195     Reset();
    196     type = ChreMessageTraits<typename T::TableType>::enum_value;
    197     if (type != ChreMessage::NONE) {
    198       table = new T(std::forward<T>(value));
    199     }
    200   }
    201 
    202   static flatbuffers::NativeTable *UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver);
    203   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
    204 
    205   NanoappMessageT *AsNanoappMessage() {
    206     return type == ChreMessage::NanoappMessage ?
    207       reinterpret_cast<NanoappMessageT *>(table) : nullptr;
    208   }
    209   HubInfoRequestT *AsHubInfoRequest() {
    210     return type == ChreMessage::HubInfoRequest ?
    211       reinterpret_cast<HubInfoRequestT *>(table) : nullptr;
    212   }
    213   HubInfoResponseT *AsHubInfoResponse() {
    214     return type == ChreMessage::HubInfoResponse ?
    215       reinterpret_cast<HubInfoResponseT *>(table) : nullptr;
    216   }
    217   NanoappListRequestT *AsNanoappListRequest() {
    218     return type == ChreMessage::NanoappListRequest ?
    219       reinterpret_cast<NanoappListRequestT *>(table) : nullptr;
    220   }
    221   NanoappListResponseT *AsNanoappListResponse() {
    222     return type == ChreMessage::NanoappListResponse ?
    223       reinterpret_cast<NanoappListResponseT *>(table) : nullptr;
    224   }
    225   LoadNanoappRequestT *AsLoadNanoappRequest() {
    226     return type == ChreMessage::LoadNanoappRequest ?
    227       reinterpret_cast<LoadNanoappRequestT *>(table) : nullptr;
    228   }
    229   LoadNanoappResponseT *AsLoadNanoappResponse() {
    230     return type == ChreMessage::LoadNanoappResponse ?
    231       reinterpret_cast<LoadNanoappResponseT *>(table) : nullptr;
    232   }
    233   UnloadNanoappRequestT *AsUnloadNanoappRequest() {
    234     return type == ChreMessage::UnloadNanoappRequest ?
    235       reinterpret_cast<UnloadNanoappRequestT *>(table) : nullptr;
    236   }
    237   UnloadNanoappResponseT *AsUnloadNanoappResponse() {
    238     return type == ChreMessage::UnloadNanoappResponse ?
    239       reinterpret_cast<UnloadNanoappResponseT *>(table) : nullptr;
    240   }
    241   LogMessageT *AsLogMessage() {
    242     return type == ChreMessage::LogMessage ?
    243       reinterpret_cast<LogMessageT *>(table) : nullptr;
    244   }
    245   TimeSyncMessageT *AsTimeSyncMessage() {
    246     return type == ChreMessage::TimeSyncMessage ?
    247       reinterpret_cast<TimeSyncMessageT *>(table) : nullptr;
    248   }
    249   DebugDumpRequestT *AsDebugDumpRequest() {
    250     return type == ChreMessage::DebugDumpRequest ?
    251       reinterpret_cast<DebugDumpRequestT *>(table) : nullptr;
    252   }
    253   DebugDumpDataT *AsDebugDumpData() {
    254     return type == ChreMessage::DebugDumpData ?
    255       reinterpret_cast<DebugDumpDataT *>(table) : nullptr;
    256   }
    257   DebugDumpResponseT *AsDebugDumpResponse() {
    258     return type == ChreMessage::DebugDumpResponse ?
    259       reinterpret_cast<DebugDumpResponseT *>(table) : nullptr;
    260   }
    261   TimeSyncRequestT *AsTimeSyncRequest() {
    262     return type == ChreMessage::TimeSyncRequest ?
    263       reinterpret_cast<TimeSyncRequestT *>(table) : nullptr;
    264   }
    265 };
    266 
    267 bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type);
    268 bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
    269 
    270 MANUALLY_ALIGNED_STRUCT(2) HostAddress FLATBUFFERS_FINAL_CLASS {
    271  private:
    272   uint16_t client_id_;
    273 
    274  public:
    275   HostAddress() {
    276     memset(this, 0, sizeof(HostAddress));
    277   }
    278   HostAddress(const HostAddress &_o) {
    279     memcpy(this, &_o, sizeof(HostAddress));
    280   }
    281   HostAddress(uint16_t _client_id)
    282       : client_id_(flatbuffers::EndianScalar(_client_id)) {
    283   }
    284   uint16_t client_id() const {
    285     return flatbuffers::EndianScalar(client_id_);
    286   }
    287   void mutate_client_id(uint16_t _client_id) {
    288     flatbuffers::WriteScalar(&client_id_, _client_id);
    289   }
    290 };
    291 STRUCT_END(HostAddress, 2);
    292 
    293 struct NanoappMessageT : public flatbuffers::NativeTable {
    294   typedef NanoappMessage TableType;
    295   uint64_t app_id;
    296   uint32_t message_type;
    297   uint16_t host_endpoint;
    298   std::vector<uint8_t> message;
    299   NanoappMessageT()
    300       : app_id(0),
    301         message_type(0),
    302         host_endpoint(65534) {
    303   }
    304 };
    305 
    306 /// Represents a message sent to/from a nanoapp from/to a client on the host
    307 struct NanoappMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    308   typedef NanoappMessageT NativeTableType;
    309   enum {
    310     VT_APP_ID = 4,
    311     VT_MESSAGE_TYPE = 6,
    312     VT_HOST_ENDPOINT = 8,
    313     VT_MESSAGE = 10
    314   };
    315   uint64_t app_id() const {
    316     return GetField<uint64_t>(VT_APP_ID, 0);
    317   }
    318   bool mutate_app_id(uint64_t _app_id) {
    319     return SetField(VT_APP_ID, _app_id);
    320   }
    321   uint32_t message_type() const {
    322     return GetField<uint32_t>(VT_MESSAGE_TYPE, 0);
    323   }
    324   bool mutate_message_type(uint32_t _message_type) {
    325     return SetField(VT_MESSAGE_TYPE, _message_type);
    326   }
    327   /// Identifies the host-side endpoint on the host that sent or should receive
    328   /// this message. The default value is a special value defined in the HAL and
    329   /// elsewhere that indicates that the endpoint is unspecified.
    330   uint16_t host_endpoint() const {
    331     return GetField<uint16_t>(VT_HOST_ENDPOINT, 65534);
    332   }
    333   bool mutate_host_endpoint(uint16_t _host_endpoint) {
    334     return SetField(VT_HOST_ENDPOINT, _host_endpoint);
    335   }
    336   /// Vector containing arbitrary application-specific message data
    337   const flatbuffers::Vector<uint8_t> *message() const {
    338     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
    339   }
    340   flatbuffers::Vector<uint8_t> *mutable_message() {
    341     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_MESSAGE);
    342   }
    343   bool Verify(flatbuffers::Verifier &verifier) const {
    344     return VerifyTableStart(verifier) &&
    345            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
    346            VerifyField<uint32_t>(verifier, VT_MESSAGE_TYPE) &&
    347            VerifyField<uint16_t>(verifier, VT_HOST_ENDPOINT) &&
    348            VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) &&
    349            verifier.Verify(message()) &&
    350            verifier.EndTable();
    351   }
    352   NanoappMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    353   void UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    354   static flatbuffers::Offset<NanoappMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    355 };
    356 
    357 struct NanoappMessageBuilder {
    358   flatbuffers::FlatBufferBuilder &fbb_;
    359   flatbuffers::uoffset_t start_;
    360   void add_app_id(uint64_t app_id) {
    361     fbb_.AddElement<uint64_t>(NanoappMessage::VT_APP_ID, app_id, 0);
    362   }
    363   void add_message_type(uint32_t message_type) {
    364     fbb_.AddElement<uint32_t>(NanoappMessage::VT_MESSAGE_TYPE, message_type, 0);
    365   }
    366   void add_host_endpoint(uint16_t host_endpoint) {
    367     fbb_.AddElement<uint16_t>(NanoappMessage::VT_HOST_ENDPOINT, host_endpoint, 65534);
    368   }
    369   void add_message(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message) {
    370     fbb_.AddOffset(NanoappMessage::VT_MESSAGE, message);
    371   }
    372   NanoappMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    373         : fbb_(_fbb) {
    374     start_ = fbb_.StartTable();
    375   }
    376   NanoappMessageBuilder &operator=(const NanoappMessageBuilder &);
    377   flatbuffers::Offset<NanoappMessage> Finish() {
    378     const auto end = fbb_.EndTable(start_, 4);
    379     auto o = flatbuffers::Offset<NanoappMessage>(end);
    380     fbb_.Required(o, NanoappMessage::VT_MESSAGE);
    381     return o;
    382   }
    383 };
    384 
    385 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(
    386     flatbuffers::FlatBufferBuilder &_fbb,
    387     uint64_t app_id = 0,
    388     uint32_t message_type = 0,
    389     uint16_t host_endpoint = 65534,
    390     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message = 0) {
    391   NanoappMessageBuilder builder_(_fbb);
    392   builder_.add_app_id(app_id);
    393   builder_.add_message(message);
    394   builder_.add_message_type(message_type);
    395   builder_.add_host_endpoint(host_endpoint);
    396   return builder_.Finish();
    397 }
    398 
    399 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessageDirect(
    400     flatbuffers::FlatBufferBuilder &_fbb,
    401     uint64_t app_id = 0,
    402     uint32_t message_type = 0,
    403     uint16_t host_endpoint = 65534,
    404     const std::vector<uint8_t> *message = nullptr) {
    405   return chre::fbs::CreateNanoappMessage(
    406       _fbb,
    407       app_id,
    408       message_type,
    409       host_endpoint,
    410       message ? _fbb.CreateVector<uint8_t>(*message) : 0);
    411 }
    412 
    413 flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    414 
    415 struct HubInfoRequestT : public flatbuffers::NativeTable {
    416   typedef HubInfoRequest TableType;
    417   HubInfoRequestT() {
    418   }
    419 };
    420 
    421 struct HubInfoRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    422   typedef HubInfoRequestT NativeTableType;
    423   bool Verify(flatbuffers::Verifier &verifier) const {
    424     return VerifyTableStart(verifier) &&
    425            verifier.EndTable();
    426   }
    427   HubInfoRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    428   void UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    429   static flatbuffers::Offset<HubInfoRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    430 };
    431 
    432 struct HubInfoRequestBuilder {
    433   flatbuffers::FlatBufferBuilder &fbb_;
    434   flatbuffers::uoffset_t start_;
    435   HubInfoRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    436         : fbb_(_fbb) {
    437     start_ = fbb_.StartTable();
    438   }
    439   HubInfoRequestBuilder &operator=(const HubInfoRequestBuilder &);
    440   flatbuffers::Offset<HubInfoRequest> Finish() {
    441     const auto end = fbb_.EndTable(start_, 0);
    442     auto o = flatbuffers::Offset<HubInfoRequest>(end);
    443     return o;
    444   }
    445 };
    446 
    447 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(
    448     flatbuffers::FlatBufferBuilder &_fbb) {
    449   HubInfoRequestBuilder builder_(_fbb);
    450   return builder_.Finish();
    451 }
    452 
    453 flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    454 
    455 struct HubInfoResponseT : public flatbuffers::NativeTable {
    456   typedef HubInfoResponse TableType;
    457   std::vector<int8_t> name;
    458   std::vector<int8_t> vendor;
    459   std::vector<int8_t> toolchain;
    460   uint32_t platform_version;
    461   uint32_t toolchain_version;
    462   float peak_mips;
    463   float stopped_power;
    464   float sleep_power;
    465   float peak_power;
    466   uint32_t max_msg_len;
    467   uint64_t platform_id;
    468   uint32_t chre_platform_version;
    469   HubInfoResponseT()
    470       : platform_version(0),
    471         toolchain_version(0),
    472         peak_mips(0.0f),
    473         stopped_power(0.0f),
    474         sleep_power(0.0f),
    475         peak_power(0.0f),
    476         max_msg_len(0),
    477         platform_id(0),
    478         chre_platform_version(0) {
    479   }
    480 };
    481 
    482 struct HubInfoResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    483   typedef HubInfoResponseT NativeTableType;
    484   enum {
    485     VT_NAME = 4,
    486     VT_VENDOR = 6,
    487     VT_TOOLCHAIN = 8,
    488     VT_PLATFORM_VERSION = 10,
    489     VT_TOOLCHAIN_VERSION = 12,
    490     VT_PEAK_MIPS = 14,
    491     VT_STOPPED_POWER = 16,
    492     VT_SLEEP_POWER = 18,
    493     VT_PEAK_POWER = 20,
    494     VT_MAX_MSG_LEN = 22,
    495     VT_PLATFORM_ID = 24,
    496     VT_CHRE_PLATFORM_VERSION = 26
    497   };
    498   /// The name of the hub. Nominally a UTF-8 string, but note that we're not
    499   /// using the built-in "string" data type from FlatBuffers here, because the
    500   /// generated C++ uses std::string which is not well-supported in CHRE. This
    501   /// applies for vendor and toolchain as well.
    502   const flatbuffers::Vector<int8_t> *name() const {
    503     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_NAME);
    504   }
    505   flatbuffers::Vector<int8_t> *mutable_name() {
    506     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_NAME);
    507   }
    508   const flatbuffers::Vector<int8_t> *vendor() const {
    509     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_VENDOR);
    510   }
    511   flatbuffers::Vector<int8_t> *mutable_vendor() {
    512     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_VENDOR);
    513   }
    514   const flatbuffers::Vector<int8_t> *toolchain() const {
    515     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
    516   }
    517   flatbuffers::Vector<int8_t> *mutable_toolchain() {
    518     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_TOOLCHAIN);
    519   }
    520   /// Legacy platform version reported in the HAL; semantics not strictly
    521   /// defined
    522   uint32_t platform_version() const {
    523     return GetField<uint32_t>(VT_PLATFORM_VERSION, 0);
    524   }
    525   bool mutate_platform_version(uint32_t _platform_version) {
    526     return SetField(VT_PLATFORM_VERSION, _platform_version);
    527   }
    528   /// Toolchain version reported in the HAL; semantics not strictly defined
    529   uint32_t toolchain_version() const {
    530     return GetField<uint32_t>(VT_TOOLCHAIN_VERSION, 0);
    531   }
    532   bool mutate_toolchain_version(uint32_t _toolchain_version) {
    533     return SetField(VT_TOOLCHAIN_VERSION, _toolchain_version);
    534   }
    535   float peak_mips() const {
    536     return GetField<float>(VT_PEAK_MIPS, 0.0f);
    537   }
    538   bool mutate_peak_mips(float _peak_mips) {
    539     return SetField(VT_PEAK_MIPS, _peak_mips);
    540   }
    541   float stopped_power() const {
    542     return GetField<float>(VT_STOPPED_POWER, 0.0f);
    543   }
    544   bool mutate_stopped_power(float _stopped_power) {
    545     return SetField(VT_STOPPED_POWER, _stopped_power);
    546   }
    547   float sleep_power() const {
    548     return GetField<float>(VT_SLEEP_POWER, 0.0f);
    549   }
    550   bool mutate_sleep_power(float _sleep_power) {
    551     return SetField(VT_SLEEP_POWER, _sleep_power);
    552   }
    553   float peak_power() const {
    554     return GetField<float>(VT_PEAK_POWER, 0.0f);
    555   }
    556   bool mutate_peak_power(float _peak_power) {
    557     return SetField(VT_PEAK_POWER, _peak_power);
    558   }
    559   /// Maximum size message that can be sent to a nanoapp
    560   uint32_t max_msg_len() const {
    561     return GetField<uint32_t>(VT_MAX_MSG_LEN, 0);
    562   }
    563   bool mutate_max_msg_len(uint32_t _max_msg_len) {
    564     return SetField(VT_MAX_MSG_LEN, _max_msg_len);
    565   }
    566   /// @see chreGetPlatformId()
    567   uint64_t platform_id() const {
    568     return GetField<uint64_t>(VT_PLATFORM_ID, 0);
    569   }
    570   bool mutate_platform_id(uint64_t _platform_id) {
    571     return SetField(VT_PLATFORM_ID, _platform_id);
    572   }
    573   /// @see chreGetVersion()
    574   uint32_t chre_platform_version() const {
    575     return GetField<uint32_t>(VT_CHRE_PLATFORM_VERSION, 0);
    576   }
    577   bool mutate_chre_platform_version(uint32_t _chre_platform_version) {
    578     return SetField(VT_CHRE_PLATFORM_VERSION, _chre_platform_version);
    579   }
    580   bool Verify(flatbuffers::Verifier &verifier) const {
    581     return VerifyTableStart(verifier) &&
    582            VerifyField<flatbuffers::uoffset_t>(verifier, VT_NAME) &&
    583            verifier.Verify(name()) &&
    584            VerifyField<flatbuffers::uoffset_t>(verifier, VT_VENDOR) &&
    585            verifier.Verify(vendor()) &&
    586            VerifyField<flatbuffers::uoffset_t>(verifier, VT_TOOLCHAIN) &&
    587            verifier.Verify(toolchain()) &&
    588            VerifyField<uint32_t>(verifier, VT_PLATFORM_VERSION) &&
    589            VerifyField<uint32_t>(verifier, VT_TOOLCHAIN_VERSION) &&
    590            VerifyField<float>(verifier, VT_PEAK_MIPS) &&
    591            VerifyField<float>(verifier, VT_STOPPED_POWER) &&
    592            VerifyField<float>(verifier, VT_SLEEP_POWER) &&
    593            VerifyField<float>(verifier, VT_PEAK_POWER) &&
    594            VerifyField<uint32_t>(verifier, VT_MAX_MSG_LEN) &&
    595            VerifyField<uint64_t>(verifier, VT_PLATFORM_ID) &&
    596            VerifyField<uint32_t>(verifier, VT_CHRE_PLATFORM_VERSION) &&
    597            verifier.EndTable();
    598   }
    599   HubInfoResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    600   void UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    601   static flatbuffers::Offset<HubInfoResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    602 };
    603 
    604 struct HubInfoResponseBuilder {
    605   flatbuffers::FlatBufferBuilder &fbb_;
    606   flatbuffers::uoffset_t start_;
    607   void add_name(flatbuffers::Offset<flatbuffers::Vector<int8_t>> name) {
    608     fbb_.AddOffset(HubInfoResponse::VT_NAME, name);
    609   }
    610   void add_vendor(flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor) {
    611     fbb_.AddOffset(HubInfoResponse::VT_VENDOR, vendor);
    612   }
    613   void add_toolchain(flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain) {
    614     fbb_.AddOffset(HubInfoResponse::VT_TOOLCHAIN, toolchain);
    615   }
    616   void add_platform_version(uint32_t platform_version) {
    617     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_PLATFORM_VERSION, platform_version, 0);
    618   }
    619   void add_toolchain_version(uint32_t toolchain_version) {
    620     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_TOOLCHAIN_VERSION, toolchain_version, 0);
    621   }
    622   void add_peak_mips(float peak_mips) {
    623     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_MIPS, peak_mips, 0.0f);
    624   }
    625   void add_stopped_power(float stopped_power) {
    626     fbb_.AddElement<float>(HubInfoResponse::VT_STOPPED_POWER, stopped_power, 0.0f);
    627   }
    628   void add_sleep_power(float sleep_power) {
    629     fbb_.AddElement<float>(HubInfoResponse::VT_SLEEP_POWER, sleep_power, 0.0f);
    630   }
    631   void add_peak_power(float peak_power) {
    632     fbb_.AddElement<float>(HubInfoResponse::VT_PEAK_POWER, peak_power, 0.0f);
    633   }
    634   void add_max_msg_len(uint32_t max_msg_len) {
    635     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_MAX_MSG_LEN, max_msg_len, 0);
    636   }
    637   void add_platform_id(uint64_t platform_id) {
    638     fbb_.AddElement<uint64_t>(HubInfoResponse::VT_PLATFORM_ID, platform_id, 0);
    639   }
    640   void add_chre_platform_version(uint32_t chre_platform_version) {
    641     fbb_.AddElement<uint32_t>(HubInfoResponse::VT_CHRE_PLATFORM_VERSION, chre_platform_version, 0);
    642   }
    643   HubInfoResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    644         : fbb_(_fbb) {
    645     start_ = fbb_.StartTable();
    646   }
    647   HubInfoResponseBuilder &operator=(const HubInfoResponseBuilder &);
    648   flatbuffers::Offset<HubInfoResponse> Finish() {
    649     const auto end = fbb_.EndTable(start_, 12);
    650     auto o = flatbuffers::Offset<HubInfoResponse>(end);
    651     return o;
    652   }
    653 };
    654 
    655 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(
    656     flatbuffers::FlatBufferBuilder &_fbb,
    657     flatbuffers::Offset<flatbuffers::Vector<int8_t>> name = 0,
    658     flatbuffers::Offset<flatbuffers::Vector<int8_t>> vendor = 0,
    659     flatbuffers::Offset<flatbuffers::Vector<int8_t>> toolchain = 0,
    660     uint32_t platform_version = 0,
    661     uint32_t toolchain_version = 0,
    662     float peak_mips = 0.0f,
    663     float stopped_power = 0.0f,
    664     float sleep_power = 0.0f,
    665     float peak_power = 0.0f,
    666     uint32_t max_msg_len = 0,
    667     uint64_t platform_id = 0,
    668     uint32_t chre_platform_version = 0) {
    669   HubInfoResponseBuilder builder_(_fbb);
    670   builder_.add_platform_id(platform_id);
    671   builder_.add_chre_platform_version(chre_platform_version);
    672   builder_.add_max_msg_len(max_msg_len);
    673   builder_.add_peak_power(peak_power);
    674   builder_.add_sleep_power(sleep_power);
    675   builder_.add_stopped_power(stopped_power);
    676   builder_.add_peak_mips(peak_mips);
    677   builder_.add_toolchain_version(toolchain_version);
    678   builder_.add_platform_version(platform_version);
    679   builder_.add_toolchain(toolchain);
    680   builder_.add_vendor(vendor);
    681   builder_.add_name(name);
    682   return builder_.Finish();
    683 }
    684 
    685 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponseDirect(
    686     flatbuffers::FlatBufferBuilder &_fbb,
    687     const std::vector<int8_t> *name = nullptr,
    688     const std::vector<int8_t> *vendor = nullptr,
    689     const std::vector<int8_t> *toolchain = nullptr,
    690     uint32_t platform_version = 0,
    691     uint32_t toolchain_version = 0,
    692     float peak_mips = 0.0f,
    693     float stopped_power = 0.0f,
    694     float sleep_power = 0.0f,
    695     float peak_power = 0.0f,
    696     uint32_t max_msg_len = 0,
    697     uint64_t platform_id = 0,
    698     uint32_t chre_platform_version = 0) {
    699   return chre::fbs::CreateHubInfoResponse(
    700       _fbb,
    701       name ? _fbb.CreateVector<int8_t>(*name) : 0,
    702       vendor ? _fbb.CreateVector<int8_t>(*vendor) : 0,
    703       toolchain ? _fbb.CreateVector<int8_t>(*toolchain) : 0,
    704       platform_version,
    705       toolchain_version,
    706       peak_mips,
    707       stopped_power,
    708       sleep_power,
    709       peak_power,
    710       max_msg_len,
    711       platform_id,
    712       chre_platform_version);
    713 }
    714 
    715 flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    716 
    717 struct NanoappListRequestT : public flatbuffers::NativeTable {
    718   typedef NanoappListRequest TableType;
    719   NanoappListRequestT() {
    720   }
    721 };
    722 
    723 struct NanoappListRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    724   typedef NanoappListRequestT NativeTableType;
    725   bool Verify(flatbuffers::Verifier &verifier) const {
    726     return VerifyTableStart(verifier) &&
    727            verifier.EndTable();
    728   }
    729   NanoappListRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    730   void UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    731   static flatbuffers::Offset<NanoappListRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    732 };
    733 
    734 struct NanoappListRequestBuilder {
    735   flatbuffers::FlatBufferBuilder &fbb_;
    736   flatbuffers::uoffset_t start_;
    737   NanoappListRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    738         : fbb_(_fbb) {
    739     start_ = fbb_.StartTable();
    740   }
    741   NanoappListRequestBuilder &operator=(const NanoappListRequestBuilder &);
    742   flatbuffers::Offset<NanoappListRequest> Finish() {
    743     const auto end = fbb_.EndTable(start_, 0);
    744     auto o = flatbuffers::Offset<NanoappListRequest>(end);
    745     return o;
    746   }
    747 };
    748 
    749 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(
    750     flatbuffers::FlatBufferBuilder &_fbb) {
    751   NanoappListRequestBuilder builder_(_fbb);
    752   return builder_.Finish();
    753 }
    754 
    755 flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    756 
    757 struct NanoappListEntryT : public flatbuffers::NativeTable {
    758   typedef NanoappListEntry TableType;
    759   uint64_t app_id;
    760   uint32_t version;
    761   bool enabled;
    762   bool is_system;
    763   NanoappListEntryT()
    764       : app_id(0),
    765         version(0),
    766         enabled(true),
    767         is_system(false) {
    768   }
    769 };
    770 
    771 struct NanoappListEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    772   typedef NanoappListEntryT NativeTableType;
    773   enum {
    774     VT_APP_ID = 4,
    775     VT_VERSION = 6,
    776     VT_ENABLED = 8,
    777     VT_IS_SYSTEM = 10
    778   };
    779   uint64_t app_id() const {
    780     return GetField<uint64_t>(VT_APP_ID, 0);
    781   }
    782   bool mutate_app_id(uint64_t _app_id) {
    783     return SetField(VT_APP_ID, _app_id);
    784   }
    785   uint32_t version() const {
    786     return GetField<uint32_t>(VT_VERSION, 0);
    787   }
    788   bool mutate_version(uint32_t _version) {
    789     return SetField(VT_VERSION, _version);
    790   }
    791   bool enabled() const {
    792     return GetField<uint8_t>(VT_ENABLED, 1) != 0;
    793   }
    794   bool mutate_enabled(bool _enabled) {
    795     return SetField(VT_ENABLED, static_cast<uint8_t>(_enabled));
    796   }
    797   /// Whether the nanoapp is a pre-loaded "system" nanoapp, i.e. one that should
    798   /// not show up in the list of nanoapps in the context hub HAL. System
    799   /// nanoapps are typically used to leverage CHRE for some device functionality
    800   /// and do not interact via the context hub HAL.
    801   bool is_system() const {
    802     return GetField<uint8_t>(VT_IS_SYSTEM, 0) != 0;
    803   }
    804   bool mutate_is_system(bool _is_system) {
    805     return SetField(VT_IS_SYSTEM, static_cast<uint8_t>(_is_system));
    806   }
    807   bool Verify(flatbuffers::Verifier &verifier) const {
    808     return VerifyTableStart(verifier) &&
    809            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
    810            VerifyField<uint32_t>(verifier, VT_VERSION) &&
    811            VerifyField<uint8_t>(verifier, VT_ENABLED) &&
    812            VerifyField<uint8_t>(verifier, VT_IS_SYSTEM) &&
    813            verifier.EndTable();
    814   }
    815   NanoappListEntryT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    816   void UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    817   static flatbuffers::Offset<NanoappListEntry> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    818 };
    819 
    820 struct NanoappListEntryBuilder {
    821   flatbuffers::FlatBufferBuilder &fbb_;
    822   flatbuffers::uoffset_t start_;
    823   void add_app_id(uint64_t app_id) {
    824     fbb_.AddElement<uint64_t>(NanoappListEntry::VT_APP_ID, app_id, 0);
    825   }
    826   void add_version(uint32_t version) {
    827     fbb_.AddElement<uint32_t>(NanoappListEntry::VT_VERSION, version, 0);
    828   }
    829   void add_enabled(bool enabled) {
    830     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_ENABLED, static_cast<uint8_t>(enabled), 1);
    831   }
    832   void add_is_system(bool is_system) {
    833     fbb_.AddElement<uint8_t>(NanoappListEntry::VT_IS_SYSTEM, static_cast<uint8_t>(is_system), 0);
    834   }
    835   NanoappListEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    836         : fbb_(_fbb) {
    837     start_ = fbb_.StartTable();
    838   }
    839   NanoappListEntryBuilder &operator=(const NanoappListEntryBuilder &);
    840   flatbuffers::Offset<NanoappListEntry> Finish() {
    841     const auto end = fbb_.EndTable(start_, 4);
    842     auto o = flatbuffers::Offset<NanoappListEntry>(end);
    843     return o;
    844   }
    845 };
    846 
    847 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(
    848     flatbuffers::FlatBufferBuilder &_fbb,
    849     uint64_t app_id = 0,
    850     uint32_t version = 0,
    851     bool enabled = true,
    852     bool is_system = false) {
    853   NanoappListEntryBuilder builder_(_fbb);
    854   builder_.add_app_id(app_id);
    855   builder_.add_version(version);
    856   builder_.add_is_system(is_system);
    857   builder_.add_enabled(enabled);
    858   return builder_.Finish();
    859 }
    860 
    861 flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    862 
    863 struct NanoappListResponseT : public flatbuffers::NativeTable {
    864   typedef NanoappListResponse TableType;
    865   std::vector<std::unique_ptr<NanoappListEntryT>> nanoapps;
    866   NanoappListResponseT() {
    867   }
    868 };
    869 
    870 struct NanoappListResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    871   typedef NanoappListResponseT NativeTableType;
    872   enum {
    873     VT_NANOAPPS = 4
    874   };
    875   const flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *nanoapps() const {
    876     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *>(VT_NANOAPPS);
    877   }
    878   flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *mutable_nanoapps() {
    879     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>> *>(VT_NANOAPPS);
    880   }
    881   bool Verify(flatbuffers::Verifier &verifier) const {
    882     return VerifyTableStart(verifier) &&
    883            VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_NANOAPPS) &&
    884            verifier.Verify(nanoapps()) &&
    885            verifier.VerifyVectorOfTables(nanoapps()) &&
    886            verifier.EndTable();
    887   }
    888   NanoappListResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    889   void UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    890   static flatbuffers::Offset<NanoappListResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    891 };
    892 
    893 struct NanoappListResponseBuilder {
    894   flatbuffers::FlatBufferBuilder &fbb_;
    895   flatbuffers::uoffset_t start_;
    896   void add_nanoapps(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>>> nanoapps) {
    897     fbb_.AddOffset(NanoappListResponse::VT_NANOAPPS, nanoapps);
    898   }
    899   NanoappListResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
    900         : fbb_(_fbb) {
    901     start_ = fbb_.StartTable();
    902   }
    903   NanoappListResponseBuilder &operator=(const NanoappListResponseBuilder &);
    904   flatbuffers::Offset<NanoappListResponse> Finish() {
    905     const auto end = fbb_.EndTable(start_, 1);
    906     auto o = flatbuffers::Offset<NanoappListResponse>(end);
    907     fbb_.Required(o, NanoappListResponse::VT_NANOAPPS);
    908     return o;
    909   }
    910 };
    911 
    912 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(
    913     flatbuffers::FlatBufferBuilder &_fbb,
    914     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<NanoappListEntry>>> nanoapps = 0) {
    915   NanoappListResponseBuilder builder_(_fbb);
    916   builder_.add_nanoapps(nanoapps);
    917   return builder_.Finish();
    918 }
    919 
    920 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponseDirect(
    921     flatbuffers::FlatBufferBuilder &_fbb,
    922     const std::vector<flatbuffers::Offset<NanoappListEntry>> *nanoapps = nullptr) {
    923   return chre::fbs::CreateNanoappListResponse(
    924       _fbb,
    925       nanoapps ? _fbb.CreateVector<flatbuffers::Offset<NanoappListEntry>>(*nanoapps) : 0);
    926 }
    927 
    928 flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    929 
    930 struct LoadNanoappRequestT : public flatbuffers::NativeTable {
    931   typedef LoadNanoappRequest TableType;
    932   uint32_t transaction_id;
    933   uint64_t app_id;
    934   uint32_t app_version;
    935   uint32_t target_api_version;
    936   std::vector<uint8_t> app_binary;
    937   LoadNanoappRequestT()
    938       : transaction_id(0),
    939         app_id(0),
    940         app_version(0),
    941         target_api_version(0) {
    942   }
    943 };
    944 
    945 struct LoadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
    946   typedef LoadNanoappRequestT NativeTableType;
    947   enum {
    948     VT_TRANSACTION_ID = 4,
    949     VT_APP_ID = 6,
    950     VT_APP_VERSION = 8,
    951     VT_TARGET_API_VERSION = 10,
    952     VT_APP_BINARY = 12
    953   };
    954   uint32_t transaction_id() const {
    955     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
    956   }
    957   bool mutate_transaction_id(uint32_t _transaction_id) {
    958     return SetField(VT_TRANSACTION_ID, _transaction_id);
    959   }
    960   uint64_t app_id() const {
    961     return GetField<uint64_t>(VT_APP_ID, 0);
    962   }
    963   bool mutate_app_id(uint64_t _app_id) {
    964     return SetField(VT_APP_ID, _app_id);
    965   }
    966   uint32_t app_version() const {
    967     return GetField<uint32_t>(VT_APP_VERSION, 0);
    968   }
    969   bool mutate_app_version(uint32_t _app_version) {
    970     return SetField(VT_APP_VERSION, _app_version);
    971   }
    972   uint32_t target_api_version() const {
    973     return GetField<uint32_t>(VT_TARGET_API_VERSION, 0);
    974   }
    975   bool mutate_target_api_version(uint32_t _target_api_version) {
    976     return SetField(VT_TARGET_API_VERSION, _target_api_version);
    977   }
    978   const flatbuffers::Vector<uint8_t> *app_binary() const {
    979     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
    980   }
    981   flatbuffers::Vector<uint8_t> *mutable_app_binary() {
    982     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_APP_BINARY);
    983   }
    984   bool Verify(flatbuffers::Verifier &verifier) const {
    985     return VerifyTableStart(verifier) &&
    986            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
    987            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
    988            VerifyField<uint32_t>(verifier, VT_APP_VERSION) &&
    989            VerifyField<uint32_t>(verifier, VT_TARGET_API_VERSION) &&
    990            VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_APP_BINARY) &&
    991            verifier.Verify(app_binary()) &&
    992            verifier.EndTable();
    993   }
    994   LoadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    995   void UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
    996   static flatbuffers::Offset<LoadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
    997 };
    998 
    999 struct LoadNanoappRequestBuilder {
   1000   flatbuffers::FlatBufferBuilder &fbb_;
   1001   flatbuffers::uoffset_t start_;
   1002   void add_transaction_id(uint32_t transaction_id) {
   1003     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
   1004   }
   1005   void add_app_id(uint64_t app_id) {
   1006     fbb_.AddElement<uint64_t>(LoadNanoappRequest::VT_APP_ID, app_id, 0);
   1007   }
   1008   void add_app_version(uint32_t app_version) {
   1009     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_APP_VERSION, app_version, 0);
   1010   }
   1011   void add_target_api_version(uint32_t target_api_version) {
   1012     fbb_.AddElement<uint32_t>(LoadNanoappRequest::VT_TARGET_API_VERSION, target_api_version, 0);
   1013   }
   1014   void add_app_binary(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary) {
   1015     fbb_.AddOffset(LoadNanoappRequest::VT_APP_BINARY, app_binary);
   1016   }
   1017   LoadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1018         : fbb_(_fbb) {
   1019     start_ = fbb_.StartTable();
   1020   }
   1021   LoadNanoappRequestBuilder &operator=(const LoadNanoappRequestBuilder &);
   1022   flatbuffers::Offset<LoadNanoappRequest> Finish() {
   1023     const auto end = fbb_.EndTable(start_, 5);
   1024     auto o = flatbuffers::Offset<LoadNanoappRequest>(end);
   1025     fbb_.Required(o, LoadNanoappRequest::VT_APP_BINARY);
   1026     return o;
   1027   }
   1028 };
   1029 
   1030 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(
   1031     flatbuffers::FlatBufferBuilder &_fbb,
   1032     uint32_t transaction_id = 0,
   1033     uint64_t app_id = 0,
   1034     uint32_t app_version = 0,
   1035     uint32_t target_api_version = 0,
   1036     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> app_binary = 0) {
   1037   LoadNanoappRequestBuilder builder_(_fbb);
   1038   builder_.add_app_id(app_id);
   1039   builder_.add_app_binary(app_binary);
   1040   builder_.add_target_api_version(target_api_version);
   1041   builder_.add_app_version(app_version);
   1042   builder_.add_transaction_id(transaction_id);
   1043   return builder_.Finish();
   1044 }
   1045 
   1046 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequestDirect(
   1047     flatbuffers::FlatBufferBuilder &_fbb,
   1048     uint32_t transaction_id = 0,
   1049     uint64_t app_id = 0,
   1050     uint32_t app_version = 0,
   1051     uint32_t target_api_version = 0,
   1052     const std::vector<uint8_t> *app_binary = nullptr) {
   1053   return chre::fbs::CreateLoadNanoappRequest(
   1054       _fbb,
   1055       transaction_id,
   1056       app_id,
   1057       app_version,
   1058       target_api_version,
   1059       app_binary ? _fbb.CreateVector<uint8_t>(*app_binary) : 0);
   1060 }
   1061 
   1062 flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1063 
   1064 struct LoadNanoappResponseT : public flatbuffers::NativeTable {
   1065   typedef LoadNanoappResponse TableType;
   1066   uint32_t transaction_id;
   1067   bool success;
   1068   LoadNanoappResponseT()
   1069       : transaction_id(0),
   1070         success(false) {
   1071   }
   1072 };
   1073 
   1074 struct LoadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1075   typedef LoadNanoappResponseT NativeTableType;
   1076   enum {
   1077     VT_TRANSACTION_ID = 4,
   1078     VT_SUCCESS = 6
   1079   };
   1080   uint32_t transaction_id() const {
   1081     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
   1082   }
   1083   bool mutate_transaction_id(uint32_t _transaction_id) {
   1084     return SetField(VT_TRANSACTION_ID, _transaction_id);
   1085   }
   1086   bool success() const {
   1087     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
   1088   }
   1089   bool mutate_success(bool _success) {
   1090     return SetField(VT_SUCCESS, static_cast<uint8_t>(_success));
   1091   }
   1092   bool Verify(flatbuffers::Verifier &verifier) const {
   1093     return VerifyTableStart(verifier) &&
   1094            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
   1095            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
   1096            verifier.EndTable();
   1097   }
   1098   LoadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1099   void UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1100   static flatbuffers::Offset<LoadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1101 };
   1102 
   1103 struct LoadNanoappResponseBuilder {
   1104   flatbuffers::FlatBufferBuilder &fbb_;
   1105   flatbuffers::uoffset_t start_;
   1106   void add_transaction_id(uint32_t transaction_id) {
   1107     fbb_.AddElement<uint32_t>(LoadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
   1108   }
   1109   void add_success(bool success) {
   1110     fbb_.AddElement<uint8_t>(LoadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
   1111   }
   1112   LoadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1113         : fbb_(_fbb) {
   1114     start_ = fbb_.StartTable();
   1115   }
   1116   LoadNanoappResponseBuilder &operator=(const LoadNanoappResponseBuilder &);
   1117   flatbuffers::Offset<LoadNanoappResponse> Finish() {
   1118     const auto end = fbb_.EndTable(start_, 2);
   1119     auto o = flatbuffers::Offset<LoadNanoappResponse>(end);
   1120     return o;
   1121   }
   1122 };
   1123 
   1124 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(
   1125     flatbuffers::FlatBufferBuilder &_fbb,
   1126     uint32_t transaction_id = 0,
   1127     bool success = false) {
   1128   LoadNanoappResponseBuilder builder_(_fbb);
   1129   builder_.add_transaction_id(transaction_id);
   1130   builder_.add_success(success);
   1131   return builder_.Finish();
   1132 }
   1133 
   1134 flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1135 
   1136 struct UnloadNanoappRequestT : public flatbuffers::NativeTable {
   1137   typedef UnloadNanoappRequest TableType;
   1138   uint32_t transaction_id;
   1139   uint64_t app_id;
   1140   bool allow_system_nanoapp_unload;
   1141   UnloadNanoappRequestT()
   1142       : transaction_id(0),
   1143         app_id(0),
   1144         allow_system_nanoapp_unload(false) {
   1145   }
   1146 };
   1147 
   1148 struct UnloadNanoappRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1149   typedef UnloadNanoappRequestT NativeTableType;
   1150   enum {
   1151     VT_TRANSACTION_ID = 4,
   1152     VT_APP_ID = 6,
   1153     VT_ALLOW_SYSTEM_NANOAPP_UNLOAD = 8
   1154   };
   1155   uint32_t transaction_id() const {
   1156     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
   1157   }
   1158   bool mutate_transaction_id(uint32_t _transaction_id) {
   1159     return SetField(VT_TRANSACTION_ID, _transaction_id);
   1160   }
   1161   uint64_t app_id() const {
   1162     return GetField<uint64_t>(VT_APP_ID, 0);
   1163   }
   1164   bool mutate_app_id(uint64_t _app_id) {
   1165     return SetField(VT_APP_ID, _app_id);
   1166   }
   1167   /// Set to true to allow this request to unload nanoapps identified as "system
   1168   /// nanoapps", i.e. ones with is_system set to true in NanoappListResponse.
   1169   bool allow_system_nanoapp_unload() const {
   1170     return GetField<uint8_t>(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, 0) != 0;
   1171   }
   1172   bool mutate_allow_system_nanoapp_unload(bool _allow_system_nanoapp_unload) {
   1173     return SetField(VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(_allow_system_nanoapp_unload));
   1174   }
   1175   bool Verify(flatbuffers::Verifier &verifier) const {
   1176     return VerifyTableStart(verifier) &&
   1177            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
   1178            VerifyField<uint64_t>(verifier, VT_APP_ID) &&
   1179            VerifyField<uint8_t>(verifier, VT_ALLOW_SYSTEM_NANOAPP_UNLOAD) &&
   1180            verifier.EndTable();
   1181   }
   1182   UnloadNanoappRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1183   void UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1184   static flatbuffers::Offset<UnloadNanoappRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1185 };
   1186 
   1187 struct UnloadNanoappRequestBuilder {
   1188   flatbuffers::FlatBufferBuilder &fbb_;
   1189   flatbuffers::uoffset_t start_;
   1190   void add_transaction_id(uint32_t transaction_id) {
   1191     fbb_.AddElement<uint32_t>(UnloadNanoappRequest::VT_TRANSACTION_ID, transaction_id, 0);
   1192   }
   1193   void add_app_id(uint64_t app_id) {
   1194     fbb_.AddElement<uint64_t>(UnloadNanoappRequest::VT_APP_ID, app_id, 0);
   1195   }
   1196   void add_allow_system_nanoapp_unload(bool allow_system_nanoapp_unload) {
   1197     fbb_.AddElement<uint8_t>(UnloadNanoappRequest::VT_ALLOW_SYSTEM_NANOAPP_UNLOAD, static_cast<uint8_t>(allow_system_nanoapp_unload), 0);
   1198   }
   1199   UnloadNanoappRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1200         : fbb_(_fbb) {
   1201     start_ = fbb_.StartTable();
   1202   }
   1203   UnloadNanoappRequestBuilder &operator=(const UnloadNanoappRequestBuilder &);
   1204   flatbuffers::Offset<UnloadNanoappRequest> Finish() {
   1205     const auto end = fbb_.EndTable(start_, 3);
   1206     auto o = flatbuffers::Offset<UnloadNanoappRequest>(end);
   1207     return o;
   1208   }
   1209 };
   1210 
   1211 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(
   1212     flatbuffers::FlatBufferBuilder &_fbb,
   1213     uint32_t transaction_id = 0,
   1214     uint64_t app_id = 0,
   1215     bool allow_system_nanoapp_unload = false) {
   1216   UnloadNanoappRequestBuilder builder_(_fbb);
   1217   builder_.add_app_id(app_id);
   1218   builder_.add_transaction_id(transaction_id);
   1219   builder_.add_allow_system_nanoapp_unload(allow_system_nanoapp_unload);
   1220   return builder_.Finish();
   1221 }
   1222 
   1223 flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1224 
   1225 struct UnloadNanoappResponseT : public flatbuffers::NativeTable {
   1226   typedef UnloadNanoappResponse TableType;
   1227   uint32_t transaction_id;
   1228   bool success;
   1229   UnloadNanoappResponseT()
   1230       : transaction_id(0),
   1231         success(false) {
   1232   }
   1233 };
   1234 
   1235 struct UnloadNanoappResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1236   typedef UnloadNanoappResponseT NativeTableType;
   1237   enum {
   1238     VT_TRANSACTION_ID = 4,
   1239     VT_SUCCESS = 6
   1240   };
   1241   uint32_t transaction_id() const {
   1242     return GetField<uint32_t>(VT_TRANSACTION_ID, 0);
   1243   }
   1244   bool mutate_transaction_id(uint32_t _transaction_id) {
   1245     return SetField(VT_TRANSACTION_ID, _transaction_id);
   1246   }
   1247   bool success() const {
   1248     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
   1249   }
   1250   bool mutate_success(bool _success) {
   1251     return SetField(VT_SUCCESS, static_cast<uint8_t>(_success));
   1252   }
   1253   bool Verify(flatbuffers::Verifier &verifier) const {
   1254     return VerifyTableStart(verifier) &&
   1255            VerifyField<uint32_t>(verifier, VT_TRANSACTION_ID) &&
   1256            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
   1257            verifier.EndTable();
   1258   }
   1259   UnloadNanoappResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1260   void UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1261   static flatbuffers::Offset<UnloadNanoappResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1262 };
   1263 
   1264 struct UnloadNanoappResponseBuilder {
   1265   flatbuffers::FlatBufferBuilder &fbb_;
   1266   flatbuffers::uoffset_t start_;
   1267   void add_transaction_id(uint32_t transaction_id) {
   1268     fbb_.AddElement<uint32_t>(UnloadNanoappResponse::VT_TRANSACTION_ID, transaction_id, 0);
   1269   }
   1270   void add_success(bool success) {
   1271     fbb_.AddElement<uint8_t>(UnloadNanoappResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
   1272   }
   1273   UnloadNanoappResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1274         : fbb_(_fbb) {
   1275     start_ = fbb_.StartTable();
   1276   }
   1277   UnloadNanoappResponseBuilder &operator=(const UnloadNanoappResponseBuilder &);
   1278   flatbuffers::Offset<UnloadNanoappResponse> Finish() {
   1279     const auto end = fbb_.EndTable(start_, 2);
   1280     auto o = flatbuffers::Offset<UnloadNanoappResponse>(end);
   1281     return o;
   1282   }
   1283 };
   1284 
   1285 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(
   1286     flatbuffers::FlatBufferBuilder &_fbb,
   1287     uint32_t transaction_id = 0,
   1288     bool success = false) {
   1289   UnloadNanoappResponseBuilder builder_(_fbb);
   1290   builder_.add_transaction_id(transaction_id);
   1291   builder_.add_success(success);
   1292   return builder_.Finish();
   1293 }
   1294 
   1295 flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1296 
   1297 struct LogMessageT : public flatbuffers::NativeTable {
   1298   typedef LogMessage TableType;
   1299   std::vector<int8_t> buffer;
   1300   LogMessageT() {
   1301   }
   1302 };
   1303 
   1304 /// Represents log messages from CHRE.
   1305 struct LogMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1306   typedef LogMessageT NativeTableType;
   1307   enum {
   1308     VT_BUFFER = 4
   1309   };
   1310   /// A buffer containing formatted log data. A flat array is used here to avoid
   1311   /// overhead in serializing and deserializing. The format is as follows:
   1312   ///
   1313   /// uint8_t                 - log level (1 = error, 2 = warning,
   1314   ///                                      3 = info, 4 = debug)
   1315   /// uint64_t, little-endian - timestamp in nanoseconds
   1316   /// char[]                  - message to log
   1317   /// char, \0                - null-terminator
   1318   ///
   1319   /// This pattern repeats until the end of the buffer for multiple log
   1320   /// messages. The last byte will always be a null-terminator. There are no
   1321   /// padding bytes between these fields. Treat this like a packed struct and be
   1322   /// cautious with unaligned access when reading/writing this buffer.
   1323   const flatbuffers::Vector<int8_t> *buffer() const {
   1324     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_BUFFER);
   1325   }
   1326   flatbuffers::Vector<int8_t> *mutable_buffer() {
   1327     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_BUFFER);
   1328   }
   1329   bool Verify(flatbuffers::Verifier &verifier) const {
   1330     return VerifyTableStart(verifier) &&
   1331            VerifyField<flatbuffers::uoffset_t>(verifier, VT_BUFFER) &&
   1332            verifier.Verify(buffer()) &&
   1333            verifier.EndTable();
   1334   }
   1335   LogMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1336   void UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1337   static flatbuffers::Offset<LogMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1338 };
   1339 
   1340 struct LogMessageBuilder {
   1341   flatbuffers::FlatBufferBuilder &fbb_;
   1342   flatbuffers::uoffset_t start_;
   1343   void add_buffer(flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer) {
   1344     fbb_.AddOffset(LogMessage::VT_BUFFER, buffer);
   1345   }
   1346   LogMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1347         : fbb_(_fbb) {
   1348     start_ = fbb_.StartTable();
   1349   }
   1350   LogMessageBuilder &operator=(const LogMessageBuilder &);
   1351   flatbuffers::Offset<LogMessage> Finish() {
   1352     const auto end = fbb_.EndTable(start_, 1);
   1353     auto o = flatbuffers::Offset<LogMessage>(end);
   1354     return o;
   1355   }
   1356 };
   1357 
   1358 inline flatbuffers::Offset<LogMessage> CreateLogMessage(
   1359     flatbuffers::FlatBufferBuilder &_fbb,
   1360     flatbuffers::Offset<flatbuffers::Vector<int8_t>> buffer = 0) {
   1361   LogMessageBuilder builder_(_fbb);
   1362   builder_.add_buffer(buffer);
   1363   return builder_.Finish();
   1364 }
   1365 
   1366 inline flatbuffers::Offset<LogMessage> CreateLogMessageDirect(
   1367     flatbuffers::FlatBufferBuilder &_fbb,
   1368     const std::vector<int8_t> *buffer = nullptr) {
   1369   return chre::fbs::CreateLogMessage(
   1370       _fbb,
   1371       buffer ? _fbb.CreateVector<int8_t>(*buffer) : 0);
   1372 }
   1373 
   1374 flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1375 
   1376 struct TimeSyncMessageT : public flatbuffers::NativeTable {
   1377   typedef TimeSyncMessage TableType;
   1378   int64_t offset;
   1379   TimeSyncMessageT()
   1380       : offset(0) {
   1381   }
   1382 };
   1383 
   1384 /// Represents a message sent to CHRE to indicate AP timestamp for time sync
   1385 struct TimeSyncMessage FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1386   typedef TimeSyncMessageT NativeTableType;
   1387   enum {
   1388     VT_OFFSET = 4
   1389   };
   1390   /// Offset between AP and CHRE timestamp
   1391   int64_t offset() const {
   1392     return GetField<int64_t>(VT_OFFSET, 0);
   1393   }
   1394   bool mutate_offset(int64_t _offset) {
   1395     return SetField(VT_OFFSET, _offset);
   1396   }
   1397   bool Verify(flatbuffers::Verifier &verifier) const {
   1398     return VerifyTableStart(verifier) &&
   1399            VerifyField<int64_t>(verifier, VT_OFFSET) &&
   1400            verifier.EndTable();
   1401   }
   1402   TimeSyncMessageT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1403   void UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1404   static flatbuffers::Offset<TimeSyncMessage> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1405 };
   1406 
   1407 struct TimeSyncMessageBuilder {
   1408   flatbuffers::FlatBufferBuilder &fbb_;
   1409   flatbuffers::uoffset_t start_;
   1410   void add_offset(int64_t offset) {
   1411     fbb_.AddElement<int64_t>(TimeSyncMessage::VT_OFFSET, offset, 0);
   1412   }
   1413   TimeSyncMessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1414         : fbb_(_fbb) {
   1415     start_ = fbb_.StartTable();
   1416   }
   1417   TimeSyncMessageBuilder &operator=(const TimeSyncMessageBuilder &);
   1418   flatbuffers::Offset<TimeSyncMessage> Finish() {
   1419     const auto end = fbb_.EndTable(start_, 1);
   1420     auto o = flatbuffers::Offset<TimeSyncMessage>(end);
   1421     return o;
   1422   }
   1423 };
   1424 
   1425 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(
   1426     flatbuffers::FlatBufferBuilder &_fbb,
   1427     int64_t offset = 0) {
   1428   TimeSyncMessageBuilder builder_(_fbb);
   1429   builder_.add_offset(offset);
   1430   return builder_.Finish();
   1431 }
   1432 
   1433 flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1434 
   1435 struct DebugDumpRequestT : public flatbuffers::NativeTable {
   1436   typedef DebugDumpRequest TableType;
   1437   DebugDumpRequestT() {
   1438   }
   1439 };
   1440 
   1441 /// A request to gather and return debugging information. Only one debug dump
   1442 /// session can be active at a time. Upon accepting a request, zero or more
   1443 /// DebugDumpData messages are generated, followed by a DebugDumpResponse
   1444 /// indicating the completion of the operation.
   1445 struct DebugDumpRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1446   typedef DebugDumpRequestT NativeTableType;
   1447   bool Verify(flatbuffers::Verifier &verifier) const {
   1448     return VerifyTableStart(verifier) &&
   1449            verifier.EndTable();
   1450   }
   1451   DebugDumpRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1452   void UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1453   static flatbuffers::Offset<DebugDumpRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1454 };
   1455 
   1456 struct DebugDumpRequestBuilder {
   1457   flatbuffers::FlatBufferBuilder &fbb_;
   1458   flatbuffers::uoffset_t start_;
   1459   DebugDumpRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1460         : fbb_(_fbb) {
   1461     start_ = fbb_.StartTable();
   1462   }
   1463   DebugDumpRequestBuilder &operator=(const DebugDumpRequestBuilder &);
   1464   flatbuffers::Offset<DebugDumpRequest> Finish() {
   1465     const auto end = fbb_.EndTable(start_, 0);
   1466     auto o = flatbuffers::Offset<DebugDumpRequest>(end);
   1467     return o;
   1468   }
   1469 };
   1470 
   1471 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(
   1472     flatbuffers::FlatBufferBuilder &_fbb) {
   1473   DebugDumpRequestBuilder builder_(_fbb);
   1474   return builder_.Finish();
   1475 }
   1476 
   1477 flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1478 
   1479 struct DebugDumpDataT : public flatbuffers::NativeTable {
   1480   typedef DebugDumpData TableType;
   1481   std::vector<int8_t> debug_str;
   1482   DebugDumpDataT() {
   1483   }
   1484 };
   1485 
   1486 struct DebugDumpData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1487   typedef DebugDumpDataT NativeTableType;
   1488   enum {
   1489     VT_DEBUG_STR = 4
   1490   };
   1491   /// Null-terminated ASCII string containing debugging information
   1492   const flatbuffers::Vector<int8_t> *debug_str() const {
   1493     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
   1494   }
   1495   flatbuffers::Vector<int8_t> *mutable_debug_str() {
   1496     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_DEBUG_STR);
   1497   }
   1498   bool Verify(flatbuffers::Verifier &verifier) const {
   1499     return VerifyTableStart(verifier) &&
   1500            VerifyField<flatbuffers::uoffset_t>(verifier, VT_DEBUG_STR) &&
   1501            verifier.Verify(debug_str()) &&
   1502            verifier.EndTable();
   1503   }
   1504   DebugDumpDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1505   void UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1506   static flatbuffers::Offset<DebugDumpData> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1507 };
   1508 
   1509 struct DebugDumpDataBuilder {
   1510   flatbuffers::FlatBufferBuilder &fbb_;
   1511   flatbuffers::uoffset_t start_;
   1512   void add_debug_str(flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str) {
   1513     fbb_.AddOffset(DebugDumpData::VT_DEBUG_STR, debug_str);
   1514   }
   1515   DebugDumpDataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1516         : fbb_(_fbb) {
   1517     start_ = fbb_.StartTable();
   1518   }
   1519   DebugDumpDataBuilder &operator=(const DebugDumpDataBuilder &);
   1520   flatbuffers::Offset<DebugDumpData> Finish() {
   1521     const auto end = fbb_.EndTable(start_, 1);
   1522     auto o = flatbuffers::Offset<DebugDumpData>(end);
   1523     return o;
   1524   }
   1525 };
   1526 
   1527 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(
   1528     flatbuffers::FlatBufferBuilder &_fbb,
   1529     flatbuffers::Offset<flatbuffers::Vector<int8_t>> debug_str = 0) {
   1530   DebugDumpDataBuilder builder_(_fbb);
   1531   builder_.add_debug_str(debug_str);
   1532   return builder_.Finish();
   1533 }
   1534 
   1535 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpDataDirect(
   1536     flatbuffers::FlatBufferBuilder &_fbb,
   1537     const std::vector<int8_t> *debug_str = nullptr) {
   1538   return chre::fbs::CreateDebugDumpData(
   1539       _fbb,
   1540       debug_str ? _fbb.CreateVector<int8_t>(*debug_str) : 0);
   1541 }
   1542 
   1543 flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1544 
   1545 struct DebugDumpResponseT : public flatbuffers::NativeTable {
   1546   typedef DebugDumpResponse TableType;
   1547   bool success;
   1548   uint32_t data_count;
   1549   DebugDumpResponseT()
   1550       : success(false),
   1551         data_count(0) {
   1552   }
   1553 };
   1554 
   1555 struct DebugDumpResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1556   typedef DebugDumpResponseT NativeTableType;
   1557   enum {
   1558     VT_SUCCESS = 4,
   1559     VT_DATA_COUNT = 6
   1560   };
   1561   /// true if the request was accepted and a dump was performed, false if it was
   1562   /// rejected or failed to complete for some reason
   1563   bool success() const {
   1564     return GetField<uint8_t>(VT_SUCCESS, 0) != 0;
   1565   }
   1566   bool mutate_success(bool _success) {
   1567     return SetField(VT_SUCCESS, static_cast<uint8_t>(_success));
   1568   }
   1569   /// The number of DebugDumpData messages sent in this session
   1570   uint32_t data_count() const {
   1571     return GetField<uint32_t>(VT_DATA_COUNT, 0);
   1572   }
   1573   bool mutate_data_count(uint32_t _data_count) {
   1574     return SetField(VT_DATA_COUNT, _data_count);
   1575   }
   1576   bool Verify(flatbuffers::Verifier &verifier) const {
   1577     return VerifyTableStart(verifier) &&
   1578            VerifyField<uint8_t>(verifier, VT_SUCCESS) &&
   1579            VerifyField<uint32_t>(verifier, VT_DATA_COUNT) &&
   1580            verifier.EndTable();
   1581   }
   1582   DebugDumpResponseT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1583   void UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1584   static flatbuffers::Offset<DebugDumpResponse> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1585 };
   1586 
   1587 struct DebugDumpResponseBuilder {
   1588   flatbuffers::FlatBufferBuilder &fbb_;
   1589   flatbuffers::uoffset_t start_;
   1590   void add_success(bool success) {
   1591     fbb_.AddElement<uint8_t>(DebugDumpResponse::VT_SUCCESS, static_cast<uint8_t>(success), 0);
   1592   }
   1593   void add_data_count(uint32_t data_count) {
   1594     fbb_.AddElement<uint32_t>(DebugDumpResponse::VT_DATA_COUNT, data_count, 0);
   1595   }
   1596   DebugDumpResponseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1597         : fbb_(_fbb) {
   1598     start_ = fbb_.StartTable();
   1599   }
   1600   DebugDumpResponseBuilder &operator=(const DebugDumpResponseBuilder &);
   1601   flatbuffers::Offset<DebugDumpResponse> Finish() {
   1602     const auto end = fbb_.EndTable(start_, 2);
   1603     auto o = flatbuffers::Offset<DebugDumpResponse>(end);
   1604     return o;
   1605   }
   1606 };
   1607 
   1608 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(
   1609     flatbuffers::FlatBufferBuilder &_fbb,
   1610     bool success = false,
   1611     uint32_t data_count = 0) {
   1612   DebugDumpResponseBuilder builder_(_fbb);
   1613   builder_.add_data_count(data_count);
   1614   builder_.add_success(success);
   1615   return builder_.Finish();
   1616 }
   1617 
   1618 flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1619 
   1620 struct TimeSyncRequestT : public flatbuffers::NativeTable {
   1621   typedef TimeSyncRequest TableType;
   1622   TimeSyncRequestT() {
   1623   }
   1624 };
   1625 
   1626 /// A request from CHRE for host to initiate a time sync message
   1627 struct TimeSyncRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1628   typedef TimeSyncRequestT NativeTableType;
   1629   bool Verify(flatbuffers::Verifier &verifier) const {
   1630     return VerifyTableStart(verifier) &&
   1631            verifier.EndTable();
   1632   }
   1633   TimeSyncRequestT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1634   void UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1635   static flatbuffers::Offset<TimeSyncRequest> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1636 };
   1637 
   1638 struct TimeSyncRequestBuilder {
   1639   flatbuffers::FlatBufferBuilder &fbb_;
   1640   flatbuffers::uoffset_t start_;
   1641   TimeSyncRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1642         : fbb_(_fbb) {
   1643     start_ = fbb_.StartTable();
   1644   }
   1645   TimeSyncRequestBuilder &operator=(const TimeSyncRequestBuilder &);
   1646   flatbuffers::Offset<TimeSyncRequest> Finish() {
   1647     const auto end = fbb_.EndTable(start_, 0);
   1648     auto o = flatbuffers::Offset<TimeSyncRequest>(end);
   1649     return o;
   1650   }
   1651 };
   1652 
   1653 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(
   1654     flatbuffers::FlatBufferBuilder &_fbb) {
   1655   TimeSyncRequestBuilder builder_(_fbb);
   1656   return builder_.Finish();
   1657 }
   1658 
   1659 flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1660 
   1661 struct MessageContainerT : public flatbuffers::NativeTable {
   1662   typedef MessageContainer TableType;
   1663   ChreMessageUnion message;
   1664   std::unique_ptr<HostAddress> host_addr;
   1665   MessageContainerT() {
   1666   }
   1667 };
   1668 
   1669 /// The top-level container that encapsulates all possible messages. Note that
   1670 /// per FlatBuffers requirements, we can't use a union as the top-level
   1671 /// structure (root type), so we must wrap it in a table.
   1672 struct MessageContainer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   1673   typedef MessageContainerT NativeTableType;
   1674   enum {
   1675     VT_MESSAGE_TYPE = 4,
   1676     VT_MESSAGE = 6,
   1677     VT_HOST_ADDR = 8
   1678   };
   1679   ChreMessage message_type() const {
   1680     return static_cast<ChreMessage>(GetField<uint8_t>(VT_MESSAGE_TYPE, 0));
   1681   }
   1682   bool mutate_message_type(ChreMessage _message_type) {
   1683     return SetField(VT_MESSAGE_TYPE, static_cast<uint8_t>(_message_type));
   1684   }
   1685   const void *message() const {
   1686     return GetPointer<const void *>(VT_MESSAGE);
   1687   }
   1688   void *mutable_message() {
   1689     return GetPointer<void *>(VT_MESSAGE);
   1690   }
   1691   /// The originating or destination client ID on the host side, used to direct
   1692   /// responses only to the client that sent the request. Although initially
   1693   /// populated by the requesting client, this is enforced to be the correct
   1694   /// value by the entity guarding access to CHRE.
   1695   /// This is wrapped in a struct to ensure that it is always included when
   1696   /// encoding the message, so it can be mutated by the host daemon.
   1697   const HostAddress *host_addr() const {
   1698     return GetStruct<const HostAddress *>(VT_HOST_ADDR);
   1699   }
   1700   HostAddress *mutable_host_addr() {
   1701     return GetStruct<HostAddress *>(VT_HOST_ADDR);
   1702   }
   1703   bool Verify(flatbuffers::Verifier &verifier) const {
   1704     return VerifyTableStart(verifier) &&
   1705            VerifyField<uint8_t>(verifier, VT_MESSAGE_TYPE) &&
   1706            VerifyFieldRequired<flatbuffers::uoffset_t>(verifier, VT_MESSAGE) &&
   1707            VerifyChreMessage(verifier, message(), message_type()) &&
   1708            VerifyFieldRequired<HostAddress>(verifier, VT_HOST_ADDR) &&
   1709            verifier.EndTable();
   1710   }
   1711   MessageContainerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1712   void UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
   1713   static flatbuffers::Offset<MessageContainer> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1714 };
   1715 
   1716 struct MessageContainerBuilder {
   1717   flatbuffers::FlatBufferBuilder &fbb_;
   1718   flatbuffers::uoffset_t start_;
   1719   void add_message_type(ChreMessage message_type) {
   1720     fbb_.AddElement<uint8_t>(MessageContainer::VT_MESSAGE_TYPE, static_cast<uint8_t>(message_type), 0);
   1721   }
   1722   void add_message(flatbuffers::Offset<void> message) {
   1723     fbb_.AddOffset(MessageContainer::VT_MESSAGE, message);
   1724   }
   1725   void add_host_addr(const HostAddress *host_addr) {
   1726     fbb_.AddStruct(MessageContainer::VT_HOST_ADDR, host_addr);
   1727   }
   1728   MessageContainerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
   1729         : fbb_(_fbb) {
   1730     start_ = fbb_.StartTable();
   1731   }
   1732   MessageContainerBuilder &operator=(const MessageContainerBuilder &);
   1733   flatbuffers::Offset<MessageContainer> Finish() {
   1734     const auto end = fbb_.EndTable(start_, 3);
   1735     auto o = flatbuffers::Offset<MessageContainer>(end);
   1736     fbb_.Required(o, MessageContainer::VT_MESSAGE);
   1737     fbb_.Required(o, MessageContainer::VT_HOST_ADDR);
   1738     return o;
   1739   }
   1740 };
   1741 
   1742 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(
   1743     flatbuffers::FlatBufferBuilder &_fbb,
   1744     ChreMessage message_type = ChreMessage::NONE,
   1745     flatbuffers::Offset<void> message = 0,
   1746     const HostAddress *host_addr = 0) {
   1747   MessageContainerBuilder builder_(_fbb);
   1748   builder_.add_host_addr(host_addr);
   1749   builder_.add_message(message);
   1750   builder_.add_message_type(message_type);
   1751   return builder_.Finish();
   1752 }
   1753 
   1754 flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
   1755 
   1756 inline NanoappMessageT *NanoappMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1757   auto _o = new NanoappMessageT();
   1758   UnPackTo(_o, _resolver);
   1759   return _o;
   1760 }
   1761 
   1762 inline void NanoappMessage::UnPackTo(NanoappMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1763   (void)_o;
   1764   (void)_resolver;
   1765   { auto _e = app_id(); _o->app_id = _e; };
   1766   { auto _e = message_type(); _o->message_type = _e; };
   1767   { auto _e = host_endpoint(); _o->host_endpoint = _e; };
   1768   { auto _e = message(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->message.push_back(_e->Get(_i)); } };
   1769 }
   1770 
   1771 inline flatbuffers::Offset<NanoappMessage> NanoappMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1772   return CreateNanoappMessage(_fbb, _o, _rehasher);
   1773 }
   1774 
   1775 inline flatbuffers::Offset<NanoappMessage> CreateNanoappMessage(flatbuffers::FlatBufferBuilder &_fbb, const NanoappMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1776   (void)_rehasher;
   1777   (void)_o;
   1778   auto _app_id = _o->app_id;
   1779   auto _message_type = _o->message_type;
   1780   auto _host_endpoint = _o->host_endpoint;
   1781   auto _message = _fbb.CreateVector(_o->message);
   1782   return chre::fbs::CreateNanoappMessage(
   1783       _fbb,
   1784       _app_id,
   1785       _message_type,
   1786       _host_endpoint,
   1787       _message);
   1788 }
   1789 
   1790 inline HubInfoRequestT *HubInfoRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1791   auto _o = new HubInfoRequestT();
   1792   UnPackTo(_o, _resolver);
   1793   return _o;
   1794 }
   1795 
   1796 inline void HubInfoRequest::UnPackTo(HubInfoRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1797   (void)_o;
   1798   (void)_resolver;
   1799 }
   1800 
   1801 inline flatbuffers::Offset<HubInfoRequest> HubInfoRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1802   return CreateHubInfoRequest(_fbb, _o, _rehasher);
   1803 }
   1804 
   1805 inline flatbuffers::Offset<HubInfoRequest> CreateHubInfoRequest(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1806   (void)_rehasher;
   1807   (void)_o;
   1808   return chre::fbs::CreateHubInfoRequest(
   1809       _fbb);
   1810 }
   1811 
   1812 inline HubInfoResponseT *HubInfoResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1813   auto _o = new HubInfoResponseT();
   1814   UnPackTo(_o, _resolver);
   1815   return _o;
   1816 }
   1817 
   1818 inline void HubInfoResponse::UnPackTo(HubInfoResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1819   (void)_o;
   1820   (void)_resolver;
   1821   { auto _e = name(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->name.push_back(_e->Get(_i)); } };
   1822   { auto _e = vendor(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vendor.push_back(_e->Get(_i)); } };
   1823   { auto _e = toolchain(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->toolchain.push_back(_e->Get(_i)); } };
   1824   { auto _e = platform_version(); _o->platform_version = _e; };
   1825   { auto _e = toolchain_version(); _o->toolchain_version = _e; };
   1826   { auto _e = peak_mips(); _o->peak_mips = _e; };
   1827   { auto _e = stopped_power(); _o->stopped_power = _e; };
   1828   { auto _e = sleep_power(); _o->sleep_power = _e; };
   1829   { auto _e = peak_power(); _o->peak_power = _e; };
   1830   { auto _e = max_msg_len(); _o->max_msg_len = _e; };
   1831   { auto _e = platform_id(); _o->platform_id = _e; };
   1832   { auto _e = chre_platform_version(); _o->chre_platform_version = _e; };
   1833 }
   1834 
   1835 inline flatbuffers::Offset<HubInfoResponse> HubInfoResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1836   return CreateHubInfoResponse(_fbb, _o, _rehasher);
   1837 }
   1838 
   1839 inline flatbuffers::Offset<HubInfoResponse> CreateHubInfoResponse(flatbuffers::FlatBufferBuilder &_fbb, const HubInfoResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1840   (void)_rehasher;
   1841   (void)_o;
   1842   auto _name = _o->name.size() ? _fbb.CreateVector(_o->name) : 0;
   1843   auto _vendor = _o->vendor.size() ? _fbb.CreateVector(_o->vendor) : 0;
   1844   auto _toolchain = _o->toolchain.size() ? _fbb.CreateVector(_o->toolchain) : 0;
   1845   auto _platform_version = _o->platform_version;
   1846   auto _toolchain_version = _o->toolchain_version;
   1847   auto _peak_mips = _o->peak_mips;
   1848   auto _stopped_power = _o->stopped_power;
   1849   auto _sleep_power = _o->sleep_power;
   1850   auto _peak_power = _o->peak_power;
   1851   auto _max_msg_len = _o->max_msg_len;
   1852   auto _platform_id = _o->platform_id;
   1853   auto _chre_platform_version = _o->chre_platform_version;
   1854   return chre::fbs::CreateHubInfoResponse(
   1855       _fbb,
   1856       _name,
   1857       _vendor,
   1858       _toolchain,
   1859       _platform_version,
   1860       _toolchain_version,
   1861       _peak_mips,
   1862       _stopped_power,
   1863       _sleep_power,
   1864       _peak_power,
   1865       _max_msg_len,
   1866       _platform_id,
   1867       _chre_platform_version);
   1868 }
   1869 
   1870 inline NanoappListRequestT *NanoappListRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1871   auto _o = new NanoappListRequestT();
   1872   UnPackTo(_o, _resolver);
   1873   return _o;
   1874 }
   1875 
   1876 inline void NanoappListRequest::UnPackTo(NanoappListRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1877   (void)_o;
   1878   (void)_resolver;
   1879 }
   1880 
   1881 inline flatbuffers::Offset<NanoappListRequest> NanoappListRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1882   return CreateNanoappListRequest(_fbb, _o, _rehasher);
   1883 }
   1884 
   1885 inline flatbuffers::Offset<NanoappListRequest> CreateNanoappListRequest(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1886   (void)_rehasher;
   1887   (void)_o;
   1888   return chre::fbs::CreateNanoappListRequest(
   1889       _fbb);
   1890 }
   1891 
   1892 inline NanoappListEntryT *NanoappListEntry::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1893   auto _o = new NanoappListEntryT();
   1894   UnPackTo(_o, _resolver);
   1895   return _o;
   1896 }
   1897 
   1898 inline void NanoappListEntry::UnPackTo(NanoappListEntryT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1899   (void)_o;
   1900   (void)_resolver;
   1901   { auto _e = app_id(); _o->app_id = _e; };
   1902   { auto _e = version(); _o->version = _e; };
   1903   { auto _e = enabled(); _o->enabled = _e; };
   1904   { auto _e = is_system(); _o->is_system = _e; };
   1905 }
   1906 
   1907 inline flatbuffers::Offset<NanoappListEntry> NanoappListEntry::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1908   return CreateNanoappListEntry(_fbb, _o, _rehasher);
   1909 }
   1910 
   1911 inline flatbuffers::Offset<NanoappListEntry> CreateNanoappListEntry(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1912   (void)_rehasher;
   1913   (void)_o;
   1914   auto _app_id = _o->app_id;
   1915   auto _version = _o->version;
   1916   auto _enabled = _o->enabled;
   1917   auto _is_system = _o->is_system;
   1918   return chre::fbs::CreateNanoappListEntry(
   1919       _fbb,
   1920       _app_id,
   1921       _version,
   1922       _enabled,
   1923       _is_system);
   1924 }
   1925 
   1926 inline NanoappListResponseT *NanoappListResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1927   auto _o = new NanoappListResponseT();
   1928   UnPackTo(_o, _resolver);
   1929   return _o;
   1930 }
   1931 
   1932 inline void NanoappListResponse::UnPackTo(NanoappListResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1933   (void)_o;
   1934   (void)_resolver;
   1935   { auto _e = nanoapps(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->nanoapps.push_back(std::unique_ptr<NanoappListEntryT>(_e->Get(_i)->UnPack(_resolver))); } };
   1936 }
   1937 
   1938 inline flatbuffers::Offset<NanoappListResponse> NanoappListResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1939   return CreateNanoappListResponse(_fbb, _o, _rehasher);
   1940 }
   1941 
   1942 inline flatbuffers::Offset<NanoappListResponse> CreateNanoappListResponse(flatbuffers::FlatBufferBuilder &_fbb, const NanoappListResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1943   (void)_rehasher;
   1944   (void)_o;
   1945   auto _nanoapps = _fbb.CreateVector<flatbuffers::Offset<NanoappListEntry>>(_o->nanoapps.size(), [&](size_t i) { return CreateNanoappListEntry(_fbb, _o->nanoapps[i].get(), _rehasher); });
   1946   return chre::fbs::CreateNanoappListResponse(
   1947       _fbb,
   1948       _nanoapps);
   1949 }
   1950 
   1951 inline LoadNanoappRequestT *LoadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1952   auto _o = new LoadNanoappRequestT();
   1953   UnPackTo(_o, _resolver);
   1954   return _o;
   1955 }
   1956 
   1957 inline void LoadNanoappRequest::UnPackTo(LoadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1958   (void)_o;
   1959   (void)_resolver;
   1960   { auto _e = transaction_id(); _o->transaction_id = _e; };
   1961   { auto _e = app_id(); _o->app_id = _e; };
   1962   { auto _e = app_version(); _o->app_version = _e; };
   1963   { auto _e = target_api_version(); _o->target_api_version = _e; };
   1964   { auto _e = app_binary(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->app_binary.push_back(_e->Get(_i)); } };
   1965 }
   1966 
   1967 inline flatbuffers::Offset<LoadNanoappRequest> LoadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   1968   return CreateLoadNanoappRequest(_fbb, _o, _rehasher);
   1969 }
   1970 
   1971 inline flatbuffers::Offset<LoadNanoappRequest> CreateLoadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   1972   (void)_rehasher;
   1973   (void)_o;
   1974   auto _transaction_id = _o->transaction_id;
   1975   auto _app_id = _o->app_id;
   1976   auto _app_version = _o->app_version;
   1977   auto _target_api_version = _o->target_api_version;
   1978   auto _app_binary = _fbb.CreateVector(_o->app_binary);
   1979   return chre::fbs::CreateLoadNanoappRequest(
   1980       _fbb,
   1981       _transaction_id,
   1982       _app_id,
   1983       _app_version,
   1984       _target_api_version,
   1985       _app_binary);
   1986 }
   1987 
   1988 inline LoadNanoappResponseT *LoadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   1989   auto _o = new LoadNanoappResponseT();
   1990   UnPackTo(_o, _resolver);
   1991   return _o;
   1992 }
   1993 
   1994 inline void LoadNanoappResponse::UnPackTo(LoadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   1995   (void)_o;
   1996   (void)_resolver;
   1997   { auto _e = transaction_id(); _o->transaction_id = _e; };
   1998   { auto _e = success(); _o->success = _e; };
   1999 }
   2000 
   2001 inline flatbuffers::Offset<LoadNanoappResponse> LoadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2002   return CreateLoadNanoappResponse(_fbb, _o, _rehasher);
   2003 }
   2004 
   2005 inline flatbuffers::Offset<LoadNanoappResponse> CreateLoadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const LoadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2006   (void)_rehasher;
   2007   (void)_o;
   2008   auto _transaction_id = _o->transaction_id;
   2009   auto _success = _o->success;
   2010   return chre::fbs::CreateLoadNanoappResponse(
   2011       _fbb,
   2012       _transaction_id,
   2013       _success);
   2014 }
   2015 
   2016 inline UnloadNanoappRequestT *UnloadNanoappRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2017   auto _o = new UnloadNanoappRequestT();
   2018   UnPackTo(_o, _resolver);
   2019   return _o;
   2020 }
   2021 
   2022 inline void UnloadNanoappRequest::UnPackTo(UnloadNanoappRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2023   (void)_o;
   2024   (void)_resolver;
   2025   { auto _e = transaction_id(); _o->transaction_id = _e; };
   2026   { auto _e = app_id(); _o->app_id = _e; };
   2027   { auto _e = allow_system_nanoapp_unload(); _o->allow_system_nanoapp_unload = _e; };
   2028 }
   2029 
   2030 inline flatbuffers::Offset<UnloadNanoappRequest> UnloadNanoappRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2031   return CreateUnloadNanoappRequest(_fbb, _o, _rehasher);
   2032 }
   2033 
   2034 inline flatbuffers::Offset<UnloadNanoappRequest> CreateUnloadNanoappRequest(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2035   (void)_rehasher;
   2036   (void)_o;
   2037   auto _transaction_id = _o->transaction_id;
   2038   auto _app_id = _o->app_id;
   2039   auto _allow_system_nanoapp_unload = _o->allow_system_nanoapp_unload;
   2040   return chre::fbs::CreateUnloadNanoappRequest(
   2041       _fbb,
   2042       _transaction_id,
   2043       _app_id,
   2044       _allow_system_nanoapp_unload);
   2045 }
   2046 
   2047 inline UnloadNanoappResponseT *UnloadNanoappResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2048   auto _o = new UnloadNanoappResponseT();
   2049   UnPackTo(_o, _resolver);
   2050   return _o;
   2051 }
   2052 
   2053 inline void UnloadNanoappResponse::UnPackTo(UnloadNanoappResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2054   (void)_o;
   2055   (void)_resolver;
   2056   { auto _e = transaction_id(); _o->transaction_id = _e; };
   2057   { auto _e = success(); _o->success = _e; };
   2058 }
   2059 
   2060 inline flatbuffers::Offset<UnloadNanoappResponse> UnloadNanoappResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2061   return CreateUnloadNanoappResponse(_fbb, _o, _rehasher);
   2062 }
   2063 
   2064 inline flatbuffers::Offset<UnloadNanoappResponse> CreateUnloadNanoappResponse(flatbuffers::FlatBufferBuilder &_fbb, const UnloadNanoappResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2065   (void)_rehasher;
   2066   (void)_o;
   2067   auto _transaction_id = _o->transaction_id;
   2068   auto _success = _o->success;
   2069   return chre::fbs::CreateUnloadNanoappResponse(
   2070       _fbb,
   2071       _transaction_id,
   2072       _success);
   2073 }
   2074 
   2075 inline LogMessageT *LogMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2076   auto _o = new LogMessageT();
   2077   UnPackTo(_o, _resolver);
   2078   return _o;
   2079 }
   2080 
   2081 inline void LogMessage::UnPackTo(LogMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2082   (void)_o;
   2083   (void)_resolver;
   2084   { auto _e = buffer(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->buffer.push_back(_e->Get(_i)); } };
   2085 }
   2086 
   2087 inline flatbuffers::Offset<LogMessage> LogMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2088   return CreateLogMessage(_fbb, _o, _rehasher);
   2089 }
   2090 
   2091 inline flatbuffers::Offset<LogMessage> CreateLogMessage(flatbuffers::FlatBufferBuilder &_fbb, const LogMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2092   (void)_rehasher;
   2093   (void)_o;
   2094   auto _buffer = _o->buffer.size() ? _fbb.CreateVector(_o->buffer) : 0;
   2095   return chre::fbs::CreateLogMessage(
   2096       _fbb,
   2097       _buffer);
   2098 }
   2099 
   2100 inline TimeSyncMessageT *TimeSyncMessage::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2101   auto _o = new TimeSyncMessageT();
   2102   UnPackTo(_o, _resolver);
   2103   return _o;
   2104 }
   2105 
   2106 inline void TimeSyncMessage::UnPackTo(TimeSyncMessageT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2107   (void)_o;
   2108   (void)_resolver;
   2109   { auto _e = offset(); _o->offset = _e; };
   2110 }
   2111 
   2112 inline flatbuffers::Offset<TimeSyncMessage> TimeSyncMessage::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2113   return CreateTimeSyncMessage(_fbb, _o, _rehasher);
   2114 }
   2115 
   2116 inline flatbuffers::Offset<TimeSyncMessage> CreateTimeSyncMessage(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncMessageT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2117   (void)_rehasher;
   2118   (void)_o;
   2119   auto _offset = _o->offset;
   2120   return chre::fbs::CreateTimeSyncMessage(
   2121       _fbb,
   2122       _offset);
   2123 }
   2124 
   2125 inline DebugDumpRequestT *DebugDumpRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2126   auto _o = new DebugDumpRequestT();
   2127   UnPackTo(_o, _resolver);
   2128   return _o;
   2129 }
   2130 
   2131 inline void DebugDumpRequest::UnPackTo(DebugDumpRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2132   (void)_o;
   2133   (void)_resolver;
   2134 }
   2135 
   2136 inline flatbuffers::Offset<DebugDumpRequest> DebugDumpRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2137   return CreateDebugDumpRequest(_fbb, _o, _rehasher);
   2138 }
   2139 
   2140 inline flatbuffers::Offset<DebugDumpRequest> CreateDebugDumpRequest(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2141   (void)_rehasher;
   2142   (void)_o;
   2143   return chre::fbs::CreateDebugDumpRequest(
   2144       _fbb);
   2145 }
   2146 
   2147 inline DebugDumpDataT *DebugDumpData::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2148   auto _o = new DebugDumpDataT();
   2149   UnPackTo(_o, _resolver);
   2150   return _o;
   2151 }
   2152 
   2153 inline void DebugDumpData::UnPackTo(DebugDumpDataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2154   (void)_o;
   2155   (void)_resolver;
   2156   { auto _e = debug_str(); if (_e) for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->debug_str.push_back(_e->Get(_i)); } };
   2157 }
   2158 
   2159 inline flatbuffers::Offset<DebugDumpData> DebugDumpData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2160   return CreateDebugDumpData(_fbb, _o, _rehasher);
   2161 }
   2162 
   2163 inline flatbuffers::Offset<DebugDumpData> CreateDebugDumpData(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2164   (void)_rehasher;
   2165   (void)_o;
   2166   auto _debug_str = _o->debug_str.size() ? _fbb.CreateVector(_o->debug_str) : 0;
   2167   return chre::fbs::CreateDebugDumpData(
   2168       _fbb,
   2169       _debug_str);
   2170 }
   2171 
   2172 inline DebugDumpResponseT *DebugDumpResponse::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2173   auto _o = new DebugDumpResponseT();
   2174   UnPackTo(_o, _resolver);
   2175   return _o;
   2176 }
   2177 
   2178 inline void DebugDumpResponse::UnPackTo(DebugDumpResponseT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2179   (void)_o;
   2180   (void)_resolver;
   2181   { auto _e = success(); _o->success = _e; };
   2182   { auto _e = data_count(); _o->data_count = _e; };
   2183 }
   2184 
   2185 inline flatbuffers::Offset<DebugDumpResponse> DebugDumpResponse::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2186   return CreateDebugDumpResponse(_fbb, _o, _rehasher);
   2187 }
   2188 
   2189 inline flatbuffers::Offset<DebugDumpResponse> CreateDebugDumpResponse(flatbuffers::FlatBufferBuilder &_fbb, const DebugDumpResponseT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2190   (void)_rehasher;
   2191   (void)_o;
   2192   auto _success = _o->success;
   2193   auto _data_count = _o->data_count;
   2194   return chre::fbs::CreateDebugDumpResponse(
   2195       _fbb,
   2196       _success,
   2197       _data_count);
   2198 }
   2199 
   2200 inline TimeSyncRequestT *TimeSyncRequest::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2201   auto _o = new TimeSyncRequestT();
   2202   UnPackTo(_o, _resolver);
   2203   return _o;
   2204 }
   2205 
   2206 inline void TimeSyncRequest::UnPackTo(TimeSyncRequestT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2207   (void)_o;
   2208   (void)_resolver;
   2209 }
   2210 
   2211 inline flatbuffers::Offset<TimeSyncRequest> TimeSyncRequest::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2212   return CreateTimeSyncRequest(_fbb, _o, _rehasher);
   2213 }
   2214 
   2215 inline flatbuffers::Offset<TimeSyncRequest> CreateTimeSyncRequest(flatbuffers::FlatBufferBuilder &_fbb, const TimeSyncRequestT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2216   (void)_rehasher;
   2217   (void)_o;
   2218   return chre::fbs::CreateTimeSyncRequest(
   2219       _fbb);
   2220 }
   2221 
   2222 inline MessageContainerT *MessageContainer::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
   2223   auto _o = new MessageContainerT();
   2224   UnPackTo(_o, _resolver);
   2225   return _o;
   2226 }
   2227 
   2228 inline void MessageContainer::UnPackTo(MessageContainerT *_o, const flatbuffers::resolver_function_t *_resolver) const {
   2229   (void)_o;
   2230   (void)_resolver;
   2231   { auto _e = message_type(); _o->message.type = _e; };
   2232   { auto _e = message(); if (_e) _o->message.table = ChreMessageUnion::UnPack(_e, message_type(),_resolver); };
   2233   { auto _e = host_addr(); if (_e) _o->host_addr = std::unique_ptr<HostAddress>(new HostAddress(*_e)); };
   2234 }
   2235 
   2236 inline flatbuffers::Offset<MessageContainer> MessageContainer::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
   2237   return CreateMessageContainer(_fbb, _o, _rehasher);
   2238 }
   2239 
   2240 inline flatbuffers::Offset<MessageContainer> CreateMessageContainer(flatbuffers::FlatBufferBuilder &_fbb, const MessageContainerT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
   2241   (void)_rehasher;
   2242   (void)_o;
   2243   auto _message_type = _o->message.type;
   2244   auto _message = _o->message.Pack(_fbb);
   2245   auto _host_addr = _o->host_addr ? _o->host_addr.get() : 0;
   2246   return chre::fbs::CreateMessageContainer(
   2247       _fbb,
   2248       _message_type,
   2249       _message,
   2250       _host_addr);
   2251 }
   2252 
   2253 inline bool VerifyChreMessage(flatbuffers::Verifier &verifier, const void *obj, ChreMessage type) {
   2254   switch (type) {
   2255     case ChreMessage::NONE: {
   2256       return true;
   2257     }
   2258     case ChreMessage::NanoappMessage: {
   2259       auto ptr = reinterpret_cast<const NanoappMessage *>(obj);
   2260       return verifier.VerifyTable(ptr);
   2261     }
   2262     case ChreMessage::HubInfoRequest: {
   2263       auto ptr = reinterpret_cast<const HubInfoRequest *>(obj);
   2264       return verifier.VerifyTable(ptr);
   2265     }
   2266     case ChreMessage::HubInfoResponse: {
   2267       auto ptr = reinterpret_cast<const HubInfoResponse *>(obj);
   2268       return verifier.VerifyTable(ptr);
   2269     }
   2270     case ChreMessage::NanoappListRequest: {
   2271       auto ptr = reinterpret_cast<const NanoappListRequest *>(obj);
   2272       return verifier.VerifyTable(ptr);
   2273     }
   2274     case ChreMessage::NanoappListResponse: {
   2275       auto ptr = reinterpret_cast<const NanoappListResponse *>(obj);
   2276       return verifier.VerifyTable(ptr);
   2277     }
   2278     case ChreMessage::LoadNanoappRequest: {
   2279       auto ptr = reinterpret_cast<const LoadNanoappRequest *>(obj);
   2280       return verifier.VerifyTable(ptr);
   2281     }
   2282     case ChreMessage::LoadNanoappResponse: {
   2283       auto ptr = reinterpret_cast<const LoadNanoappResponse *>(obj);
   2284       return verifier.VerifyTable(ptr);
   2285     }
   2286     case ChreMessage::UnloadNanoappRequest: {
   2287       auto ptr = reinterpret_cast<const UnloadNanoappRequest *>(obj);
   2288       return verifier.VerifyTable(ptr);
   2289     }
   2290     case ChreMessage::UnloadNanoappResponse: {
   2291       auto ptr = reinterpret_cast<const UnloadNanoappResponse *>(obj);
   2292       return verifier.VerifyTable(ptr);
   2293     }
   2294     case ChreMessage::LogMessage: {
   2295       auto ptr = reinterpret_cast<const LogMessage *>(obj);
   2296       return verifier.VerifyTable(ptr);
   2297     }
   2298     case ChreMessage::TimeSyncMessage: {
   2299       auto ptr = reinterpret_cast<const TimeSyncMessage *>(obj);
   2300       return verifier.VerifyTable(ptr);
   2301     }
   2302     case ChreMessage::DebugDumpRequest: {
   2303       auto ptr = reinterpret_cast<const DebugDumpRequest *>(obj);
   2304       return verifier.VerifyTable(ptr);
   2305     }
   2306     case ChreMessage::DebugDumpData: {
   2307       auto ptr = reinterpret_cast<const DebugDumpData *>(obj);
   2308       return verifier.VerifyTable(ptr);
   2309     }
   2310     case ChreMessage::DebugDumpResponse: {
   2311       auto ptr = reinterpret_cast<const DebugDumpResponse *>(obj);
   2312       return verifier.VerifyTable(ptr);
   2313     }
   2314     case ChreMessage::TimeSyncRequest: {
   2315       auto ptr = reinterpret_cast<const TimeSyncRequest *>(obj);
   2316       return verifier.VerifyTable(ptr);
   2317     }
   2318     default: return false;
   2319   }
   2320 }
   2321 
   2322 inline bool VerifyChreMessageVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
   2323   if (values->size() != types->size()) return false;
   2324   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
   2325     if (!VerifyChreMessage(
   2326         verifier,  values->Get(i), types->GetEnum<ChreMessage>(i))) {
   2327       return false;
   2328     }
   2329   }
   2330   return true;
   2331 }
   2332 
   2333 inline flatbuffers::NativeTable *ChreMessageUnion::UnPack(const void *obj, ChreMessage type, const flatbuffers::resolver_function_t *resolver) {
   2334   switch (type) {
   2335     case ChreMessage::NanoappMessage: {
   2336       auto ptr = reinterpret_cast<const NanoappMessage *>(obj);
   2337       return ptr->UnPack(resolver);
   2338     }
   2339     case ChreMessage::HubInfoRequest: {
   2340       auto ptr = reinterpret_cast<const HubInfoRequest *>(obj);
   2341       return ptr->UnPack(resolver);
   2342     }
   2343     case ChreMessage::HubInfoResponse: {
   2344       auto ptr = reinterpret_cast<const HubInfoResponse *>(obj);
   2345       return ptr->UnPack(resolver);
   2346     }
   2347     case ChreMessage::NanoappListRequest: {
   2348       auto ptr = reinterpret_cast<const NanoappListRequest *>(obj);
   2349       return ptr->UnPack(resolver);
   2350     }
   2351     case ChreMessage::NanoappListResponse: {
   2352       auto ptr = reinterpret_cast<const NanoappListResponse *>(obj);
   2353       return ptr->UnPack(resolver);
   2354     }
   2355     case ChreMessage::LoadNanoappRequest: {
   2356       auto ptr = reinterpret_cast<const LoadNanoappRequest *>(obj);
   2357       return ptr->UnPack(resolver);
   2358     }
   2359     case ChreMessage::LoadNanoappResponse: {
   2360       auto ptr = reinterpret_cast<const LoadNanoappResponse *>(obj);
   2361       return ptr->UnPack(resolver);
   2362     }
   2363     case ChreMessage::UnloadNanoappRequest: {
   2364       auto ptr = reinterpret_cast<const UnloadNanoappRequest *>(obj);
   2365       return ptr->UnPack(resolver);
   2366     }
   2367     case ChreMessage::UnloadNanoappResponse: {
   2368       auto ptr = reinterpret_cast<const UnloadNanoappResponse *>(obj);
   2369       return ptr->UnPack(resolver);
   2370     }
   2371     case ChreMessage::LogMessage: {
   2372       auto ptr = reinterpret_cast<const LogMessage *>(obj);
   2373       return ptr->UnPack(resolver);
   2374     }
   2375     case ChreMessage::TimeSyncMessage: {
   2376       auto ptr = reinterpret_cast<const TimeSyncMessage *>(obj);
   2377       return ptr->UnPack(resolver);
   2378     }
   2379     case ChreMessage::DebugDumpRequest: {
   2380       auto ptr = reinterpret_cast<const DebugDumpRequest *>(obj);
   2381       return ptr->UnPack(resolver);
   2382     }
   2383     case ChreMessage::DebugDumpData: {
   2384       auto ptr = reinterpret_cast<const DebugDumpData *>(obj);
   2385       return ptr->UnPack(resolver);
   2386     }
   2387     case ChreMessage::DebugDumpResponse: {
   2388       auto ptr = reinterpret_cast<const DebugDumpResponse *>(obj);
   2389       return ptr->UnPack(resolver);
   2390     }
   2391     case ChreMessage::TimeSyncRequest: {
   2392       auto ptr = reinterpret_cast<const TimeSyncRequest *>(obj);
   2393       return ptr->UnPack(resolver);
   2394     }
   2395     default: return nullptr;
   2396   }
   2397 }
   2398 
   2399 inline flatbuffers::Offset<void> ChreMessageUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
   2400   switch (type) {
   2401     case ChreMessage::NanoappMessage: {
   2402       auto ptr = reinterpret_cast<const NanoappMessageT *>(table);
   2403       return CreateNanoappMessage(_fbb, ptr, _rehasher).Union();
   2404     }
   2405     case ChreMessage::HubInfoRequest: {
   2406       auto ptr = reinterpret_cast<const HubInfoRequestT *>(table);
   2407       return CreateHubInfoRequest(_fbb, ptr, _rehasher).Union();
   2408     }
   2409     case ChreMessage::HubInfoResponse: {
   2410       auto ptr = reinterpret_cast<const HubInfoResponseT *>(table);
   2411       return CreateHubInfoResponse(_fbb, ptr, _rehasher).Union();
   2412     }
   2413     case ChreMessage::NanoappListRequest: {
   2414       auto ptr = reinterpret_cast<const NanoappListRequestT *>(table);
   2415       return CreateNanoappListRequest(_fbb, ptr, _rehasher).Union();
   2416     }
   2417     case ChreMessage::NanoappListResponse: {
   2418       auto ptr = reinterpret_cast<const NanoappListResponseT *>(table);
   2419       return CreateNanoappListResponse(_fbb, ptr, _rehasher).Union();
   2420     }
   2421     case ChreMessage::LoadNanoappRequest: {
   2422       auto ptr = reinterpret_cast<const LoadNanoappRequestT *>(table);
   2423       return CreateLoadNanoappRequest(_fbb, ptr, _rehasher).Union();
   2424     }
   2425     case ChreMessage::LoadNanoappResponse: {
   2426       auto ptr = reinterpret_cast<const LoadNanoappResponseT *>(table);
   2427       return CreateLoadNanoappResponse(_fbb, ptr, _rehasher).Union();
   2428     }
   2429     case ChreMessage::UnloadNanoappRequest: {
   2430       auto ptr = reinterpret_cast<const UnloadNanoappRequestT *>(table);
   2431       return CreateUnloadNanoappRequest(_fbb, ptr, _rehasher).Union();
   2432     }
   2433     case ChreMessage::UnloadNanoappResponse: {
   2434       auto ptr = reinterpret_cast<const UnloadNanoappResponseT *>(table);
   2435       return CreateUnloadNanoappResponse(_fbb, ptr, _rehasher).Union();
   2436     }
   2437     case ChreMessage::LogMessage: {
   2438       auto ptr = reinterpret_cast<const LogMessageT *>(table);
   2439       return CreateLogMessage(_fbb, ptr, _rehasher).Union();
   2440     }
   2441     case ChreMessage::TimeSyncMessage: {
   2442       auto ptr = reinterpret_cast<const TimeSyncMessageT *>(table);
   2443       return CreateTimeSyncMessage(_fbb, ptr, _rehasher).Union();
   2444     }
   2445     case ChreMessage::DebugDumpRequest: {
   2446       auto ptr = reinterpret_cast<const DebugDumpRequestT *>(table);
   2447       return CreateDebugDumpRequest(_fbb, ptr, _rehasher).Union();
   2448     }
   2449     case ChreMessage::DebugDumpData: {
   2450       auto ptr = reinterpret_cast<const DebugDumpDataT *>(table);
   2451       return CreateDebugDumpData(_fbb, ptr, _rehasher).Union();
   2452     }
   2453     case ChreMessage::DebugDumpResponse: {
   2454       auto ptr = reinterpret_cast<const DebugDumpResponseT *>(table);
   2455       return CreateDebugDumpResponse(_fbb, ptr, _rehasher).Union();
   2456     }
   2457     case ChreMessage::TimeSyncRequest: {
   2458       auto ptr = reinterpret_cast<const TimeSyncRequestT *>(table);
   2459       return CreateTimeSyncRequest(_fbb, ptr, _rehasher).Union();
   2460     }
   2461     default: return 0;
   2462   }
   2463 }
   2464 
   2465 inline void ChreMessageUnion::Reset() {
   2466   switch (type) {
   2467     case ChreMessage::NanoappMessage: {
   2468       auto ptr = reinterpret_cast<NanoappMessageT *>(table);
   2469       delete ptr;
   2470       break;
   2471     }
   2472     case ChreMessage::HubInfoRequest: {
   2473       auto ptr = reinterpret_cast<HubInfoRequestT *>(table);
   2474       delete ptr;
   2475       break;
   2476     }
   2477     case ChreMessage::HubInfoResponse: {
   2478       auto ptr = reinterpret_cast<HubInfoResponseT *>(table);
   2479       delete ptr;
   2480       break;
   2481     }
   2482     case ChreMessage::NanoappListRequest: {
   2483       auto ptr = reinterpret_cast<NanoappListRequestT *>(table);
   2484       delete ptr;
   2485       break;
   2486     }
   2487     case ChreMessage::NanoappListResponse: {
   2488       auto ptr = reinterpret_cast<NanoappListResponseT *>(table);
   2489       delete ptr;
   2490       break;
   2491     }
   2492     case ChreMessage::LoadNanoappRequest: {
   2493       auto ptr = reinterpret_cast<LoadNanoappRequestT *>(table);
   2494       delete ptr;
   2495       break;
   2496     }
   2497     case ChreMessage::LoadNanoappResponse: {
   2498       auto ptr = reinterpret_cast<LoadNanoappResponseT *>(table);
   2499       delete ptr;
   2500       break;
   2501     }
   2502     case ChreMessage::UnloadNanoappRequest: {
   2503       auto ptr = reinterpret_cast<UnloadNanoappRequestT *>(table);
   2504       delete ptr;
   2505       break;
   2506     }
   2507     case ChreMessage::UnloadNanoappResponse: {
   2508       auto ptr = reinterpret_cast<UnloadNanoappResponseT *>(table);
   2509       delete ptr;
   2510       break;
   2511     }
   2512     case ChreMessage::LogMessage: {
   2513       auto ptr = reinterpret_cast<LogMessageT *>(table);
   2514       delete ptr;
   2515       break;
   2516     }
   2517     case ChreMessage::TimeSyncMessage: {
   2518       auto ptr = reinterpret_cast<TimeSyncMessageT *>(table);
   2519       delete ptr;
   2520       break;
   2521     }
   2522     case ChreMessage::DebugDumpRequest: {
   2523       auto ptr = reinterpret_cast<DebugDumpRequestT *>(table);
   2524       delete ptr;
   2525       break;
   2526     }
   2527     case ChreMessage::DebugDumpData: {
   2528       auto ptr = reinterpret_cast<DebugDumpDataT *>(table);
   2529       delete ptr;
   2530       break;
   2531     }
   2532     case ChreMessage::DebugDumpResponse: {
   2533       auto ptr = reinterpret_cast<DebugDumpResponseT *>(table);
   2534       delete ptr;
   2535       break;
   2536     }
   2537     case ChreMessage::TimeSyncRequest: {
   2538       auto ptr = reinterpret_cast<TimeSyncRequestT *>(table);
   2539       delete ptr;
   2540       break;
   2541     }
   2542     default: break;
   2543   }
   2544   table = nullptr;
   2545   type = ChreMessage::NONE;
   2546 }
   2547 
   2548 inline const chre::fbs::MessageContainer *GetMessageContainer(const void *buf) {
   2549   return flatbuffers::GetRoot<chre::fbs::MessageContainer>(buf);
   2550 }
   2551 
   2552 inline MessageContainer *GetMutableMessageContainer(void *buf) {
   2553   return flatbuffers::GetMutableRoot<MessageContainer>(buf);
   2554 }
   2555 
   2556 inline bool VerifyMessageContainerBuffer(
   2557     flatbuffers::Verifier &verifier) {
   2558   return verifier.VerifyBuffer<chre::fbs::MessageContainer>(nullptr);
   2559 }
   2560 
   2561 inline void FinishMessageContainerBuffer(
   2562     flatbuffers::FlatBufferBuilder &fbb,
   2563     flatbuffers::Offset<chre::fbs::MessageContainer> root) {
   2564   fbb.Finish(root);
   2565 }
   2566 
   2567 inline std::unique_ptr<MessageContainerT> UnPackMessageContainer(
   2568     const void *buf,
   2569     const flatbuffers::resolver_function_t *res = nullptr) {
   2570   return std::unique_ptr<MessageContainerT>(GetMessageContainer(buf)->UnPack(res));
   2571 }
   2572 
   2573 }  // namespace fbs
   2574 }  // namespace chre
   2575 
   2576 #endif  // FLATBUFFERS_GENERATED_HOSTMESSAGES_CHRE_FBS_H_
   2577