Loading include/android/sensor.h +95 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ typedef struct AHardwareBuffer AHardwareBuffer; #define ASENSOR_RESOLUTION_INVALID (nanf("")) #define ASENSOR_FIFO_COUNT_INVALID (-1) #define ASENSOR_DELAY_INVALID INT32_MIN #define ASENSOR_INVALID (-1) /* (Keep in sync with hardware/sensors-base.h and Sensor.java.) */ Loading Loading @@ -207,6 +208,35 @@ enum { * {@link ASENSOR_TYPE_HEART_BEAT} */ ASENSOR_TYPE_HEART_BEAT = 31, /** * This sensor type is for delivering additional sensor information aside * from sensor event data. * * Additional information may include: * - {@link ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE} * - {@link ASENSOR_ADDITIONAL_INFO_SAMPLING} * - {@link ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT} * - {@link ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY} * - {@link ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION} * * This type will never bind to a sensor. In other words, no sensor in the * sensor list can have the type {@link ASENSOR_TYPE_ADDITIONAL_INFO}. * * If a device supports the sensor additional information feature, it will * report additional information events via {@link ASensorEvent} and will * have {@link ASensorEvent#type} set to * {@link ASENSOR_TYPE_ADDITIONAL_INFO} and {@link ASensorEvent#sensor} set * to the handle of the reporting sensor. * * Additional information reports consist of multiple frames ordered by * {@link ASensorEvent#timestamp}. The first frame in the report will have * a {@link AAdditionalInfoEvent#type} of * {@link ASENSOR_ADDITIONAL_INFO_BEGIN}, and the last frame in the report * will have a {@link AAdditionalInfoEvent#type} of * {@link ASENSOR_ADDITIONAL_INFO_END}. * */ ASENSOR_TYPE_ADDITIONAL_INFO = 33, /** * {@link ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT} */ Loading Loading @@ -273,6 +303,51 @@ enum { ASENSOR_DIRECT_CHANNEL_TYPE_HARDWARE_BUFFER = 2 }; /** * Sensor Additional Info Types. * * Used to populate {@link AAdditionalInfoEvent#type}. */ enum { /** Marks the beginning of additional information frames */ ASENSOR_ADDITIONAL_INFO_BEGIN = 0, /** Marks the end of additional information frames */ ASENSOR_ADDITIONAL_INFO_END = 1, /** * Estimation of the delay that is not tracked by sensor timestamps. This * includes delay introduced by sensor front-end filtering, data transport, * etc. * float[2]: delay in seconds, standard deviation of estimated value */ ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY = 0x10000, /** float: Celsius temperature */ ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE, /** * First three rows of a homogeneous matrix, which represents calibration to * a three-element vector raw sensor reading. * float[12]: 3x4 matrix in row major order */ ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION, /** * Location and orientation of sensor element in the device frame: origin is * the geometric center of the mobile device screen surface; the axis * definition corresponds to Android sensor definitions. * float[12]: 3x4 matrix in row major order */ ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT, /** * float[2]: raw sample period in seconds, * standard deviation of sampling period */ ASENSOR_ADDITIONAL_INFO_SAMPLING, }; /* * A few useful constants */ Loading Loading @@ -341,7 +416,7 @@ typedef struct ADynamicSensorEvent { int32_t handle; } ADynamicSensorEvent; typedef struct { typedef struct AAdditionalInfoEvent { int32_t type; int32_t serial; union { Loading Loading @@ -444,6 +519,7 @@ struct ASensor; * - ASensor_getStringType() * - ASensor_getReportingMode() * - ASensor_isWakeUpSensor() * - ASensor_getHandle() */ typedef struct ASensor ASensor; /** Loading Loading @@ -785,6 +861,24 @@ bool ASensor_isDirectChannelTypeSupported(ASensor const* sensor, int channelType int ASensor_getHighestDirectReportRateLevel(ASensor const* sensor) __INTRODUCED_IN(26); #endif /* __ANDROID_API__ >= 26 */ #if __ANDROID_API__ >= __ANDROID_API_Q__ /** * Returns the sensor's handle. * * The handle identifies the sensor within the system and is included in the * {@link ASensorEvent#sensor} field of sensor events, including those sent with type * {@link ASENSOR_TYPE_ADDITIONAL_INFO}. * * A sensor's handle is able to be used to map {@link ASENSOR_TYPE_ADDITIONAL_INFO} events to the * sensor that generated the event. * * It is important to note that the value returned by {@link ASensor_getHandle} is not the same as * the value returned by the Java API {@link android.hardware.Sensor#getId} and no mapping exists * between the values. */ int ASensor_getHandle(ASensor const* sensor) __INTRODUCED_IN(__ANDROID_API_Q__); #endif /* __ANDROID_API__ >= ANDROID_API_Q__ */ #ifdef __cplusplus }; #endif Loading Loading
include/android/sensor.h +95 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ typedef struct AHardwareBuffer AHardwareBuffer; #define ASENSOR_RESOLUTION_INVALID (nanf("")) #define ASENSOR_FIFO_COUNT_INVALID (-1) #define ASENSOR_DELAY_INVALID INT32_MIN #define ASENSOR_INVALID (-1) /* (Keep in sync with hardware/sensors-base.h and Sensor.java.) */ Loading Loading @@ -207,6 +208,35 @@ enum { * {@link ASENSOR_TYPE_HEART_BEAT} */ ASENSOR_TYPE_HEART_BEAT = 31, /** * This sensor type is for delivering additional sensor information aside * from sensor event data. * * Additional information may include: * - {@link ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE} * - {@link ASENSOR_ADDITIONAL_INFO_SAMPLING} * - {@link ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT} * - {@link ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY} * - {@link ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION} * * This type will never bind to a sensor. In other words, no sensor in the * sensor list can have the type {@link ASENSOR_TYPE_ADDITIONAL_INFO}. * * If a device supports the sensor additional information feature, it will * report additional information events via {@link ASensorEvent} and will * have {@link ASensorEvent#type} set to * {@link ASENSOR_TYPE_ADDITIONAL_INFO} and {@link ASensorEvent#sensor} set * to the handle of the reporting sensor. * * Additional information reports consist of multiple frames ordered by * {@link ASensorEvent#timestamp}. The first frame in the report will have * a {@link AAdditionalInfoEvent#type} of * {@link ASENSOR_ADDITIONAL_INFO_BEGIN}, and the last frame in the report * will have a {@link AAdditionalInfoEvent#type} of * {@link ASENSOR_ADDITIONAL_INFO_END}. * */ ASENSOR_TYPE_ADDITIONAL_INFO = 33, /** * {@link ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT} */ Loading Loading @@ -273,6 +303,51 @@ enum { ASENSOR_DIRECT_CHANNEL_TYPE_HARDWARE_BUFFER = 2 }; /** * Sensor Additional Info Types. * * Used to populate {@link AAdditionalInfoEvent#type}. */ enum { /** Marks the beginning of additional information frames */ ASENSOR_ADDITIONAL_INFO_BEGIN = 0, /** Marks the end of additional information frames */ ASENSOR_ADDITIONAL_INFO_END = 1, /** * Estimation of the delay that is not tracked by sensor timestamps. This * includes delay introduced by sensor front-end filtering, data transport, * etc. * float[2]: delay in seconds, standard deviation of estimated value */ ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY = 0x10000, /** float: Celsius temperature */ ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE, /** * First three rows of a homogeneous matrix, which represents calibration to * a three-element vector raw sensor reading. * float[12]: 3x4 matrix in row major order */ ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION, /** * Location and orientation of sensor element in the device frame: origin is * the geometric center of the mobile device screen surface; the axis * definition corresponds to Android sensor definitions. * float[12]: 3x4 matrix in row major order */ ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT, /** * float[2]: raw sample period in seconds, * standard deviation of sampling period */ ASENSOR_ADDITIONAL_INFO_SAMPLING, }; /* * A few useful constants */ Loading Loading @@ -341,7 +416,7 @@ typedef struct ADynamicSensorEvent { int32_t handle; } ADynamicSensorEvent; typedef struct { typedef struct AAdditionalInfoEvent { int32_t type; int32_t serial; union { Loading Loading @@ -444,6 +519,7 @@ struct ASensor; * - ASensor_getStringType() * - ASensor_getReportingMode() * - ASensor_isWakeUpSensor() * - ASensor_getHandle() */ typedef struct ASensor ASensor; /** Loading Loading @@ -785,6 +861,24 @@ bool ASensor_isDirectChannelTypeSupported(ASensor const* sensor, int channelType int ASensor_getHighestDirectReportRateLevel(ASensor const* sensor) __INTRODUCED_IN(26); #endif /* __ANDROID_API__ >= 26 */ #if __ANDROID_API__ >= __ANDROID_API_Q__ /** * Returns the sensor's handle. * * The handle identifies the sensor within the system and is included in the * {@link ASensorEvent#sensor} field of sensor events, including those sent with type * {@link ASENSOR_TYPE_ADDITIONAL_INFO}. * * A sensor's handle is able to be used to map {@link ASENSOR_TYPE_ADDITIONAL_INFO} events to the * sensor that generated the event. * * It is important to note that the value returned by {@link ASensor_getHandle} is not the same as * the value returned by the Java API {@link android.hardware.Sensor#getId} and no mapping exists * between the values. */ int ASensor_getHandle(ASensor const* sensor) __INTRODUCED_IN(__ANDROID_API_Q__); #endif /* __ANDROID_API__ >= ANDROID_API_Q__ */ #ifdef __cplusplus }; #endif Loading