summaryrefslogtreecommitdiffstats
path: root/inc/chre
diff options
context:
space:
mode:
Diffstat (limited to 'inc/chre')
-rw-r--r--inc/chre/event.h273
-rw-r--r--inc/chre/nanoapp.h90
-rw-r--r--inc/chre/re.h329
-rw-r--r--inc/chre/sensor.h817
-rw-r--r--inc/chre/version.h129
5 files changed, 0 insertions, 1638 deletions
diff --git a/inc/chre/event.h b/inc/chre/event.h
deleted file mode 100644
index 0f088bb8..00000000
--- a/inc/chre/event.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHRE_EVENT_H_
-#define _CHRE_EVENT_H_
-
-/**
- * Context Hub Runtime Environment API dealing with events and messages.
- */
-
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * The CHRE implementation is required to provide the following
- * preprocessor defines via the build system.
- *
- * CHRE_MESSAGE_TO_HOST_MAX_SIZE: The maximum size, in bytes, allowed for
- * a message sent to chreSendMessageToHost(). This must be at least
- * CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE.
- */
-
-#ifndef CHRE_MESSAGE_TO_HOST_MAX_SIZE
-#error CHRE_MESSAGE_TO_HOST_MAX_SIZE must be defined by the Context Hub Runtime Environment implementation
-#endif
-
-/**
- * The minimum size, in bytes, any CHRE implementation will
- * use for CHRE_MESSAGE_TO_HOST_MAX_SIZE.
- */
-#define CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE 128
-
-#if CHRE_MESSAGE_TO_HOST_MAX_SIZE < CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE
-#error CHRE_MESSAGE_TO_HOST_MAX_SIZE is too small.
-#endif
-
-/**
- * The lowest numerical value legal for a user-defined event.
- *
- * The system reserves all event values from 0 to 0x7FFF, inclusive.
- * User events may use any value in the range 0x8000 to 0xFFFF, inclusive.
- *
- * Note that the same event values might be used by different nanoapps
- * for different meanings. This is not a concern, as these values only
- * have meaning when paired with the originating nanoapp.
- */
-#define CHRE_EVENT_FIRST_USER_VALUE UINT16_C(0x8000)
-
-/**
- * nanoappHandleEvent argument: struct chreMessageFromHostData
- *
- * The format of the 'message' part of this structure is left undefined,
- * and it's up to the nanoapp and host to have an established protocol
- * beforehand.
- */
-#define CHRE_EVENT_MESSAGE_FROM_HOST UINT16_C(0x0001)
-
-/**
- * nanoappHandleEvent argument: 'cookie' given to chreTimerSet() method.
- *
- * Indicates that a timer has elapsed, in accordance with how chreTimerSet() was
- * invoked.
- */
-#define CHRE_EVENT_TIMER UINT16_C(0x0002)
-
-/**
- * First possible value for CHRE_EVENT_SENSOR events.
- *
- * This allows us to separately define our CHRE_EVENT_SENSOR_* events in
- * chre_sensor.h, without fear of collision with other event values.
- */
-#define CHRE_EVENT_SENSOR_FIRST_EVENT UINT16_C(0x0100)
-
-/**
- * Last possible value for CHRE_EVENT_SENSOR events.
- *
- * This allows us to separately define our CHRE_EVENT_SENSOR_* events in
- * chre_sensor.h, without fear of collision with other event values.
- */
-#define CHRE_EVENT_SENSOR_LAST_EVENT UINT16_C(0x02FF)
-
-/**
- * First in a range of values dedicated for internal CHRE implementation usage.
- *
- * If a CHRE wishes to use events internally, any values within this range
- * are assured not to be taken by future CHRE API additions.
- */
-#define CHRE_EVENT_INTERNAL_FIRST_EVENT UINT16_C(0x7E00)
-
-/**
- * Last in a range of values dedicated for internal CHRE implementation usage.
- *
- * If a CHRE wishes to use events internally, any values within this range
- * are assured not to be taken by future CHRE API additions.
- */
-#define CHRE_EVENT_INTERNAL_LAST_EVENT UINT16_C(0x7FFF)
-
-
-/**
- * CHRE_EVENT_MESSAGE_FROM_HOST
- */
-struct chreMessageFromHostData {
- /**
- * Message type (NOTE: not implemented correctly in the Android N release).
- *
- * In future releases, this will be a message type provided by the host.
- */
- uint32_t reservedMessageType;
-
- /**
- * The size, in bytes of the following 'message'.
- *
- * This can be 0.
- */
- uint32_t messageSize;
-
- /**
- * The message from the host.
- *
- * These contents are of a format that the host and nanoapp must have
- * established beforehand.
- *
- * This data is 'messageSize' bytes in length. Note that if 'messageSize'
- * is 0, this might be NULL.
- */
- const void *message;
-};
-
-/**
- * Callback which frees data associated with an event.
- *
- * This callback is (optionally) provided to the chreSendEvent() method as
- * a means for freeing the event data and performing any other cleanup
- * necessary when the event is completed. When this callback is invoked,
- * 'eventData' is no longer needed and can be released.
- *
- * @param eventType The 'eventType' argument from chreSendEvent().
- * @param eventData The 'eventData' argument from chreSendEvent().
- *
- * @see chreSendEvent
- */
-typedef void (chreEventCompleteFunction)(uint16_t eventType, void *eventData);
-
-/**
- * Callback which frees a message.
- *
- * This callback is (optionally) provided to the chreSendMessageToHost() method
- * as a means for freeing the message. When this callback is invoked,
- * 'message' is no longer needed and can be released. Note that this in
- * no way assures that said message did or did not make it to the host, simply
- * that this memory is no longer needed.
- *
- * @param message The 'message' argument from chreSendMessageToHost().
- * @param messageSize The 'messageSize' argument from chreSendMessageToHost().
- *
- * @see chreSendMessageToHost
- */
-typedef void (chreMessageFreeFunction)(void *message, size_t messageSize);
-
-
-
-/**
- * Enqueue an event to be sent to another nanoapp.
- *
- * Note: This version of the API does not give an easy means to discover
- * another nanoapp's instance ID. For now, events will need to be sent to/from
- * the host to initially discover these IDs.
- *
- * @param eventType This is a user-defined event type, of at least the
- * value CHRE_EVENT_FIRST_USER_VALUE. It is illegal to attempt to use any
- * of the CHRE_EVENT_* values reserved for the CHRE.
- * @param eventData A pointer value that will be understood by the receiving
- * app. Note that NULL is perfectly acceptable. It also is not required
- * that this be a valid pointer, although if this nanoapp is intended to
- * work on arbitrary CHRE implementations, then the size of a
- * pointer cannot be assumed to be a certain size. Note that the caller
- * no longer owns this memory after the call.
- * @param freeCallback A pointer to a callback function. After the lifetime
- * of 'eventData' is over (either through successful delivery or the event
- * being dropped), this callback will be invoked. This argument is allowed
- * to be NULL, in which case no callback will be invoked.
- * @param targetInstanceId The ID of the instance we're delivering this event
- * to. Note that this is allowed to be our own instance.
- * @returns true if the event was enqueued, false otherwise. Note that even
- * if this method returns 'false', the 'freeCallback' will be invoked,
- * if non-NULL. Note in the 'false' case, the 'freeCallback' may be
- * invoked directly from within chreSendEvent(), so it's necessary
- * for nanoapp authors to avoid possible recursion with this.
- *
- * @see chreEventDataFreeFunction
- */
-bool chreSendEvent(uint16_t eventType, void *eventData,
- chreEventCompleteFunction *freeCallback,
- uint32_t targetInstanceId);
-
-/**
- * Send a message to the host.
- *
- * This message is by definition arbitrarily defined. Since we're not
- * just a passing a pointer to memory around the system, but need to copy
- * this into various buffers to send it to the host, the CHRE
- * implementation cannot be asked to support an arbitrarily large message
- * size. As a result, we have the CHRE implementation define
- * CHRE_MESSAGE_TO_HOST_MAX_SIZE.
- *
- * CHRE_MESSAGE_TO_HOST_MAX_SIZE is not given a value by the Platform API. The
- * Platform API does define CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, and requires
- * that CHRE_MESSAGE_TO_HOST_MAX_SIZE is at least that value.
- *
- * As a result, if your message sizes are all less than
- * CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, then you have no concerns on any
- * CHRE implementation. If your message sizes are larger, you'll need to
- * come up with a strategy for splitting your message across several calls
- * to this method. As long as that strategy works for
- * CHRE_MESSAGE_TO_HOST_MINIMUM_MAX_SIZE, it will work across all CHRE
- * implementations (although on some implementations less calls to this
- * method may be necessary).
- *
- * @param message Pointer to a block of memory to send to the host.
- * NULL is acceptable only if messageSize is 0. If non-NULL, this
- * must be a legitimate pointer (that is, unlike chreSendEvent(), a small
- * integral value cannot be cast to a pointer for this). Note that the
- * caller no longer owns this memory after the call.
- * @param messageSize The size, in bytes, of the given message.
- * This cannot exceed CHRE_MESSAGE_TO_HOST_MAX_SIZE.
- * @param reservedMessageType Message type sent to the app on the host.
- * NOTE: In the N release, there is a bug in some HAL implementations
- * where this data does not make it to the app running on the host.
- * Nanoapps cannot trust this across all platforms for N, but that
- * will be fixed in O.
- * @param freeCallback A pointer to a callback function. After the lifetime
- * of 'message' is over (which does not assure that 'message' made it to
- * the host, just that the transport layer no longer needs this memory),
- * this callback will be invoked. This argument is allowed
- * to be NULL, in which case no callback will be invoked.
- * @returns true if the message was accepted for transmission, false otherwise.
- * Note that even if this method returns 'false', the 'freeCallback' will
- * be invoked, if non-NULL. In either case, the 'freeCallback' may be
- * invoked directly from within chreSendMessageToHost(), so it's necessary
- * for nanoapp authors to avoid possible recursion with this.
- *
- * @see chreMessageFreeFunction
- */
-bool chreSendMessageToHost(void *message, uint32_t messageSize,
- uint32_t reservedMessageType,
- chreMessageFreeFunction *freeCallback);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CHRE_EVENT_H_ */
-
diff --git a/inc/chre/nanoapp.h b/inc/chre/nanoapp.h
deleted file mode 100644
index 78a8accd..00000000
--- a/inc/chre/nanoapp.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHRE_NANOAPP_H_
-#define _CHRE_NANOAPP_H_
-
-/**
- * Methods in the Context Hub Runtime Environment which must be implemented
- * by the nanoapp.
- */
-
-#include <stdbool.h>
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Method invoked by the CHRE when loading the nanoapp.
- *
- * Every CHRE method is legal to call from this method.
- *
- * @returns 'true' if the nanoapp successfully started. 'false' if the nanoapp
- * failed to properly initialize itself (for example, could not obtain
- * sufficient memory from the heap). If this method returns 'false', the
- * nanoapp will be unloaded by the CHRE (and nanoappEnd will
- * _not_ be invoked in that case).
- * @see nanoappEnd
- */
-bool nanoappStart(void);
-
-/**
- * Method invoked by the CHRE when there is an event for this nanoapp.
- *
- * Every CHRE method is legal to call from this method.
- *
- * @param senderInstanceId The Instance ID for the source of this event.
- * Note that this may be CHRE_INSTANCE_ID, indicating that the event
- * was generated by the CHRE.
- * @param eventType The event type. This might be one of the CHRE_EVENT_*
- * types defined in this API. But it might also be a user-defined event.
- * @param eventData The associated data, if any, for this specific type of
- * event. From the nanoapp's perspective, this eventData's lifetime ends
- * when this method returns, and thus any data the nanoapp wishes to
- * retain must be copied. Note that interpretation of event data is
- * given by the event type, and for some events may not be a valid
- * pointer. See documentation of the specific CHRE_EVENT_* types for how to
- * interpret this data for those. Note that for user events, you will
- * need to establish what this data means.
- */
-void nanoappHandleEvent(uint32_t senderInstanceId, uint16_t eventType,
- const void* eventData);
-
-/**
- * Method invoked by the CHRE when unloading the nanoapp.
- *
- * It is not valid to attempt to send events or messages, or to invoke functions
- * which will generate events to this app, within the nanoapp implementation of
- * this function. That means it is illegal for the nanoapp invoke any of the
- * following:
- * - chreSendEvent()
- * - chreSendMessageToHost()
- * - chreSensorConfigure()
- * - chreSensorConfigureModeOnly()
- * - chreTimerSet()
- *
- * @see nanoappStart
- */
-void nanoappEnd(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CHRE_NANOAPP_H_ */
diff --git a/inc/chre/re.h b/inc/chre/re.h
deleted file mode 100644
index 31b0ed7c..00000000
--- a/inc/chre/re.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHRE_RE_H_
-#define _CHRE_RE_H_
-
-/**
- * Some of the core Runtime Environment utilities of the Context Hub
- * Runtime Environment.
- *
- * This includes functions for memory allocation, logging, and timers.
- */
-
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * The instance ID for the CHRE.
- *
- * This ID is used to identify events generated by the CHRE (as
- * opposed to events generated by another nanoapp).
- */
-#define CHRE_INSTANCE_ID UINT32_C(0)
-
-/**
- * A timer ID representing an invalid timer.
- *
- * This valid is returned by chreTimerSet() if a timer cannot be
- * started.
- */
-#define CHRE_TIMER_INVALID UINT32_C(-1)
-
-
-
-/**
- * Logging levels used to indicate severity level of logging messages.
- *
- * CHRE_LOG_ERROR: Something fatal has happened, i.e. something that will have
- * user-visible consequences and won't be recoverable without explicitly
- * deleting some data, uninstalling applications, wiping the data
- * partitions or reflashing the entire phone (or worse).
- * CHRE_LOG_WARN: Something that will have user-visible consequences but is
- * likely to be recoverable without data loss by performing some explicit
- * action, ranging from waiting or restarting an app all the way to
- * re-downloading a new version of an application or rebooting the device.
- * CHRE_LOG_INFO: Something interesting to most people happened, i.e. when a
- * situation is detected that is likely to have widespread impact, though
- * isn't necessarily an error.
- * CHRE_LOG_DEBUG: Used to further note what is happening on the device that
- * could be relevant to investigate and debug unexpected behaviors. You
- * should log only what is needed to gather enough information about what
- * is going on about your component.
- *
- * There is currently no API to turn on/off logging by level, but we anticipate
- * adding such in future releases.
- *
- * @see chreLog
- */
-enum chreLogLevel {
- CHRE_LOG_ERROR,
- CHRE_LOG_WARN,
- CHRE_LOG_INFO,
- CHRE_LOG_DEBUG
-};
-
-
-
-/**
- * Get the application ID.
- *
- * The application ID is set by the loader of the nanoapp. This is not
- * assured to be unique among all nanoapps running in the system.
- *
- * @returns The application ID.
- */
-uint64_t chreGetAppId(void);
-
-/**
- * Get the instance ID.
- *
- * The instance ID is the CHRE handle to this nanoapp. This is assured
- * to be unique among all nanoapps running in the system, and to be
- * different from the CHRE_INSTANCE_ID. This is the ID used to communicate
- * between nanoapps.
- *
- * @returns The instance ID
- */
-uint32_t chreGetInstanceId(void);
-
-/**
- * A method for logging information about the system.
- *
- * A log entry can have a variety of levels (@see LogLevel). This function
- * allows a variable number of arguments, in a printf-style format.
- *
- * A nanoapp needs to be able to rely upon consistent printf format
- * recognition across any platform, and thus we establish formats which
- * are required to be handled by every CHRE implementation. Some of the
- * integral formats may seem obscure, but this API heavily uses types like
- * uint32_t and uint16_t. The platform independent macros for those printf
- * formats, like PRId32 or PRIx16, end up using some of these "obscure"
- * formats on some platforms, and thus are required.
- *
- * For the initial N release, our emphasis is on correctly getting information
- * into the log, and minimizing the requirements for CHRE implementations
- * beyond that. We're not as concerned about how the information is visually
- * displayed. As a result, there are a number of format sub-specifiers which
- * are "OPTIONAL" for the N implementation. "OPTIONAL" in this context means
- * that a CHRE implementation is allowed to essentially ignore the specifier,
- * but it must understand the specifier enough in order to properly skip it.
- *
- * For a nanoapp author, an OPTIONAL format means you might not get exactly
- * what you want on every CHRE implementation, but you will always get
- * something sane.
- *
- * To be clearer, here's an example with the OPTIONAL 0-padding for integers
- * for different hypothetical CHRE implementations.
- * Compliant, chose to implement OPTIONAL format:
- * chreLog(level, "%04x", 20) ==> "0014"
- * Compliant, chose not to implement OPTIONAL format:
- * chreLog(level, "%04x", 20) ==> "14"
- * Non-compliant, discarded format because the '0' was assumed to be incorrect:
- * chreLog(level, "%04x", 20) ==> ""
- *
- * Note that some of the OPTIONAL specifiers will probably become
- * required in future APIs.
- *
- * We also have NOT_SUPPORTED specifiers. Nanoapp authors should not use any
- * NOT_SUPPORTED specifiers, as unexpected things could happen on any given
- * CHRE implementation. A CHRE implementation is allowed to support this
- * (for example, when using shared code which already supports this), but
- * nanoapp authors need to avoid these.
- *
- *
- * Unless specifically noted as OPTIONAL or NOT_SUPPORTED, format
- * (sub-)specifiers listed below are required.
- *
- * OPTIONAL format sub-specifiers:
- * - '-' (left-justify within the given field width)
- * - '+' (preceed the result with a '+' sign if it is positive)
- * - ' ' (preceed the result with a blank space if no sign is going to be
- * output)
- * - '#' (For 'o', 'x' or 'X', preceed output with "0", "0x" or "0X",
- * respectively. For floating point, unconditionally output a decimal
- * point.)
- * - '0' (left pad the number with zeroes instead of spaces when <width>
- * needs padding)
- * - <width> (A number representing the minimum number of characters to be
- * output, left-padding with blank spaces if needed to meet the
- * minimum)
- * - '.'<precision> (A number which has different meaning depending on context.)
- * - Integer context: Minimum number of digits to output, padding with
- * leading zeros if needed to meet the minimum.
- * - 'f' context: Number of digits to output after the decimal
- * point (to the right of it).
- * - 's' context: Maximum number of characters to output.
- *
- * Integral format specifiers:
- * - 'd' (signed)
- * - 'u' (unsigned)
- * - 'o' (octal)
- * - 'x' (hexadecimal, lower case)
- * - 'X' (hexadecimal, upper case)
- *
- * Integral format sub-specifiers (as prefixes to an above integral format):
- * - 'hh' (char)
- * - 'h' (short)
- * - 'l' (long)
- * - 'll' (long long)
- * - 'z' (size_t)
- * - 't' (ptrdiff_t)
- *
- * Other format specifiers:
- * - 'f' (floating point)
- * - 'c' (character)
- * - 's' (character string, terminated by '\0')
- * - 'p' (pointer)
- * - '%' (escaping the percent sign (i.e. "%%" becomes "%"))
- *
- * NOT_SUPPORTED specifiers:
- * - 'n' (output nothing, but fill in a given pointer with the number
- * of characters written so far)
- * - '*' (indicates that the width/precision value comes from one of the
- * arguments to the function)
- * - 'e', 'E' (scientific notation output)
- * - 'g', 'G' (Shortest floating point representation)
- *
- * @param level The severity level for this message.
- * @param formatStr Either the entirety of the message, or a printf-style
- * format string of the format documented above.
- * @param ... A variable number of arguments necessary for the given
- * 'formatStr' (there may be no additional arguments for some 'formatStr's).
- */
-void chreLog(enum chreLogLevel level, const char *formatStr, ...);
-
-/**
- * Get the system time.
- *
- * This returns a time in nanoseconds in reference to some arbitrary
- * time in the past. This method is only useful for determining timing
- * between events on the system, and is not useful for determining
- * any sort of absolute time.
- *
- * This value must always increase (and must never roll over). This
- * value has no meaning across CHRE reboots.
- *
- * @returns The system time, in nanoseconds.
- */
-uint64_t chreGetTime(void);
-
-/**
- * Set a timer.
- *
- * When the timer fires, nanoappHandleEvent will be invoked with
- * CHRE_EVENT_TIMER and with the given 'cookie'.
- *
- * A CHRE implementation is required to provide at least 32
- * timers. However, there's no assurance there will be any available
- * for any given nanoapp (if it's loaded late, etc).
- *
- * @param duration Time, in nanoseconds, before the timer fires.
- * @param cookie Argument that will be sent to nanoappHandleEvent upon the
- * timer firing. This is allowed to be NULL and does not need to be
- * a valid pointer (assuming the nanoappHandleEvent code is expecting such).
- * @param oneShot If true, the timer will just fire once. If false, the
- * timer will continue to refire every 'duration', until this timer is
- * canceled (@see chreTimerCancel).
- *
- * @returns The timer ID. If the system is unable to set a timer
- * (no more available timers, etc.) then CHRE_TIMER_INVALID will
- * be returned.
- *
- * @see nanoappHandleEvent
- */
-uint32_t chreTimerSet(uint64_t duration, const void* cookie, bool oneShot);
-
-/**
- * Cancel a timer.
- *
- * After this method returns, the CHRE assures there will be no more
- * events sent from this timer, and any enqueued events from this timer
- * will need to be evicted from the queue by the CHRE.
- *
- * @param timerId A timer ID obtained by this nanoapp via chreTimerSet().
- * @returns true if the timer was cancelled, false otherwise. We may
- * fail to cancel the timer if it's a one shot which (just) fired,
- * or if the given timer ID is not owned by the calling app.
- */
-bool chreTimerCancel(uint32_t timerId);
-
-/**
- * Terminate this nanoapp.
- *
- * This takes effect immediately.
- *
- * The CHRE will no longer execute this nanoapp. The CHRE will not invoke
- * nanoappEnd(), nor will it call any memory free callbacks in the nanoapp.
- *
- * The CHRE will unload/evict this nanoapp's code.
- *
- * @param abortCode A value indicating the reason for aborting. (Note that
- * in this version of the API, there is no way for anyone to access this
- * code, but future APIs may expose it.)
- * @returns Never. This method does not return, as the CHRE stops nanoapp
- * execution immediately.
- */
-void chreAbort(uint32_t abortCode);
-
-/**
- * Allocate a given number of bytes from the system heap.
- *
- * The nanoapp is required to free this memory via chreHeapFree() prior to
- * the nanoapp ending.
- *
- * While the CHRE implementation is required to free up heap resources of
- * a nanoapp when unloading it, future requirements and tests focused on
- * nanoapps themselves may check for memory leaks, and will require nanoapps
- * to properly manage their heap resources.
- *
- * @param bytes The number of bytes requested.
- * @returns A pointer to 'bytes' contiguous bytes of heap memory, or NULL
- * if the allocation could not be performed. This pointer must be suitably
- * aligned for any kind of variable.
- *
- * @see chreHeapFree.
- */
-void* chreHeapAlloc(uint32_t bytes);
-
-/**
- * Free a heap allocation.
- *
- * This allocation must be from a value returned from a chreHeapAlloc() call
- * made by this nanoapp. In other words, it is illegal to free memory
- * allocated by another nanoapp (or the CHRE).
- *
- * @param ptr 'ptr' is required to be a value returned from chreHeapAlloc().
- * Note that since chreHeapAlloc can return NULL, CHRE
- * implementations must safely handle 'ptr' being NULL.
- *
- * @see chreHeapAlloc.
- */
-void chreHeapFree(void* ptr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CHRE_RE_H_ */
-
diff --git a/inc/chre/sensor.h b/inc/chre/sensor.h
deleted file mode 100644
index 9e743363..00000000
--- a/inc/chre/sensor.h
+++ /dev/null
@@ -1,817 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHRE_SENSOR_H_
-#define _CHRE_SENSOR_H_
-
-/**
- * API dealing with sensor interaction in the Context Hub Runtime
- * Environment.
- *
- * This includes the definition of our sensor types and the ability to
- * configure them for receiving events.
- */
-
-#include <stdbool.h>
-#include <stdint.h>
-
-// For CHRE_EVENT_SENSOR_FIRST_EVENT and CHRE_EVENT_SENSOR_LAST_EVENT
-#include <chre/event.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * The CHRE_SENSOR_TYPE_* defines are the sensor types supported.
- *
- * Unless otherwise noted, each of these sensor types is based off of a
- * corresponding sensor type in the Android API's sensors.h interface.
- * For a given CHRE_SENSOR_TYPE_FOO, it corresponds to the SENSOR_TYPE_FOO in
- * hardware/libhardware/include/hardware/sensors.h of the Android code base.
- *
- * Unless otherwise noted below, a CHRE_SENSOR_TYPE_FOO should be assumed
- * to work the same as the Android SENSOR_TYPE_FOO, as documented in the
- * sensors.h documentation and as detailed within the Android Compatibility
- * Definition Document.
- *
- * Note that every sensor will generate CHRE_EVENT_SENSOR_SAMPLING_CHANGE
- * events, so it is not listed with each individual sensor.
- */
-
-/**
- * Accelerometer.
- *
- * Generates: CHRE_EVENT_SENSOR_ACCELEROMETER_DATA
- *
- * @see CHRE_EVENT_SENSOR_ACCELEROMETER_DATA
- */
-#define CHRE_SENSOR_TYPE_ACCELEROMETER UINT8_C(1)
-
-/**
- * Instantaneous motion detection.
- *
- * Generates: CHRE_EVENT_SENSOR_INSTANT_MOTION_DETECT_DATA
- *
- * This is a one-shot sensor.
- *
- * This does not have a direct analogy within sensors.h. This is similar
- * to SENSOR_TYPE_MOTION_DETECT, but this triggers instantly upon any
- * motion, instead of waiting for a period of continuous motion.
- */
-#define CHRE_SENSOR_TYPE_INSTANT_MOTION_DETECT UINT8_C(2)
-
-/**
- * Stationary detection.
- *
- * Generates: CHRE_EVENT_SENSOR_STATIONARY_DETECT_DATA
- *
- * This is a one-shot sensor.
- */
-#define CHRE_SENSOR_TYPE_STATIONARY_DETECT UINT8_C(3)
-
-/**
- * Gyroscope.
- *
- * Generates: CHRE_EVENT_SENSOR_GYROSCOPE_DATA and
- * CHRE_EVENT_SENSOR_GYROSCOPE_BIAS_INFO
- *
- * Note that the GYROSCOPE_DATA is always the calibrated data, and not
- * raw data.
- */
-#define CHRE_SENSOR_TYPE_GYROSCOPE UINT8_C(6)
-
-/**
- * Magnetometer.
- *
- * Generates: CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_DATA and
- * CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_BIAS_INFO
- *
- * Note that the GEOMAGNETIC_FIELD_DATA is always the calibrated data, and not
- * raw data.
- */
-#define CHRE_SENSOR_TYPE_GEOMAGNETIC_FIELD UINT8_C(8)
-
-/**
- * Barometric pressure sensor.
- *
- * Generates: CHRE_EVENT_SENSOR_PRESSURE_DATA
- */
-#define CHRE_SENSOR_TYPE_PRESSURE UINT8_C(10)
-
-/**
- * Ambient light sensor.
- *
- * Generates: CHRE_EVENT_SENSOR_LIGHT_DATA
- */
-#define CHRE_SENSOR_TYPE_LIGHT UINT8_C(12)
-
-/**
- * Proximity detection.
- *
- * Generates: CHRE_EVENT_SENSOR_PROXIMITY_DATA
- *
- * This is an on-change sensor.
- */
-#define CHRE_SENSOR_TYPE_PROXIMITY UINT8_C(13)
-
-/**
- * Base value for all of the data events for sensors.
- *
- * The value for a data event FOO is
- * CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_FOO
- *
- * This allows for easy mapping, and also explains why there are gaps
- * in our values since we don't have all possible sensor types assigned.
- */
-#define CHRE_EVENT_SENSOR_DATA_EVENT_BASE CHRE_EVENT_SENSOR_FIRST_EVENT
-
-/**
- * nanoappHandleEvent argument: struct chreSensorThreeAxisData
- *
- * The data can be interpreted using the 'x', 'y', and 'z' fields within
- * 'readings', or by the 3D array 'v' (v[0] == x; v[1] == y; v[2] == z).
- *
- * All values are in SI units (m/s^2) and measure the acceleration of the
- * device minus the force of gravity.
- */
-#define CHRE_EVENT_SENSOR_ACCELEROMETER_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_ACCELEROMETER)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorOccurrenceData
- *
- * Since this is a one-shot sensor, after this event is delivered to the
- * nanoapp, the sensor automatically goes into DONE mode. Sensors of this
- * type must be configured with a ONE_SHOT mode.
- */
-#define CHRE_EVENT_SENSOR_INSTANT_MOTION_DETECT_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_INSTANT_MOTION_DETECT)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorOccurrenceData
- *
- * Since this is a one-shot sensor, after this event is delivered to the
- * nanoapp, the sensor automatically goes into DONE mode. Sensors of this
- * type must be configured with a ONE_SHOT mode.
- */
-#define CHRE_EVENT_SENSOR_STATIONARY_DETECT_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_STATIONARY_DETECT)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorThreeAxisData
- *
- * The data can be interpreted using the 'x', 'y', and 'z' fields within
- * 'readings', or by the 3D array 'v' (v[0] == x; v[1] == y; v[2] == z).
- *
- * All values are in radians/second and measure the rate of rotation
- * around the X, Y and Z axis.
- */
-#define CHRE_EVENT_SENSOR_GYROSCOPE_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_GYROSCOPE)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorThreeAxisData
- *
- * The data can be interpreted using the 'x', 'y', and 'z' fields within
- * 'readings', or by the 3D array 'v' (v[0] == x; v[1] == y; v[2] == z).
- *
- * All values are in micro-Tesla (uT) and measure the geomagnetic
- * field in the X, Y and Z axis.
- */
-#define CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_GEOMAGNETIC_FIELD)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorFloatData
- *
- * The data can be interpreted using the 'pressure' field within 'readings'.
- * This value is in hectopascals (hPa).
- */
-#define CHRE_EVENT_SENSOR_PRESSURE_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_PRESSURE)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorFloatData
- *
- * The data can be interpreted using the 'light' field within 'readings'.
- * This value is in SI lux units.
- */
-#define CHRE_EVENT_SENSOR_LIGHT_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_LIGHT)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorByteData
- *
- * The data is interpreted from the following fields in 'readings':
- * o 'isNear': If set to 1, we are nearby (on the order of centimeters);
- * if set to 0, we are far.
- * o 'invalid': If set to 1, this is not a valid reading of this data.
- *
- * As an on-change sensor, there is an event generated upon configuring
- * this sensor. This is when we might get an 'invalid' reading. Thus,
- * this field must be checked on the first event before interpreting 'isNear'.
- */
-#define CHRE_EVENT_SENSOR_PROXIMITY_DATA \
- (CHRE_EVENT_SENSOR_DATA_EVENT_BASE + CHRE_SENSOR_TYPE_PROXIMITY)
-
-
-/**
- * First value for sensor events which are not data from the sensor.
- *
- * Unlike the data event values, these other event values don't have any
- * mapping to sensor types.
- */
-#define CHRE_EVENT_SENSOR_OTHER_EVENTS_BASE \
- (CHRE_EVENT_SENSOR_FIRST_EVENT + 0x0100)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorSamplingStatusEvent
- *
- * Indicates that the interval and/or the latency which this sensor is
- * sampling at has changed.
- */
-#define CHRE_EVENT_SENSOR_SAMPLING_CHANGE \
- (CHRE_EVENT_SENSOR_OTHER_EVENTS_BASE + 0)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorThreeAxisData
- *
- * The data can be interpreted using the 'x_bias', 'y_bias', and 'z_bias'
- * field within 'readings', or by the 3D array 'bias' (bias[0] == x_bias;
- * bias[1] == y_bias; bias[2] == z_bias).
- *
- * All values are in radians/second and measure the rate of rotation
- * around the X, Y and Z axis.
- */
-#define CHRE_EVENT_SENSOR_GYROSCOPE_BIAS_INFO \
- (CHRE_EVENT_SENSOR_OTHER_EVENTS_BASE + 1)
-
-/**
- * nanoappHandleEvent argument: struct chreSensorThreeAxisData
- *
- * The data can be interpreted using the 'x_bias', 'y_bias', and 'z_bias'
- * field within 'readings', or by the 3D array 'bias' (bias[0] == x_bias;
- * bias[1] == y_bias; bias[2] == z_bias).
- *
- * All values are in micro-Tesla (uT) and measure the geomagnetic
- * field in the X, Y and Z axis.
- */
-#define CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_BIAS_INFO \
- (CHRE_EVENT_SENSOR_OTHER_EVENTS_BASE + 2)
-
-
-#if CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_BIAS_INFO > CHRE_EVENT_SENSOR_LAST_EVENT
-#error Too many sensor events.
-#endif
-
-
-/**
- * Value indicating we want the smallest possible latency for a sensor.
- *
- * This literally translates to 0 nanoseconds for the chreSensorConfigure()
- * argument. While we won't get exactly 0 nanoseconds, the CHRE will
- * queue up this event As Soon As Possible.
- */
-#define CHRE_SENSOR_LATENCY_ASAP UINT64_C(0)
-
-/**
- * Special value indicating non-importance of the interval.
- *
- * @see chreSensorConfigure
- * @see chreSensorSamplingStatus
- */
-#define CHRE_SENSOR_INTERVAL_DEFAULT UINT64_C(-1)
-
-/**
- * Special value indicating non-importance of the latency.
- *
- * @see chreSensorConfigure
- * @see chreSensorSamplingStatus
- */
-#define CHRE_SENSOR_LATENCY_DEFAULT UINT64_C(-1)
-
-
-// This is used to define elements of enum chreSensorConfigureMode.
-#define CHRE_SENSOR_CONFIGURE_RAW_POWER_ON (1 << 0)
-
-// This is used to define elements of enum chreSensorConfigureMode.
-#define CHRE_SENSOR_CONFIGURE_RAW_REPORT_CONTINUOUS (1 << 1)
-
-// This is used to define elements of enum chreSensorConfigureMode.
-#define CHRE_SENSOR_CONFIGURE_RAW_REPORT_ONE_SHOT (2 << 1)
-
-
-
-/**
- * Modes we can configure a sensor to use.
- *
- * Our mode will affect not only how/if we receive events, but
- * also whether or not the sensor will be powered on our behalf.
- *
- * @see chreSensorConfigure
- */
-enum chreSensorConfigureMode {
- /**
- * Get events from the sensor.
- *
- * Power: Turn on if not already on.
- * Reporting: Continuous. Send each new event as it comes (subject to
- * batching and latency).
- */
- CHRE_SENSOR_CONFIGURE_MODE_CONTINUOUS =
- (CHRE_SENSOR_CONFIGURE_RAW_POWER_ON |
- CHRE_SENSOR_CONFIGURE_RAW_REPORT_CONTINUOUS),
-
- /**
- * Get a single event from the sensor and then become DONE.
- *
- * Once the event is sent, the sensor automatically
- * changes to CHRE_SENSOR_CONFIGURE_MODE_DONE mode.
- *
- * Power: Turn on if not already on.
- * Reporting: One shot. Send the next event and then be DONE.
- */
- CHRE_SENSOR_CONFIGURE_MODE_ONE_SHOT =
- (CHRE_SENSOR_CONFIGURE_RAW_POWER_ON |
- CHRE_SENSOR_CONFIGURE_RAW_REPORT_ONE_SHOT),
-
- /**
- * Get events from a sensor that are generated for other apps.
- *
- * This is considered passive because the sensor will not be powered
- * on for the sake of our nanoapp. If and only if another app in
- * the system has requested this sensor power on will we get events.
- *
- * This can be useful for something which is interested in seeing data,
- * but not interested enough to be responsible for powering on the sensor.
- *
- * Power: Do not power the sensor on our behalf.
- * Reporting: Continuous. Send each event as it comes.
- */
- CHRE_SENSOR_CONFIGURE_MODE_PASSIVE_CONTINUOUS =
- CHRE_SENSOR_CONFIGURE_RAW_REPORT_CONTINUOUS,
-
- /**
- * Get a single event from a sensor that is generated for other apps.
- *
- * See CHRE_SENSOR_CONFIGURE_MODE_PASSIVE_CONTINUOUS for more details
- * on what be "passive" means.
- *
- * Power: Do not power the sensor on our behalf.
- * Reporting: One shot. Send only the next event and then be DONE.
- */
- CHRE_SENSOR_CONFIGURE_MODE_PASSIVE_ONE_SHOT =
- CHRE_SENSOR_CONFIGURE_RAW_REPORT_ONE_SHOT,
-
- /**
- * Indicate we are done using this sensor and no longer interested in it.
- *
- * See chreSensorConfigure for more details on expressing interest or
- * lack of interest in a sensor.
- *
- * Power: Do not power the sensor on our behalf.
- * Reporting: None.
- */
- CHRE_SENSOR_CONFIGURE_MODE_DONE = 0,
-};
-
-/**
- * A structure containing information about a Sensor.
- *
- * See documentation of individual fields below.
- */
-struct chreSensorInfo {
- /**
- * The name of the sensor.
- *
- * A text name, useful for logging/debugging, describing the Sensor. This
- * is not assured to be unique (i.e. there could be multiple sensors with
- * the name "Temperature").
- *
- * CHRE implementations may not set this as NULL. An empty
- * string, while discouraged, is legal.
- */
- const char *sensorName;
-
- /**
- * One of the CHRE_SENSOR_TYPE_* defines above.
- */
- uint8_t sensorType;
-
- /**
- * Flag indicating if this sensor is on-change.
- *
- * An on-change sensor only generates events when underlying state
- * changes. This has the same meaning as on-change does in the Android
- * Sensors HAL. See sensors.h for much more details.
- *
- * A value of 1 indicates this is on-change. 0 indicates this is not
- * on-change.
- */
- uint8_t isOnChange : 1;
-
- /**
- * Flag indicating if this sensor is one-shot.
- *
- * A one-shot sensor only triggers a single event, and then automatically
- * disables itself.
- *
- * A value of 1 indicates this is on-change. 0 indicates this is not
- * on-change.
- */
- uint8_t isOneShot : 1;
- uint8_t unusedFlags : 6;
-};
-
-/**
- * Header used in every structure containing batchable data from a sensor.
- *
- * The typical structure for sensor data looks like:
- *
- * struct chreSensorTypeData {
- * struct chreSensorDataHeader header;
- * struct chreSensorTypeSampleData {
- * uint32_t timestampDelta;
- * union {
- * <type> value;
- * <type> interpretation0;
- * <type> interpretation1;
- * };
- * } readings[1];
- * };
- *
- * Despite 'readings' being declared as an array of 1 element,
- * an instance of the struct will actually have 'readings' as
- * an array of header.readingCount elements (which may be 1).
- * The 'timestampDelta' is in relation to the previous 'readings' (or
- * the baseTimestamp for readings[0]. So,
- * Timestamp for readings[0] == header.baseTimestamp +
- * readings[0].timestampDelta.
- * Timestamp for readings[1] == timestamp for readings[0] +
- * readings[1].timestampDelta.
- * And thus, in order to determine the timestamp for readings[N], it's
- * necessary to process through all of the N-1 readings. The advantage,
- * though, is that our entire readings can span an arbitrary length of time,
- * just as long as any two consecutive readings differ by no more than
- * 4.295 seconds (timestampDelta, like all time in the CHRE, is in
- * nanoseconds).
- *
- * If a sensor has batched readings where two consecutive readings differ by
- * more than 4.295 seconds, the CHRE will split them across multiple
- * instances of the struct, and send multiple events.
- *
- * The value from the sensor is typically expressed in a union,
- * allowing a generic access to the data ('value'), along with
- * differently named access giving a more natural interpretation
- * of the data for the specific sensor types which use this
- * structure. This allows, for example, barometer code to
- * reference readings[N].pressure, and an ambient light sensor
- * to reference readings[N].light, while both use the same
- * structure.
- */
-struct chreSensorDataHeader {
- /**
- * The base timestamp, in nanoseconds.
- */
- uint64_t baseTimestamp;
-
- /**
- * The handle of the sensor producing this event.
- */
- uint32_t sensorHandle;
-
- /**
- * The number elements in the 'readings' array.
- *
- * This must be at least 1.
- */
- uint16_t readingCount;
-
- /**
- * Reserved bytes.
- *
- * These must be 0.
- */
- uint8_t reserved[2];
-};
-
-/**
- * Data for a sensor which reports on three axes.
- *
- * This is used by CHRE_EVENT_SENSOR_ACCELEROMETER_DATA,
- * CHRE_EVENT_SENSOR_GYROSCOPE_DATA,
- * CHRE_EVENT_SENSOR_GYROSCOPE_BIAS_INFO,
- * CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_DATA, and
- * CHRE_EVENT_SENSOR_GEOMAGNETIC_FIELD_BIAS_INFO.
- */
-struct chreSensorThreeAxisData {
- /**
- * @see chreSensorDataHeader
- */
- struct chreSensorDataHeader header;
- struct chreSensorThreeAxisSampleData {
- /**
- * @see chreSensorDataHeader
- */
- uint32_t timestampDelta;
- union {
- float values[3];
- float v[3];
- struct {
- float x;
- float y;
- float z;
- };
- float bias[3];
- struct {
- float x_bias;
- float y_bias;
- float z_bias;
- };
- };
- } readings[1];
-};
-
-/**
- * Data from a sensor where we only care about a event occurring.
- *
- * This is a bit unusual in that our readings have no data in addition
- * to the timestamp. But since we only care about the occurrence, we
- * don't need to know anything else.
- *
- * Used by: CHRE_EVENT_SENSOR_INSTANT_MOTION_DETECT_DATA and
- * CHRE_EVENT_SENSOR_STATIONARY_DETECT_DATA.
- */
-struct chreSensorOccurrenceData {
- struct chreSensorDataHeader header;
- struct chreSensorOccurenceSampleData {
- uint32_t timestampDelta;
- // This space intentionally left blank.
- // Only the timestamp is meaningful here, there
- // is no additional data.
- } readings[1];
-};
-
-/**
- * CHRE_EVENT_SENSOR_LIGHT_DATA and CHRE_EVENT_SENSOR_PRESSURE_DATA.
- */
-struct chreSensorFloatData {
- struct chreSensorDataHeader header;
- struct chreSensorFloatSampleData {
- uint32_t timestampDelta;
- union {
- float value;
- float light; // lux
- float pressure; // hectopascals (hPa)
- };
- } readings[1];
-};
-
-/**
- * CHRE_EVENT_SENSOR_PROXIMITY_DATA.
- */
-struct chreSensorByteData {
- struct chreSensorDataHeader header;
- struct chreSensorByteSampleData {
- uint32_t timestampDelta;
- union {
- uint8_t value;
- struct {
- uint8_t isNear : 1;
- uint8_t invalid : 1;
- uint8_t padding0 : 6;
- };
- };
- } readings[1];
-};
-
-/**
- * The status of a sensor's sampling configuration.
- */
-struct chreSensorSamplingStatus {
- /**
- * The interval, in nanoseconds, at which the sensor is now sampling.
- *
- * If this is CHRE_SENSOR_INTERVAL_DEFAULT, then a sampling interval
- * isn't meaningful for this sensor.
- *
- * Note that if 'enabled' is false, this value is not meaningful.
- */
- uint64_t interval;
-
- /**
- * The latency, in nanoseconds, at which the senor is now reporting.
- *
- * If this is CHRE_SENSOR_LATENCY_DEFAULT, then a latency
- * isn't meaningful for this sensor.
- *
- * Note that if 'enabled' is false, this value is not meaningful.
- */
- uint64_t latency;
-
- /**
- * True if the sensor is actively powered and sampling; false otherwise.
- */
- bool enabled;
-};
-
-/**
- * The nanoappHandleEvent argument for CHRE_EVENT_SENSOR_SAMPLING_CHANGE.
- *
- * Note that only at least one of 'interval' or 'latency' must be
- * different than it was prior to this event. Thus, one of these
- * fields may be (but doesn't need to be) the same as before.
- */
-struct chreSensorSamplingStatusEvent {
- /**
- * The handle of the sensor which has experienced a change in sampling.
- */
- uint32_t sensorHandle;
-
- /**
- * The new sampling status.
- *
- * At least one of the field in this struct will be different from
- * the previous sampling status event.
- */
- struct chreSensorSamplingStatus status;
-};
-
-
-
-/**
- * Find the default sensor for a given sensor type.
- *
- * @param sensorType One of the CHRE_SENSOR_TYPE_* constants.
- * @param handle If a sensor is found, then the memory will be filled with
- * the value for the sensor's handle. This argument must be non-NULL.
- * @returns true if a sensor was found, false otherwise.
- */
-bool chreSensorFindDefault(uint8_t sensorType, uint32_t *handle);
-
-/**
- * Get the chreSensorInfo struct for a given sensor.
- *
- * @param sensorHandle The sensor handle, as obtained from
- * chreSensorFindDefault() or passed to nanoappHandleEvent().
- * @param info If the sensor is valid, then this memory will be filled with
- * the SensorInfo contents for this sensor. This argument must be
- * non-NULL.
- * @returns true if the senor handle is valid and 'info' was filled in;
- * false otherwise.
- */
-bool chreGetSensorInfo(uint32_t sensorHandle, struct chreSensorInfo *info);
-
-/**
- * Get the chreSensorSamplingStatus struct for a given sensor.
- *
- * Note that this may be different from what was requested in
- * chreSensorConfigure(), for multiple reasons. It's possible that the sensor
- * does not exactly support the interval requested in chreSensorConfigure(), so
- * a faster one was chosen.
- *
- * It's also possible that there is another user of this sensor who has
- * requested a faster interval and/or lower latency. This latter scenario
- * should be noted, because it means the sensor rate can change due to no
- * interaction from this nanoapp. Note that the
- * CHRE_EVENT_SENSOR_SAMPLING_CHANGE event will trigger in this case, so it's
- * not necessary to poll for such a change.
- *
- * @param sensorHandle The sensor handle, as obtained from
- * chreSensorFindDefault() or passed to nanoappHandleEvent().
- * @param status If the sensor is valid, then this memory will be filled with
- * the sampling status contents for this sensor. This argument must be
- * non-NULL.
- * @returns true if the senor handle is valid and 'status' was filled in;
- * false otherwise.
- */
-bool chreGetSensorSamplingStatus(uint32_t sensorHandle,
- struct chreSensorSamplingStatus *status);
-
-/**
- * Configures a given sensor at a specific interval and latency and mode.
- *
- * If this sensor's chreSensorInfo has isOneShot set to 1,
- * then the mode must be one of the ONE_SHOT modes, or this method will fail.
- *
- * The CHRE wants to power as few sensors as possible, in keeping with its
- * low power design. As such, it only turns on sensors when there are clients
- * actively interested in that sensor data, and turns off sensors as soon as
- * there are no clients interested in them. Calling this method generally
- * indicates an interest, and using CHRE_SENSOR_CONFIGURE_MODE_DONE shows
- * when we are no longer interested.
- *
- * Thus, each initial Configure of a sensor (per nanoapp) needs to eventually
- * have a DONE call made, either directly or on its behalf. Subsequent calls
- * to a Configure method within the same nanoapp, when there has been no DONE
- * in between, still only require a single DONE call.
- *
- * For example, the following is valid usage:
- * <code>
- * chreSensorConfigure(myHandle, mode, interval0, latency0);
- * [...]
- * chreSensorConfigure(myHandle, mode, interval1, latency0);
- * [...]
- * chreSensorConfigure(myHandle, mode, interval1, latency1);
- * [...]
- * chreSensorConfigureModeOnly(myHandle, CHRE_SENSOR_CONFIGURE_MODE_DONE);
- * </code>
- *
- * The first call to Configure is the one which creates the requirement
- * to eventually call with DONE. The subsequent calls are just changing the
- * interval/latency. They have not changed the fact that this nanoapp is
- * still interested in output from the sensor 'myHandle'. Thus, only one
- * single call for DONE is needed.
- *
- * There is a special case. One-shot sensors, sensors which
- * just trigger a single event and never trigger again, implicitly go into
- * DONE mode after that single event triggers. Thus, the
- * following are legitimate usages:
- * <code>
- * chreSensorConfigure(myHandle, MODE_ONE_SHOT, rate, latency);
- * [...]
- * [myHandle triggers an event]
- * [no need to configure to DONE].
- * </code>
- *
- * And:
- * <code>
- * chreSensorConfigure(myHandle, MODE_ONE_SHOT, rate, latency);
- * [...]
- * chreSensorConfigureModeOnly(myHandle, MODE_DONE);
- * [we cancelled myHandle before it ever triggered an event]
- * </code>
- *
- * Note that while PASSIVE modes, by definition, don't express
- * an interest in powering the sensor, DONE is still necessary
- * to silence the event reporting.
- *
- * @param sensorHandle The handle to the sensor, as obtained from
- * chreSensorFindDefault().
- * @param mode The mode to use. See descriptions within the
- * chreSensorConfigureMode enum.
- * @param interval The interval, in nanoseconds, at which we want events from
- * the sensor. On success, the sensor will be set to 'interval', or a value
- * less than 'interval'. There is a special value
- * CHRE_SENSOR_INTERVAL_DEFAULT, in which we don't express a preference for
- * the interval, and allow the sensor to chose what it wants. Note that
- * due to batching, we may receive events less frequently than
- * 'interval'.
- * @param latency The maximum latency, in nanoseconds, allowed before the
- * CHRE begins delivery of an event. This will control how many events
- * can be queued by the sensor before requiring a delivery event.
- * Latency is defined as the "timestamp when event is queued by the CHRE"
- * minus "timestamp of oldest unsent data reading".
- * There is a special value CHRE_SENSOR_LATENCY_DEFAULT, in which we don't
- * express a preference for the latency, and allow the sensor to chose what
- * it wants.
- * Note that there is no assurance of how long it will take an event to
- * get through a CHRE's queueing system, and thus there is no ability to
- * request a minimum time from the occurrence of a phenomenon to when the
- * nanoapp receives the information. The current CHRE API has no
- * real-time elements, although future versions may introduce some to
- * help with this issue.
- * @returns true if the configuration succeeded, false otherwise.
- *
- * @see chreSensorConfigureMode
- * @see chreSensorFindDefault
- * @see chreSensorInfo
- */
-bool chreSensorConfigure(uint32_t sensorHandle,
- enum chreSensorConfigureMode mode,
- uint64_t interval, uint64_t latency);
-
-/**
- * Short cut for chreSensorConfigure where we only want to change the mode.
- *
- * @see chreSensorConfigure
- */
-static inline bool chreSensorConfigureModeOnly(
- uint32_t sensorHandle, enum chreSensorConfigureMode mode) {
- return chreSensorConfigure(sensorHandle,
- mode,
- CHRE_SENSOR_INTERVAL_DEFAULT,
- CHRE_SENSOR_LATENCY_DEFAULT);
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CHRE_SENSOR_H_ */
-
diff --git a/inc/chre/version.h b/inc/chre/version.h
deleted file mode 100644
index ae6b14ca..00000000
--- a/inc/chre/version.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHRE_VERSION_H_
-#define _CHRE_VERSION_H_
-
-/**
- * Definitions and methods for the versioning of the Context Hub Runtime
- * Environment.
- *
- * The CHRE API versioning pertains to all the chre_*.h files and chre.h.
- */
-
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Value for version 0.1 of the Context Hub Runtime Environment API interface.
- *
- * This is a legacy version. Version 1.0 is considered the first official
- * version of the API.
- *
- * @see CHRE_API_VERSION
- */
-#define CHRE_API_VERSION_0_1 UINT32_C(0x00010000)
-
-/**
- * Value for version 1.0 of the Context Hub Runtime Environment API interface.
- *
- * The version of the CHRE API which shipped with the Android Nougat release.
- *
- * @see CHRE_API_VERSION
- */
-#define CHRE_API_VERSION_1_0 UINT32_C(0x01000000)
-
-/**
- * Major and Minor Version of this Context Hub Runtime Environment API.
- *
- * The major version changes when there is an incompatible API change.
- *
- * The minor version changes when there is an addition in functionality
- * in a backwards-compatible manner.
- *
- * We define the version number as an unsigned 32-bit value. The most
- * significant byte is the Major Version. The second-most significant byte
- * is the Minor Version. The two least significant bytes are the Patch
- * Version. The Patch Version is not defined by this header API, but
- * is provided by a specific CHRE implementation (see chreGetVersion()).
- *
- * Note that version numbers can always be numerically compared with
- * expected results, so 1.0.0 < 1.0.4 < 1.1.0 < 2.0.300 < 3.5.0.
- */
-#define CHRE_API_VERSION CHRE_API_VERSION_1_0
-
-
-/**
- * Get the API version the CHRE implementation was compiled against.
- *
- * This is not necessarily the CHRE_API_VERSION in the header the nanoapp was
- * built against, and indeed may not have even appeared in the context_hub_os.h
- * header which this nanoapp was built against.
- *
- * By definition, this will have the two least significant bytes set to 0,
- * and only contain the major and minor version number.
- *
- * @returns The API version.
- */
-uint32_t chreGetApiVersion(void);
-
-/**
- * Get the version of this CHRE implementation.
- *
- * By definition, ((chreGetApiVersion() & UINT32_C(0xFFFF0000)) ==
- * (chreGetVersion() & UINT32_C(0xFFFF0000))).
- *
- * The Patch Version, in the lower two bytes, only have meaning in context
- * of this specific platform ID. It is increased by the platform every time
- * a backwards-compatible bug fix is released.
- *
- * @returns The version.
- *
- * @see chreGetPlatformId()
- */
-uint32_t chreGetVersion(void);
-
-/**
- * Get the Platform ID of this CHRE.
- *
- * The most significant five bytes are the vendor ID as set out by the
- * NANOAPP_VENDOR convention in context_hub.h, as used by nanoapp IDs.
- *
- * The least significant three bytes are set by the vendor, but must be
- * unique for each different CHRE implementation/hardware that the vendor
- * supplies.
- *
- * The idea is that in the case of known bugs in the field, a new nanoapp could
- * be shipped with a workaround that would use this value, and chreGetVersion(),
- * to have code that can conditionally work around the bug on a buggy version.
- * Thus, we require this uniqueness to allow such a setup to work.
- *
- * @returns The platform ID.
- */
-uint64_t chreGetPlatformId(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CHRE_VERSION_H_ */
-