Merge "Add gralloc1 flags for direct mode sensors and SSBO/UBO buffers."
diff --git a/include/hardware/bt_av.h b/include/hardware/bt_av.h
index d0db96d..e5f7b31 100644
--- a/include/hardware/bt_av.h
+++ b/include/hardware/bt_av.h
@@ -45,16 +45,21 @@
*/
typedef enum {
BTAV_A2DP_CODEC_INDEX_SOURCE_MIN = 0,
- BTAV_A2DP_CODEC_INDEX_SOURCE_SBC = 0,
- /* Add an entry for each new source codec here */
+ // Add an entry for each source codec here.
+ // NOTE: The values should be same as those listed in the following file:
+ // BluetoothCodecConfig.java
+ BTAV_A2DP_CODEC_INDEX_SOURCE_SBC = 0,
+ BTAV_A2DP_CODEC_INDEX_SOURCE_APTX,
+ BTAV_A2DP_CODEC_INDEX_SOURCE_APTX_HD,
+ BTAV_A2DP_CODEC_INDEX_SOURCE_LDAC,
BTAV_A2DP_CODEC_INDEX_SOURCE_MAX,
BTAV_A2DP_CODEC_INDEX_SINK_MIN = BTAV_A2DP_CODEC_INDEX_SOURCE_MAX,
- BTAV_A2DP_CODEC_INDEX_SINK_SBC = BTAV_A2DP_CODEC_INDEX_SINK_MIN,
- /* Add an entry for each new sink codec here */
+ // Add an entry for each sink codec here
+ BTAV_A2DP_CODEC_INDEX_SINK_SBC = BTAV_A2DP_CODEC_INDEX_SINK_MIN,
BTAV_A2DP_CODEC_INDEX_SINK_MAX,
diff --git a/include/hardware/camera_common.h b/include/hardware/camera_common.h
index c74d7bb..7bafa88 100644
--- a/include/hardware/camera_common.h
+++ b/include/hardware/camera_common.h
@@ -143,8 +143,8 @@
#define CAMERA_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION(1, 0) // DEPRECATED
#define CAMERA_DEVICE_API_VERSION_2_0 HARDWARE_DEVICE_API_VERSION(2, 0) // NO LONGER SUPPORTED
#define CAMERA_DEVICE_API_VERSION_2_1 HARDWARE_DEVICE_API_VERSION(2, 1) // NO LONGER SUPPORTED
-#define CAMERA_DEVICE_API_VERSION_3_0 HARDWARE_DEVICE_API_VERSION(3, 0)
-#define CAMERA_DEVICE_API_VERSION_3_1 HARDWARE_DEVICE_API_VERSION(3, 1)
+#define CAMERA_DEVICE_API_VERSION_3_0 HARDWARE_DEVICE_API_VERSION(3, 0) // NO LONGER SUPPORTED
+#define CAMERA_DEVICE_API_VERSION_3_1 HARDWARE_DEVICE_API_VERSION(3, 1) // NO LONGER SUPPORTED
#define CAMERA_DEVICE_API_VERSION_3_2 HARDWARE_DEVICE_API_VERSION(3, 2)
#define CAMERA_DEVICE_API_VERSION_3_3 HARDWARE_DEVICE_API_VERSION(3, 3)
#define CAMERA_DEVICE_API_VERSION_3_4 HARDWARE_DEVICE_API_VERSION(3, 4)
diff --git a/include/hardware/sensors-base.h b/include/hardware/sensors-base.h
index 465b85d..7fc304f 100644
--- a/include/hardware/sensors-base.h
+++ b/include/hardware/sensors-base.h
@@ -16,7 +16,7 @@
enum {
SENSOR_TYPE_META_DATA = 0,
SENSOR_TYPE_ACCELEROMETER = 1,
- SENSOR_TYPE_GEOMAGNETIC_FIELD = 2,
+ SENSOR_TYPE_MAGNETIC_FIELD = 2,
SENSOR_TYPE_ORIENTATION = 3,
SENSOR_TYPE_GYROSCOPE = 4,
SENSOR_TYPE_LIGHT = 5,
@@ -49,6 +49,7 @@
SENSOR_TYPE_DYNAMIC_SENSOR_META = 32,
SENSOR_TYPE_ADDITIONAL_INFO = 33,
SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT = 34,
+ SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED = 35,
SENSOR_TYPE_DEVICE_PRIVATE_BASE = 65536, // 0x10000
};
@@ -58,11 +59,25 @@
SENSOR_FLAG_ON_CHANGE_MODE = 2ull, // 2
SENSOR_FLAG_ONE_SHOT_MODE = 4ull, // 4
SENSOR_FLAG_SPECIAL_REPORTING_MODE = 6ull, // 6
- SENSOR_FLAG_SUPPORTS_DATA_INJECTION = 16ull, // 0x10
+ SENSOR_FLAG_DATA_INJECTION = 16ull, // 0x10
SENSOR_FLAG_DYNAMIC_SENSOR = 32ull, // 0x20
SENSOR_FLAG_ADDITIONAL_INFO = 64ull, // 0x40
+ SENSOR_FLAG_DIRECT_CHANNEL_ASHMEM = 1024ull, // 0x400
+ SENSOR_FLAG_DIRECT_CHANNEL_GRALLOC = 2048ull, // 0x800
+ SENSOR_FLAG_MASK_REPORTING_MODE = 14ull, // 0xE
+ SENSOR_FLAG_MASK_DIRECT_REPORT = 896ull, // 0x380
+ SENSOR_FLAG_MASK_DIRECT_CHANNEL = 3072ull, // 0xC00
};
+typedef enum {
+ SENSOR_FLAG_SHIFT_REPORTING_MODE = 1,
+ SENSOR_FLAG_SHIFT_DATA_INJECTION = 4,
+ SENSOR_FLAG_SHIFT_DYNAMIC_SENSOR = 5,
+ SENSOR_FLAG_SHIFT_ADDITIONAL_INFO = 6,
+ SENSOR_FLAG_SHIFT_DIRECT_REPORT = 7,
+ SENSOR_FLAG_SHIFT_DIRECT_CHANNEL = 10,
+} sensor_flag_shift_t;
+
enum {
SENSOR_STATUS_NO_CONTACT = -1, // (-1)
SENSOR_STATUS_UNRELIABLE = 0,
@@ -93,6 +108,22 @@
AINFO_DEBUGGING_START = 1073741824u, // 0x40000000
} additional_info_type_t;
+typedef enum {
+ SENSOR_DIRECT_RATE_STOP = 0,
+ SENSOR_DIRECT_RATE_NORMAL = 1,
+ SENSOR_DIRECT_RATE_FAST = 2,
+ SENSOR_DIRECT_RATE_VERY_FAST = 3,
+} direct_rate_level_t;
+
+typedef enum {
+ SENSOR_DIRECT_MEM_TYPE_ASHMEM = 1,
+ SENSOR_DIRECT_MEM_TYPE_GRALLOC = 2,
+} direct_mem_type_t;
+
+typedef enum {
+ SENSOR_DIRECT_FMT_SENSORS_EVENT = 1,
+} direct_format_t;
+
#ifdef __cplusplus
}
#endif
diff --git a/include/hardware/sensors.h b/include/hardware/sensors.h
index 08a65f8..807b074 100644
--- a/include/hardware/sensors.h
+++ b/include/hardware/sensors.h
@@ -59,11 +59,10 @@
* Handles must be higher than SENSORS_HANDLE_BASE and must be unique.
* A Handle identifies a given sensors. The handle is used to activate
* and/or deactivate sensors.
- * In this version of the API there can only be 256 handles.
*/
#define SENSORS_HANDLE_BASE 0
-#define SENSORS_HANDLE_BITS 8
-#define SENSORS_HANDLE_COUNT (1<<SENSORS_HANDLE_BITS)
+#define SENSORS_HANDLE_BITS 32
+#define SENSORS_HANDLE_COUNT (1ull<<SENSORS_HANDLE_BITS)
/*
@@ -96,8 +95,10 @@
#define SENSOR_PERMISSION_BODY_SENSORS "android.permission.BODY_SENSORS"
/*
- * Availability: SENSORS_DEVICE_API_VERSION_1_4
- * Sensor HAL modes used in set_operation_mode method
+ * sensor flags legacy names
+ *
+ * please use SENSOR_FLAG_* directly for new implementation.
+ * @see sensor_t
*/
#define SENSOR_FLAG_MASK(nbit, shift) (((1<<(nbit))-1)<<(shift))
@@ -106,64 +107,82 @@
/*
* Mask and shift for reporting mode sensor flags defined above.
*/
-#define REPORTING_MODE_SHIFT (1)
+#define REPORTING_MODE_SHIFT SENSOR_FLAG_SHIFT_REPORTING_MODE
#define REPORTING_MODE_NBIT (3)
-#define REPORTING_MODE_MASK SENSOR_FLAG_MASK(REPORTING_MODE_NBIT, REPORTING_MODE_SHIFT)
- // 0xE
+#define REPORTING_MODE_MASK SENSOR_FLAG_MASK_REPORTING_MODE
/*
* Mask and shift for data_injection mode sensor flags defined above.
*/
-#define DATA_INJECTION_SHIFT (4)
-#define DATA_INJECTION_MASK SENSOR_FLAG_MASK_1(DATA_INJECTION_SHIFT) //0x10
+#define DATA_INJECTION_SHIFT SENSOR_FLAG_SHIFT_DATA_INJECTION
+#define DATA_INJECTION_MASK SENSOR_FLAG_DATA_INJECTION
/*
* Mask and shift for dynamic sensor flag.
*/
-#define DYNAMIC_SENSOR_SHIFT (5)
-#define DYNAMIC_SENSOR_MASK SENSOR_FLAG_MASK_1(DYNAMIC_SENSOR_SHIFT) //0x20
+#define DYNAMIC_SENSOR_SHIFT SENSOR_FLAG_SHIFT_DYNAMIC_SENSOR
+#define DYNAMIC_SENSOR_MASK SENSOR_FLAG_DYNAMIC_SENSOR
/*
* Mask and shift for sensor additional information support.
*/
-#define ADDITIONAL_INFO_SHIFT (6)
-#define ADDITIONAL_INFO_MASK SENSOR_FLAG_MASK_1(ADDITIONAL_INFO_SHIFT) //0x40
+#define ADDITIONAL_INFO_SHIFT SENSOR_FLAG_SHIFT_ADDITIONAL_INFO
+#define ADDITIONAL_INFO_MASK SENSOR_FLAG_ADDITIONAL_INFO
-#define SENSOR_STRING_TYPE_ACCELEROMETER "android.sensor.accelerometer"
-#define SENSOR_TYPE_MAGNETIC_FIELD SENSOR_TYPE_GEOMAGNETIC_FIELD
-#define SENSOR_STRING_TYPE_MAGNETIC_FIELD "android.sensor.magnetic_field"
-#define SENSOR_STRING_TYPE_ORIENTATION "android.sensor.orientation"
-#define SENSOR_STRING_TYPE_GYROSCOPE "android.sensor.gyroscope"
-#define SENSOR_STRING_TYPE_LIGHT "android.sensor.light"
-#define SENSOR_STRING_TYPE_PRESSURE "android.sensor.pressure"
-#define SENSOR_STRING_TYPE_TEMPERATURE "android.sensor.temperature"
-#define SENSOR_STRING_TYPE_PROXIMITY "android.sensor.proximity"
-#define SENSOR_STRING_TYPE_GRAVITY "android.sensor.gravity"
-#define SENSOR_STRING_TYPE_LINEAR_ACCELERATION "android.sensor.linear_acceleration"
-#define SENSOR_STRING_TYPE_ROTATION_VECTOR "android.sensor.rotation_vector"
-#define SENSOR_STRING_TYPE_RELATIVE_HUMIDITY "android.sensor.relative_humidity"
-#define SENSOR_STRING_TYPE_AMBIENT_TEMPERATURE "android.sensor.ambient_temperature"
-#define SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED "android.sensor.magnetic_field_uncalibrated"
-#define SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR "android.sensor.game_rotation_vector"
-#define SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED "android.sensor.gyroscope_uncalibrated"
-#define SENSOR_STRING_TYPE_SIGNIFICANT_MOTION "android.sensor.significant_motion"
-#define SENSOR_STRING_TYPE_STEP_DETECTOR "android.sensor.step_detector"
-#define SENSOR_STRING_TYPE_STEP_COUNTER "android.sensor.step_counter"
-#define SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR "android.sensor.geomagnetic_rotation_vector"
-#define SENSOR_STRING_TYPE_HEART_RATE "android.sensor.heart_rate"
-#define SENSOR_STRING_TYPE_TILT_DETECTOR "android.sensor.tilt_detector"
-#define SENSOR_STRING_TYPE_WAKE_GESTURE "android.sensor.wake_gesture"
-#define SENSOR_STRING_TYPE_GLANCE_GESTURE "android.sensor.glance_gesture"
-#define SENSOR_STRING_TYPE_PICK_UP_GESTURE "android.sensor.pick_up_gesture"
-#define SENSOR_STRING_TYPE_WRIST_TILT_GESTURE "android.sensor.wrist_tilt_gesture"
-#define SENSOR_STRING_TYPE_DEVICE_ORIENTATION "android.sensor.device_orientation"
-#define SENSOR_STRING_TYPE_POSE_6DOF "android.sensor.pose_6dof"
+/*
+ * Legacy alias of SENSOR_TYPE_MAGNETIC_FIELD.
+ *
+ * Previously, the type of a sensor measuring local magnetic field is named
+ * SENSOR_TYPE_GEOMAGNETIC_FIELD and SENSOR_TYPE_MAGNETIC_FIELD is its alias.
+ * SENSOR_TYPE_MAGNETIC_FIELD is redefined as primary name to avoid confusion.
+ * SENSOR_TYPE_GEOMAGNETIC_FIELD is the alias and is deprecating. New implementation must not use
+ * SENSOR_TYPE_GEOMAGNETIC_FIELD.
+ */
+#define SENSOR_TYPE_GEOMAGNETIC_FIELD SENSOR_TYPE_MAGNETIC_FIELD
+
+/*
+ * Sensor string types for Android defined sensor types.
+ *
+ * For Android defined sensor types, string type will be override in sensor service and thus no
+ * longer needed to be added to sensor_t data structure.
+ *
+ * These definitions are going to be removed soon.
+ */
+#define SENSOR_STRING_TYPE_ACCELEROMETER "android.sensor.accelerometer"
+#define SENSOR_STRING_TYPE_MAGNETIC_FIELD "android.sensor.magnetic_field"
+#define SENSOR_STRING_TYPE_ORIENTATION "android.sensor.orientation"
+#define SENSOR_STRING_TYPE_GYROSCOPE "android.sensor.gyroscope"
+#define SENSOR_STRING_TYPE_LIGHT "android.sensor.light"
+#define SENSOR_STRING_TYPE_PRESSURE "android.sensor.pressure"
+#define SENSOR_STRING_TYPE_TEMPERATURE "android.sensor.temperature"
+#define SENSOR_STRING_TYPE_PROXIMITY "android.sensor.proximity"
+#define SENSOR_STRING_TYPE_GRAVITY "android.sensor.gravity"
+#define SENSOR_STRING_TYPE_LINEAR_ACCELERATION "android.sensor.linear_acceleration"
+#define SENSOR_STRING_TYPE_ROTATION_VECTOR "android.sensor.rotation_vector"
+#define SENSOR_STRING_TYPE_RELATIVE_HUMIDITY "android.sensor.relative_humidity"
+#define SENSOR_STRING_TYPE_AMBIENT_TEMPERATURE "android.sensor.ambient_temperature"
+#define SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED "android.sensor.magnetic_field_uncalibrated"
+#define SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR "android.sensor.game_rotation_vector"
+#define SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED "android.sensor.gyroscope_uncalibrated"
+#define SENSOR_STRING_TYPE_SIGNIFICANT_MOTION "android.sensor.significant_motion"
+#define SENSOR_STRING_TYPE_STEP_DETECTOR "android.sensor.step_detector"
+#define SENSOR_STRING_TYPE_STEP_COUNTER "android.sensor.step_counter"
+#define SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR "android.sensor.geomagnetic_rotation_vector"
+#define SENSOR_STRING_TYPE_HEART_RATE "android.sensor.heart_rate"
+#define SENSOR_STRING_TYPE_TILT_DETECTOR "android.sensor.tilt_detector"
+#define SENSOR_STRING_TYPE_WAKE_GESTURE "android.sensor.wake_gesture"
+#define SENSOR_STRING_TYPE_GLANCE_GESTURE "android.sensor.glance_gesture"
+#define SENSOR_STRING_TYPE_PICK_UP_GESTURE "android.sensor.pick_up_gesture"
+#define SENSOR_STRING_TYPE_WRIST_TILT_GESTURE "android.sensor.wrist_tilt_gesture"
+#define SENSOR_STRING_TYPE_DEVICE_ORIENTATION "android.sensor.device_orientation"
+#define SENSOR_STRING_TYPE_POSE_6DOF "android.sensor.pose_6dof"
#define SENSOR_STRING_TYPE_STATIONARY_DETECT "android.sensor.stationary_detect"
#define SENSOR_STRING_TYPE_MOTION_DETECT "android.sensor.motion_detect"
#define SENSOR_STRING_TYPE_HEART_BEAT "android.sensor.heart_beat"
-#define SENSOR_STRING_TYPE_DYNAMIC_SENSOR_META "android.sensor.dynamic_sensor_meta"
-#define SENSOR_STRING_TYPE_ADDITIONAL_INFO "android.sensor.additional_info"
-#define SENSOR_STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT "android.sensor.low_latency_offbody"
+#define SENSOR_STRING_TYPE_DYNAMIC_SENSOR_META "android.sensor.dynamic_sensor_meta"
+#define SENSOR_STRING_TYPE_ADDITIONAL_INFO "android.sensor.additional_info"
+#define SENSOR_STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT "android.sensor.low_latency_offbody"
+#define SENSOR_STRING_TYPE_ACCELEROMETER_UNCALIBRATED "android.sensor.accelerometer_uncalibrated"
/**
* Values returned by the accelerometer in various locations in the universe.
@@ -202,7 +221,7 @@
} sensors_vec_t;
/**
- * uncalibrated gyroscope and magnetometer event data
+ * uncalibrated accelerometer, gyroscope and magnetometer event data
*/
typedef struct {
union {
@@ -326,6 +345,9 @@
/* uncalibrated magnetometer values are in micro-Teslas */
uncalibrated_event_t uncalibrated_magnetic;
+ /* uncalibrated accelerometer values are in meter per second per second (m/s^2) */
+ uncalibrated_event_t uncalibrated_accelerometer;
+
/* heart rate data containing value in bpm and status */
heart_rate_event_t heart_rate;
@@ -448,13 +470,14 @@
*/
uint32_t fifoMaxEventCount;
- /* type of this sensor as a string. Set to corresponding
- * SENSOR_STRING_TYPE_*.
- * When defining an OEM specific sensor or sensor manufacturer specific
- * sensor, use your reserve domain name as a prefix.
- * ex: com.google.glass.onheaddetector
- * For sensors of known type, the android framework might overwrite this
- * string automatically.
+ /* type of this sensor as a string.
+ *
+ * If type is OEM specific or sensor manufacturer specific type
+ * (>=SENSOR_TYPE_DEVICE_PRIVATE_BASE), this string must be defined with reserved domain of
+ * vendor/OEM as a prefix, e.g. com.google.glass.onheaddetector
+ *
+ * For sensors of Android defined types, Android framework will override this value. It is ok to
+ * leave it pointing to an empty string.
*/
const char* stringType;
@@ -500,6 +523,23 @@
void* reserved[2];
};
+/**
+ * Shared memory information for a direct channel
+ */
+struct sensors_direct_mem_t {
+ int type; // enum SENSOR_DIRECT_MEM_...
+ int format; // enum SENSOR_DIRECT_FMT_...
+ size_t size; // size of the memory region, in bytes
+ const struct native_handle *handle; // shared memory handle, which is interpreted differently
+ // depending on type
+};
+
+/**
+ * Direct channel report configuration
+ */
+struct sensors_direct_cfg_t {
+ int rate_level; // enum SENSOR_DIRECT_RATE_...
+};
/*
* sensors_poll_device_t is used with SENSORS_DEVICE_API_VERSION_0_1
@@ -607,7 +647,61 @@
*/
int (*inject_sensor_data)(struct sensors_poll_device_1 *dev, const sensors_event_t *data);
- void (*reserved_procs[7])(void);
+ /*
+ * Register/unregister direct report channel.
+ *
+ * A HAL declares support for direct report by setting non-NULL values for both
+ * register_direct_channel and config_direct_report.
+ *
+ * This function has two operation modes:
+ *
+ * Register: mem != NULL, register a channel using supplied shared memory information. By the
+ * time this function returns, sensors must finish initializing shared memory content
+ * (format dependent, see SENSOR_DIRECT_FMT_*).
+ * Parameters:
+ * mem points to a valid struct sensors_direct_mem_t.
+ * channel_handle is ignored.
+ * Return value:
+ * A handle of channel (>0) when success, which later can be referred in
+ * unregister or config_direct_report call, or error code (<0) if failed
+ * Unregister: mem == NULL, unregister a previously registered channel.
+ * Parameters:
+ * mem set to NULL
+ * channel_handle contains handle of channel to be unregistered
+ * Return value:
+ * 0, even if the channel_handle is invalid, in which case it will be a no-op.
+ */
+ int (*register_direct_channel)(struct sensors_poll_device_1 *dev,
+ const struct sensors_direct_mem_t* mem, int channel_handle);
+
+ /*
+ * Configure direct sensor event report in direct channel.
+ *
+ * Start, modify rate or stop direct report of a sensor in a certain direct channel. A special
+ * case is setting sensor handle -1 to stop means to stop all active sensor report on the
+ * channel specified.
+ *
+ * A HAL declares support for direct report by setting non-NULL values for both
+ * register_direct_channel and config_direct_report.
+ *
+ * Parameters:
+ * sensor_handle sensor to be configured. The sensor has to support direct report
+ * mode by setting flags of sensor_t. Also, direct report mode is only
+ * defined for continuous reporting mode sensors.
+ * channel_handle channel handle to be configured.
+ * config direct report parameters, see sensor_direct_cfg_t.
+ * Return value:
+ * - when sensor is started or sensor rate level is changed: return positive identifier of
+ * sensor in specified channel if successful, otherwise return negative error code.
+ * - when sensor is stopped: return 0 for success or negative error code for failure.
+ */
+ int (*config_direct_report)(struct sensors_poll_device_1 *dev,
+ int sensor_handle, int channel_handle, const struct sensors_direct_cfg_t *config);
+
+ /*
+ * Reserved for future use.
+ */
+ void (*reserved_procs[5])(void);
} sensors_poll_device_1_t;
diff --git a/modules/radio/radio_hw.c b/modules/radio/radio_hw.c
index 63646a4..150d173 100644
--- a/modules/radio/radio_hw.c
+++ b/modules/radio/radio_hw.c
@@ -356,6 +356,7 @@
tuner->program.stereo = false;
else
tuner->program.stereo = false;
+ prepare_metadata(tuner, &tuner->program.metadata, tuner->program.tuned);
event.type = RADIO_EVENT_TUNED;
event.info = tuner->program;
@@ -382,6 +383,7 @@
else
tuner->program.stereo = tuner->config.am.stereo;
tuner->program.signal_strength = 50;
+ prepare_metadata(tuner, &tuner->program.metadata, tuner->program.tuned);
event.type = RADIO_EVENT_TUNED;
event.info = tuner->program;
@@ -394,12 +396,7 @@
(tuner->config.spacings[0] * 5)) % 2;
if (tuner->program.tuned) {
- prepare_metadata(tuner, &tuner->program.metadata, true);
send_command_l(tuner, CMD_ANNOUNCEMENTS, 1000, NULL);
- } else {
- if (tuner->program.metadata != NULL)
- radio_metadata_deallocate(tuner->program.metadata);
- tuner->program.metadata = NULL;
}
tuner->program.signal_strength = 100;
if (tuner->config.type == RADIO_BAND_FM)
@@ -408,6 +405,8 @@
else
tuner->program.stereo =
tuner->program.tuned ? tuner->config.am.stereo : false;
+ prepare_metadata(tuner, &tuner->program.metadata, tuner->program.tuned);
+
event.type = RADIO_EVENT_TUNED;
event.info = tuner->program;
send_meta_data = true;
diff --git a/modules/sensors/multihal.cpp b/modules/sensors/multihal.cpp
index 603a8c6..2810118 100644
--- a/modules/sensors/multihal.cpp
+++ b/modules/sensors/multihal.cpp
@@ -255,9 +255,9 @@
}
}
-// Android L requires sensor HALs to be either 1_0 or 1_3 compliant
+// Android N and hire require sensor HALs to be at least 1_3 compliant
#define HAL_VERSION_IS_COMPLIANT(version) \
- (version == SENSORS_DEVICE_API_VERSION_1_0 || version >= SENSORS_DEVICE_API_VERSION_1_3)
+ (version >= SENSORS_DEVICE_API_VERSION_1_3)
// Returns true if HAL is compliant, false if HAL is not compliant or if handle is invalid
static bool halIsCompliant(sensors_poll_context_t *ctx, int handle) {
diff --git a/tests/camera2/Android.mk b/tests/camera2/Android.mk
index e45f467..d77c18d 100644
--- a/tests/camera2/Android.mk
+++ b/tests/camera2/Android.mk
@@ -25,7 +25,8 @@
libgui \
libsync \
libui \
- libdl
+ libdl \
+ android.hardware.camera.device@3.2
LOCAL_C_INCLUDES += \
system/media/camera/include \
diff --git a/tests/camera2/CameraModuleFixture.h b/tests/camera2/CameraModuleFixture.h
index 71d7dd0..b0d49e2 100644
--- a/tests/camera2/CameraModuleFixture.h
+++ b/tests/camera2/CameraModuleFixture.h
@@ -98,7 +98,7 @@
case CAMERA_DEVICE_API_VERSION_3_0:
case CAMERA_DEVICE_API_VERSION_3_1:
case CAMERA_DEVICE_API_VERSION_3_2:
- *device = new Camera3Device(cameraID);
+ *device = new Camera3Device(String8::format("%d", cameraID));
break;
default:
device->clear();
diff --git a/tests/hardware/struct-offset.cpp b/tests/hardware/struct-offset.cpp
index 10c0895..7f7f2e0 100644
--- a/tests/hardware/struct-offset.cpp
+++ b/tests/hardware/struct-offset.cpp
@@ -116,7 +116,9 @@
CHECK_MEMBER_AT(sensors_poll_device_1_t, batch, 76, 144);
CHECK_MEMBER_AT(sensors_poll_device_1_t, flush, 80, 152);
CHECK_MEMBER_AT(sensors_poll_device_1_t, inject_sensor_data, 84, 160);
- CHECK_MEMBER_AT(sensors_poll_device_1_t, reserved_procs, 88, 168);
+ CHECK_MEMBER_AT(sensors_poll_device_1_t, register_direct_channel, 88, 168);
+ CHECK_MEMBER_AT(sensors_poll_device_1_t, config_direct_report, 92, 176);
+ CHECK_MEMBER_AT(sensors_poll_device_1_t, reserved_procs, 96, 184);
//Types defined in fb.h
CHECK_MEMBER_AT(framebuffer_device_t, common, 0, 0);