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