1e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/*
2e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Copyright (C) 2016 The Android Open Source Project
3e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
4e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Licensed under the Apache License, Version 2.0 (the "License");
5e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * you may not use this file except in compliance with the License.
6e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * You may obtain a copy of the License at
7e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
8e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *      http://www.apache.org/licenses/LICENSE-2.0
9e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
10e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Unless required by applicable law or agreed to in writing, software
11e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * distributed under the License is distributed on an "AS IS" BASIS,
12e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * See the License for the specific language governing permissions and
14e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * limitations under the License.
15e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
16e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
17e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#ifndef _CHRE_EVENT_H_
18e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define _CHRE_EVENT_H_
19e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
20e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
216bb73b09cc327ecbfede8cb7657d93cecb57e159Brian Duddie * @file
22e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Context Hub Runtime Environment API dealing with events and messages.
23e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
24e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
25e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#include <stdbool.h>
26e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#include <stdint.h>
27e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#include <stdlib.h>
28e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
29e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#ifdef __cplusplus
30e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddieextern "C" {
31e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif
32e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
33e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
34e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * The CHRE implementation is required to provide the following
35e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * preprocessor defines via the build system.
36e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
37e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE_MESSAGE_TO_HOST_MAX_SIZE: The maximum size, in bytes, allowed for
38e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     a message sent to chreSendMessageToHost().  This must be at least
39e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE.
40e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
41e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
42e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#ifndef CHRE_MESSAGE_TO_HOST_MAX_SIZE
43e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#error CHRE_MESSAGE_TO_HOST_MAX_SIZE must be defined by the Context Hub Runtime Environment implementation
44e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif
45e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
46e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
47e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * The minimum size, in bytes, any CHRE implementation will
48e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * use for CHRE_MESSAGE_TO_HOST_MAX_SIZE.
49e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
50e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE 128
51e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
52e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#if CHRE_MESSAGE_TO_HOST_MAX_SIZE < CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE
53e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#error CHRE_MESSAGE_TO_HOST_MAX_SIZE is too small.
54e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif
55e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
56e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
57e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * The lowest numerical value legal for a user-defined event.
58e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
59e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * The system reserves all event values from 0 to 0x7FFF, inclusive.
60e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * User events may use any value in the range 0x8000 to 0xFFFF, inclusive.
61e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
62e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Note that the same event values might be used by different nanoapps
63e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * for different meanings.  This is not a concern, as these values only
64e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * have meaning when paired with the originating nanoapp.
65e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
66e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_FIRST_USER_VALUE  UINT16_C(0x8000)
67e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
68e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
69e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * nanoappHandleEvent argument: struct chreMessageFromHostData
70e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
71e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * The format of the 'message' part of this structure is left undefined,
72e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * and it's up to the nanoapp and host to have an established protocol
73e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * beforehand.
74e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
75e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_MESSAGE_FROM_HOST  UINT16_C(0x0001)
76e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
77e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
78e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * nanoappHandleEvent argument: 'cookie' given to chreTimerSet() method.
79e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
80e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Indicates that a timer has elapsed, in accordance with how chreTimerSet() was
81e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * invoked.
82e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
83e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_TIMER  UINT16_C(0x0002)
84e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
85e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
8688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * nanoappHandleEvent argument: struct chreNanoappInfo
8788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
8888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * Indicates that a nanoapp has successfully started (its nanoappStart()
8988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * function has been called, and it returned true) and is able to receive events
9088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * sent via chreSendEvent().  Note that this event is not sent for nanoapps that
9188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * were started prior to the current nanoapp - use chreGetNanoappInfo() to
9288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * determine if another nanoapp is already running.
9388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
9488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @since v1.1
9588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie */
9688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie#define CHRE_EVENT_NANOAPP_STARTED  UINT16_C(0x0003)
9788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
9888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie/**
9988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * nanoappHandleEvent argument: struct chreNanoappInfo
10088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
10188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * Indicates that a nanoapp has stopped executing and is no longer able to
10288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * receive events sent via chreSendEvent().  Any events sent prior to receiving
10388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * this event are not guaranteed to have been delivered.
10488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
10588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @since v1.1
10688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie */
10788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie#define CHRE_EVENT_NANOAPP_STOPPED  UINT16_C(0x0004)
10888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
10988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie/**
110e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * First possible value for CHRE_EVENT_SENSOR events.
111e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
112e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * This allows us to separately define our CHRE_EVENT_SENSOR_* events in
113e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * chre/sensor.h, without fear of collision with other event values.
114e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
115e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_SENSOR_FIRST_EVENT  UINT16_C(0x0100)
116e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
117e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
118e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Last possible value for CHRE_EVENT_SENSOR events.
119e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
120e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * This allows us to separately define our CHRE_EVENT_SENSOR_* events in
121e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * chre/sensor.h, without fear of collision with other event values.
122e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
123e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_SENSOR_LAST_EVENT  UINT16_C(0x02FF)
124e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
125e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
126e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * First event in the block reserved for GNSS. These events are defined in
127e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * chre/gnss.h.
128e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
129e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_GNSS_FIRST_EVENT  UINT16_C(0x0300)
130e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_GNSS_LAST_EVENT   UINT16_C(0x030F)
131e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
132e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
133e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * First event in the block reserved for WiFi. These events are defined in
134e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * chre/wifi.h.
135e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
136e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_WIFI_FIRST_EVENT  UINT16_C(0x0310)
137e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_WIFI_LAST_EVENT   UINT16_C(0x031F)
138e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
139e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
140e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * First event in the block reserved for WWAN. These events are defined in
141e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * chre/wwan.h.
142e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
143e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_WWAN_FIRST_EVENT  UINT16_C(0x0320)
144e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_WWAN_LAST_EVENT   UINT16_C(0x032F)
145e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
146e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
147e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * First in a range of values dedicated for internal CHRE implementation usage.
148e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
149e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * If a CHRE wishes to use events internally, any values within this range
150e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * are assured not to be taken by future CHRE API additions.
151e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
152e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_INTERNAL_FIRST_EVENT  UINT16_C(0x7E00)
153e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
154e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
155e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Last in a range of values dedicated for internal CHRE implementation usage.
156e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
157e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * If a CHRE wishes to use events internally, any values within this range
158e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * are assured not to be taken by future CHRE API additions.
159e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
160e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_EVENT_INTERNAL_LAST_EVENT  UINT16_C(0x7FFF)
161e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
16255c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie/**
16355c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * A special value for the hostEndpoint argument in
16455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * chreSendMessageToHostEndpoint() that indicates that the message should be
16555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * delivered to all host endpoints.  This value will not be used in the
16655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * hostEndpoint field of struct chreMessageFromHostData supplied with
16755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * CHRE_EVENT_MESSAGE_FROM_HOST.
16855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *
16955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @since v1.1
17055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie */
17155c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie#define CHRE_HOST_ENDPOINT_BROADCAST  UINT16_C(0xFFFF)
17255c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie
17355c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie/**
17455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * A special value for hostEndpoint in struct chreMessageFromHostData that
17555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * indicates that a host endpoint is unknown or otherwise unspecified.  This
17655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * value may be received in CHRE_EVENT_MESSAGE_FROM_HOST, but it is not valid to
17755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * provide it to chreSendMessageToHostEndpoint().
17855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *
17955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @since v1.1
18055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie */
18155c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie#define CHRE_HOST_ENDPOINT_UNSPECIFIED  UINT16_C(0xFFFE)
18255c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie
183e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
184e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
18588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * Data provided with CHRE_EVENT_MESSAGE_FROM_HOST.
186e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
187e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddiestruct chreMessageFromHostData {
188e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie    /**
1899650de6da76ca34223c55a304a4687bf1190f107Brian Duddie     * Message type supplied by the host.
190e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     *
1919650de6da76ca34223c55a304a4687bf1190f107Brian Duddie     * NOTE: In CHRE API v1.0, support for forwarding this field from the host
1929650de6da76ca34223c55a304a4687bf1190f107Brian Duddie     * was not strictly required, and some implementations did not support it.
1939650de6da76ca34223c55a304a4687bf1190f107Brian Duddie     * However, its support is mandatory as of v1.1.
194e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     */
1959650de6da76ca34223c55a304a4687bf1190f107Brian Duddie    uint32_t messageType;
196e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
197e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie    /**
198e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * The size, in bytes of the following 'message'.
199e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     *
200e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * This can be 0.
201e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     */
202e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie    uint32_t messageSize;
203e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
204e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie    /**
205e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * The message from the host.
206e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     *
207e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * These contents are of a format that the host and nanoapp must have
208e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * established beforehand.
209e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     *
210e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * This data is 'messageSize' bytes in length.  Note that if 'messageSize'
211e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     * is 0, this might be NULL.
212e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie     */
213e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie    const void *message;
21455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie
21555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie    /**
21655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * An identifier for the host-side entity that sent this message.  Unless
21755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * this is set to CHRE_HOST_ENDPOINT_UNSPECIFIED, it can be used in
21855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * chreSendMessageToHostEndpoint() to send a directed reply that will only
21955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * be received by the given entity on the host.  Endpoint identifiers are
22055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * opaque values assigned at runtime, so they cannot be assumed to always
22155c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * describe a specific entity across restarts.
22255c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     *
22355c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * If running on a CHRE API v1.0 implementation, this field will always be
22455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * set to CHRE_HOST_ENDPOINT_UNSPECIFIED.
22555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     *
22655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     * @since v1.1
22755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie     */
22855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie    uint16_t hostEndpoint;
229e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie};
230e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
231e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
23288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * Provides metadata for a nanoapp in the system.
23388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie */
23488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddiestruct chreNanoappInfo {
23588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    /**
23688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * Nanoapp identifier. The convention for populating this value is to set
23788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * the most significant 5 bytes to a value that uniquely identifies the
23888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * vendor, and the lower 3 bytes identify the nanoapp.
23988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     */
24088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    uint64_t appId;
24188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
24288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    /**
24388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * Nanoapp version.  The semantics of this field are defined by the nanoapp,
24488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * however nanoapps are recommended to follow the same scheme used for the
24588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * CHRE version exposed in chreGetVersion().  That is, the most significant
24688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * byte represents the major version, the next byte the minor version, and
24788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * the lower two bytes the patch version.
24888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     */
24988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    uint32_t version;
25088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
25188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    /**
25288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * The instance ID of this nanoapp, which can be used in chreSendEvent() to
25388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * address an event specifically to this nanoapp.  This identifier is
25488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     * guaranteed to be unique among all nanoapps in the system.
25588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie     */
25688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie    uint32_t instanceId;
25788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie};
25888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
25988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie/**
260e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Callback which frees data associated with an event.
261e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
262e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * This callback is (optionally) provided to the chreSendEvent() method as
263e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * a means for freeing the event data and performing any other cleanup
264e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * necessary when the event is completed.  When this callback is invoked,
265e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 'eventData' is no longer needed and can be released.
266e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
267e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param eventType  The 'eventType' argument from chreSendEvent().
268e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param eventData  The 'eventData' argument from chreSendEvent().
269e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
270e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @see chreSendEvent
271e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
272e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddietypedef void (chreEventCompleteFunction)(uint16_t eventType, void *eventData);
273e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
274e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
275e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Callback which frees a message.
276e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
277e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * This callback is (optionally) provided to the chreSendMessageToHost() method
278e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * as a means for freeing the message.  When this callback is invoked,
279e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 'message' is no longer needed and can be released.  Note that this in
280e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * no way assures that said message did or did not make it to the host, simply
281e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * that this memory is no longer needed.
282e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
283e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param message  The 'message' argument from chreSendMessageToHost().
284e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param messageSize  The 'messageSize' argument from chreSendMessageToHost().
285e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
286e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @see chreSendMessageToHost
287e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
288e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddietypedef void (chreMessageFreeFunction)(void *message, size_t messageSize);
289e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
290e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
291e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
292e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Enqueue an event to be sent to another nanoapp.
293e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
294e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Note: This version of the API does not give an easy means to discover
295e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * another nanoapp's instance ID.  For now, events will need to be sent to/from
296e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * the host to initially discover these IDs.
297e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
298e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param eventType  This is a user-defined event type, of at least the
299e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     value CHRE_EVENT_FIRST_USER_VALUE.  It is illegal to attempt to use any
300e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     of the CHRE_EVENT_* values reserved for the CHRE.
301e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param eventData  A pointer value that will be understood by the receiving
302e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     app.  Note that NULL is perfectly acceptable.  It also is not required
303e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     that this be a valid pointer, although if this nanoapp is intended to
304e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     work on arbitrary CHRE implementations, then the size of a
305e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     pointer cannot be assumed to be a certain size.  Note that the caller
306e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     no longer owns this memory after the call.
307e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param freeCallback  A pointer to a callback function.  After the lifetime
308e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     of 'eventData' is over (either through successful delivery or the event
309e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     being dropped), this callback will be invoked.  This argument is allowed
310e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     to be NULL, in which case no callback will be invoked.
311e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param targetInstanceId  The ID of the instance we're delivering this event
312e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     to.  Note that this is allowed to be our own instance.
313e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @returns true if the event was enqueued, false otherwise.  Note that even
314e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     if this method returns 'false', the 'freeCallback' will be invoked,
315e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     if non-NULL.  Note in the 'false' case, the 'freeCallback' may be
316e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     invoked directly from within chreSendEvent(), so it's necessary
317e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     for nanoapp authors to avoid possible recursion with this.
318e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
319e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @see chreEventDataFreeFunction
320e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
321e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddiebool chreSendEvent(uint16_t eventType, void *eventData,
322e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie                   chreEventCompleteFunction *freeCallback,
323e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie                   uint32_t targetInstanceId);
324e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
325e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/**
32655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * Send a message to the host, using the broadcast endpoint
32755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * CHRE_HOST_ENDPOINT_BROADCAST.  Refer to chreSendMessageToHostEndpoint() for
32855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * further details.
32955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *
33055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @see chreSendMessageToHostEndpoint
33155c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *
33255c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @deprecated New code should use chreSendMessageToHostEndpoint() instead of
33355c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * this function.  A future update to the API may cause references to this
33455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * function to produce a compiler warning.
33555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie */
33655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddiebool chreSendMessageToHost(void *message, uint32_t messageSize,
33755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie                           uint32_t messageType,
33855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie                           chreMessageFreeFunction *freeCallback);
33955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie
34055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie/**
341e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Send a message to the host.
342e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
343e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * This message is by definition arbitrarily defined.  Since we're not
344e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * just a passing a pointer to memory around the system, but need to copy
345e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * this into various buffers to send it to the host, the CHRE
346e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * implementation cannot be asked to support an arbitrarily large message
347e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * size.  As a result, we have the CHRE implementation define
348e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE_MESSAGE_TO_HOST_MAX_SIZE.
349e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
350e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE_MESSAGE_TO_HOST_MAX_SIZE is not given a value by the Platform API.  The
351e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Platform API does define CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, and requires
352e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * that CHRE_MESSAGE_TO_HOST_MAX_SIZE is at least that value.
353e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
354e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * As a result, if your message sizes are all less than
355e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, then you have no concerns on any
356e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE implementation.  If your message sizes are larger, you'll need to
357e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * come up with a strategy for splitting your message across several calls
358e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * to this method.  As long as that strategy works for
359e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, it will work across all CHRE
360e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * implementations (although on some implementations less calls to this
361e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * method may be necessary).
362e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
363e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param message  Pointer to a block of memory to send to the host.
364e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     NULL is acceptable only if messageSize is 0.  If non-NULL, this
365e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     must be a legitimate pointer (that is, unlike chreSendEvent(), a small
366e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     integral value cannot be cast to a pointer for this).  Note that the
367e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     caller no longer owns this memory after the call.
368e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param messageSize  The size, in bytes, of the given message.
369e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     This cannot exceed CHRE_MESSAGE_TO_HOST_MAX_SIZE.
3709650de6da76ca34223c55a304a4687bf1190f107Brian Duddie * @param messageType  Message type sent to the app on the host.
3719650de6da76ca34223c55a304a4687bf1190f107Brian Duddie *     NOTE: In CHRE API v1.0, support for forwarding this field to the host was
3729650de6da76ca34223c55a304a4687bf1190f107Brian Duddie *     not strictly required, and some implementations did not support it.
3739650de6da76ca34223c55a304a4687bf1190f107Brian Duddie *     However, its support is mandatory as of v1.1.
37455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @param hostEndpoint  An identifier for the intended recipient of the message,
37555c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     or CHRE_HOST_ENDPOINT_BROADCAST if all registered endpoints on the host
37655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     should receive the message.  Endpoint identifiers are assigned on the
37755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     host side, and nanoapps may learn of the host endpoint ID of an intended
37855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     recipient via an initial message sent by the host.  This parameter is
37955c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     always treated as CHRE_HOST_ENDPOINT_BROADCAST if running on a CHRE API
38055c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *     v1.0 implementation.
381e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @param freeCallback  A pointer to a callback function.  After the lifetime
382e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     of 'message' is over (which does not assure that 'message' made it to
383e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     the host, just that the transport layer no longer needs this memory),
384e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     this callback will be invoked.  This argument is allowed
385e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     to be NULL, in which case no callback will be invoked.
386e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @returns true if the message was accepted for transmission, false otherwise.
387e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     Note that even if this method returns 'false', the 'freeCallback' will
388e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     be invoked, if non-NULL.  In either case, the 'freeCallback' may be
389e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     invoked directly from within chreSendMessageToHost(), so it's necessary
390e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *     for nanoapp authors to avoid possible recursion with this.
391e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie *
392e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * @see chreMessageFreeFunction
39355c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie *
39455c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie * @since v1.1
395e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */
39655c49c07c439e2448c1df72d451cf23d59634b38Brian Duddiebool chreSendMessageToHostEndpoint(void *message, size_t messageSize,
39755c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie                                   uint32_t messageType, uint16_t hostEndpoint,
39855c49c07c439e2448c1df72d451cf23d59634b38Brian Duddie                                   chreMessageFreeFunction *freeCallback);
399e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
40088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie/**
40188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * Queries for information about a nanoapp running in the system.
40288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
40388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * In the current API, appId is required to be unique, i.e. there cannot be two
40488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * nanoapps running concurrently with the same appId.  If this restriction is
40588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * removed in a future API version and multiple instances of the same appId are
40688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * present, this function must always return the first app to start.
40788173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
40888173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @param appId Identifier for the nanoapp that the caller is requesting
40988173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *     information about.
41088173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @param info Output parameter.  If this function returns true, this structure
41188173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *     will be populated with details of the specified nanoapp.
41288173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @returns true if a nanoapp with the given ID is currently running, and the
41388173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *     supplied info parameter was populated with its information.
41488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie *
41588173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie * @since v1.1
41688173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie */
4172bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddiebool chreGetNanoappInfoByAppId(uint64_t appId, struct chreNanoappInfo *info);
4182bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie
4192bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie/**
4202bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * Queries for information about a nanoapp running in the system, using the
4212bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * runtime unique identifier.  This method can be used to get information about
4222bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * the sender of an event.
4232bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie *
4242bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * @param instanceId
4252bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * @param info Output parameter.  If this function returns true, this structure
4262bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie *     will be populated with details of the specified nanoapp.
4272bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * @returns true if a nanoapp with the given instance ID is currently running,
4282bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie *     and the supplied info parameter was populated with its information.
4292bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie *
4302bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie * @since v1.1
4312bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie */
4322bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddiebool chreGetNanoappInfoByInstanceId(uint32_t instanceId,
4332bb82b7b3a5aa69ee1230a5b58949fc3fe9364feBrian Duddie                                    struct chreNanoappInfo *info);
43488173061e2be625b501ea2979ec01b1e5fe65350Brian Duddie
435e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
436e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#ifdef __cplusplus
437e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie}
438e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif
439e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
440e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif  /* _CHRE_EVENT_H_ */
441e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie
442