Merge "sensor HAL: add device orientation sensor"
diff --git a/include/hardware/audio.h b/include/hardware/audio.h
index 2389c09..29b695c 100644
--- a/include/hardware/audio.h
+++ b/include/hardware/audio.h
@@ -144,6 +144,9 @@
/* Set the HW synchronization source for an output stream. */
#define AUDIO_PARAMETER_STREAM_HW_AV_SYNC "hw_av_sync"
+/* Enable mono audio playback if 1, else should be 0. */
+#define AUDIO_PARAMETER_MONO_OUTPUT "mono_output"
+
/**
* audio codec parameters
*/
diff --git a/include/hardware/bt_av.h b/include/hardware/bt_av.h
index 5252a17..5f7601e 100644
--- a/include/hardware/bt_av.h
+++ b/include/hardware/bt_av.h
@@ -38,13 +38,13 @@
/** Callback for connection state change.
* state will have one of the values from btav_connection_state_t
*/
-typedef void (* btav_connection_state_callback)(btav_connection_state_t state,
+typedef void (* btav_connection_state_callback)(btav_connection_state_t state,
bt_bdaddr_t *bd_addr);
/** Callback for audiopath state change.
* state will have one of the values from btav_audio_state_t
*/
-typedef void (* btav_audio_state_callback)(btav_audio_state_t state,
+typedef void (* btav_audio_state_callback)(btav_audio_state_t state,
bt_bdaddr_t *bd_addr);
/** Callback for audio configuration change.
@@ -57,6 +57,13 @@
uint32_t sample_rate,
uint8_t channel_count);
+/*
+ * Callback for audio focus request to be used only in
+ * case of A2DP Sink. This is required because we are using
+ * AudioTrack approach for audio data rendering.
+ */
+typedef void (* btav_audio_focus_request_callback)(bt_bdaddr_t *bd_addr);
+
/** BT-AV callback structure. */
typedef struct {
/** set to sizeof(btav_callbacks_t) */
@@ -64,17 +71,18 @@
btav_connection_state_callback connection_state_cb;
btav_audio_state_callback audio_state_cb;
btav_audio_config_callback audio_config_cb;
+ btav_audio_focus_request_callback audio_focus_request_cb;
} btav_callbacks_t;
-/**
+/**
* NOTE:
*
* 1. AVRCP 1.0 shall be supported initially. AVRCP passthrough commands
- * shall be handled internally via uinput
+ * shall be handled internally via uinput
*
* 2. A2DP data path shall be handled via a socket pipe between the AudioFlinger
* android_audio_hw library and the Bluetooth stack.
- *
+ *
*/
/** Represents the standard BT-AV interface.
* Used for both the A2DP source and sink interfaces.
@@ -96,6 +104,9 @@
/** Closes the interface. */
void (*cleanup)( void );
+
+ /** Sends Audio Focus State. */
+ void (*audio_focus_state)( int focus_state );
} btav_interface_t;
__END_DECLS
diff --git a/include/hardware/bt_rc.h b/include/hardware/bt_rc.h
index c565c48..1e2c293 100644
--- a/include/hardware/bt_rc.h
+++ b/include/hardware/bt_rc.h
@@ -103,6 +103,36 @@
uint8_t attr_values[BTRC_MAX_APP_SETTINGS];
} btrc_player_settings_t;
+typedef struct {
+ uint8_t val;
+ uint16_t charset_id;
+ uint16_t str_len;
+ uint8_t *p_str;
+} btrc_player_app_ext_attr_val_t;
+
+typedef struct {
+ uint8_t attr_id;
+ uint16_t charset_id;
+ uint16_t str_len;
+ uint8_t *p_str;
+ uint8_t num_val;
+ btrc_player_app_ext_attr_val_t ext_attr_val[BTRC_MAX_APP_ATTR_SIZE];
+} btrc_player_app_ext_attr_t;
+
+typedef struct {
+ uint8_t attr_id;
+ uint8_t num_val;
+ uint8_t attr_val[BTRC_MAX_APP_ATTR_SIZE];
+} btrc_player_app_attr_t;
+
+typedef struct {
+ uint32_t start_item;
+ uint32_t end_item;
+ uint32_t size;
+ uint32_t attrs[BTRC_MAX_ELEM_ATTR_SIZE];
+ uint8_t attr_count;
+} btrc_getfolderitem_t;
+
typedef union
{
btrc_play_status_t play_status;
@@ -264,14 +294,53 @@
typedef void (* btrc_passthrough_rsp_callback) (int id, int key_state);
+typedef void (* btrc_groupnavigation_rsp_callback) (int id, int key_state);
+
typedef void (* btrc_connection_state_callback) (bool state, bt_bdaddr_t *bd_addr);
+typedef void (* btrc_ctrl_getrcfeatures_callback) (bt_bdaddr_t *bd_addr, int features);
+
+typedef void (* btrc_ctrl_setabsvol_cmd_callback) (bt_bdaddr_t *bd_addr, uint8_t abs_vol, uint8_t label);
+
+typedef void (* btrc_ctrl_registernotification_abs_vol_callback) (bt_bdaddr_t *bd_addr, uint8_t label);
+
+typedef void (* btrc_ctrl_setplayerapplicationsetting_rsp_callback) (bt_bdaddr_t *bd_addr,
+ uint8_t accepted);
+
+typedef void (* btrc_ctrl_playerapplicationsetting_callback)(bt_bdaddr_t *bd_addr,
+ uint8_t num_attr,
+ btrc_player_app_attr_t *app_attrs,
+ uint8_t num_ext_attr,
+ btrc_player_app_ext_attr_t *ext_attrs);
+
+typedef void (* btrc_ctrl_playerapplicationsetting_changed_callback)(bt_bdaddr_t *bd_addr,
+ btrc_player_settings_t *p_vals);
+
+typedef void (* btrc_ctrl_track_changed_callback)(bt_bdaddr_t *bd_addr, uint8_t num_attr,
+ btrc_element_attr_val_t *p_attrs);
+
+typedef void (* btrc_ctrl_play_position_changed_callback)(bt_bdaddr_t *bd_addr,
+ uint32_t song_len, uint32_t song_pos);
+
+typedef void (* btrc_ctrl_play_status_changed_callback)(bt_bdaddr_t *bd_addr,
+ btrc_play_status_t play_status);
+
/** BT-RC Controller callback structure. */
typedef struct {
/** set to sizeof(BtRcCallbacks) */
size_t size;
- btrc_passthrough_rsp_callback passthrough_rsp_cb;
- btrc_connection_state_callback connection_state_cb;
+ btrc_passthrough_rsp_callback passthrough_rsp_cb;
+ btrc_groupnavigation_rsp_callback groupnavigation_rsp_cb;
+ btrc_connection_state_callback connection_state_cb;
+ btrc_ctrl_getrcfeatures_callback getrcfeatures_cb;
+ btrc_ctrl_setplayerapplicationsetting_rsp_callback setplayerappsetting_rsp_cb;
+ btrc_ctrl_playerapplicationsetting_callback playerapplicationsetting_cb;
+ btrc_ctrl_playerapplicationsetting_changed_callback playerapplicationsetting_changed_cb;
+ btrc_ctrl_setabsvol_cmd_callback setabsvol_cmd_cb;
+ btrc_ctrl_registernotification_abs_vol_callback registernotification_absvol_cb;
+ btrc_ctrl_track_changed_callback track_changed_cb;
+ btrc_ctrl_play_position_changed_callback play_position_changed_cb;
+ btrc_ctrl_play_status_changed_callback play_status_changed_cb;
} btrc_ctrl_callbacks_t;
/** Represents the standard BT-RC AVRCP Controller interface. */
@@ -285,7 +354,23 @@
bt_status_t (*init)( btrc_ctrl_callbacks_t* callbacks );
/** send pass through command to target */
- bt_status_t (*send_pass_through_cmd) ( bt_bdaddr_t *bd_addr, uint8_t key_code, uint8_t key_state );
+ bt_status_t (*send_pass_through_cmd) (bt_bdaddr_t *bd_addr, uint8_t key_code,
+ uint8_t key_state );
+
+ /** send group navigation command to target */
+ bt_status_t (*send_group_navigation_cmd) (bt_bdaddr_t *bd_addr, uint8_t key_code,
+ uint8_t key_state );
+
+ /** send command to set player applicaiton setting attributes to target */
+ bt_status_t (*set_player_app_setting_cmd) (bt_bdaddr_t *bd_addr, uint8_t num_attrib,
+ uint8_t* attrib_ids, uint8_t* attrib_vals);
+
+ /** send rsp to set_abs_vol received from target */
+ bt_status_t (*set_volume_rsp) (bt_bdaddr_t *bd_addr, uint8_t abs_vol, uint8_t label);
+
+ /** send notificaiton rsp for abs vol to target */
+ bt_status_t (*register_abs_vol_rsp) (bt_bdaddr_t *bd_addr, btrc_notification_type_t rsp_type,
+ uint8_t abs_vol, uint8_t label);
/** Closes the interface. */
void (*cleanup)( void );
diff --git a/include/hardware/vehicle.h b/include/hardware/vehicle.h
index b08dd91..9d45501 100644
--- a/include/hardware/vehicle.h
+++ b/include/hardware/vehicle.h
@@ -667,6 +667,48 @@
};
/**
+ * Property to share currently active audio context in android side.
+ * This can be used as a hint to adjust audio policy or other policy decision. Note that there
+ * can be multiple context active at the same time.
+ *
+ * @value_type VEHICLE_VALUE_TYPE_INT32
+ * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
+ * @access VEHICLE_PROP_ACCESS_WRITE
+ * @data_member int32
+ */
+#define VEHICLE_PROPERTY_AUDIO_CONTEXT (0x00000905)
+/**
+ * Flags to tell the current audio context.
+ */
+enum vehicle_audio_context_flag {
+ /** Music playback is currently active. */
+ VEHICLE_AUDIO_CONTEXT_MUSIC_FLAG = 0x1,
+ /** Navigation is currently running. */
+ VEHICLE_AUDIO_CONTEXT_NAVIGATION_FLAG = 0x2,
+ /** Voice command session is currently running. */
+ VEHICLE_AUDIO_CONTEXT_VOICE_COMMAND_FLAG = 0x4,
+ /** Voice call is currently active. */
+ VEHICLE_AUDIO_CONTEXT_CALL_FLAG = 0x8,
+ /** Alarm is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY. */
+ VEHICLE_AUDIO_CONTEXT_ALARM_FLAG = 0x10,
+ /**
+ * Notification sound is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY.
+ */
+ VEHICLE_AUDIO_CONTEXT_NOTIFICATION_FLAG = 0x20,
+ /**
+ * Context unknown. Only used for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY to represent default
+ * stream for unknown contents.
+ */
+ VEHICLE_AUDIO_CONTEXT_UNKNOWN_FLAG = 0x40,
+ /** Safety alert / warning is played. */
+ VEHICLE_AUDIO_CONTEXT_SAFETY_ALERT_FLAG = 0x80,
+ /** CD / DVD kind of audio is played */
+ VEHICLE_AUDIO_CONTEXT_CD_ROM = 0x100,
+ /** Aux audio input is played */
+ VEHICLE_AUDIO_CONTEXT_AUX_AUDIO = 0x200,
+};
+
+/**
* Property to control power state of application processor.
*
* It is assumed that AP's power state is controller by separate power controller.
@@ -840,48 +882,6 @@
};
/**
- * Property to share currently active audio context in android side.
- * This can be used as a hint to adjust audio policy or other policy decision. Note that there
- * can be multiple context active at the same time.
- *
- * @value_type VEHICLE_VALUE_TYPE_INT32
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_WRITE
- * @data_member int32
- */
-#define VEHICLE_PROPERTY_AUDIO_CONTEXT (0x00000B00)
-/**
- * Flags to tell the current audio context.
- */
-enum vehicle_audio_context_flag {
- /** Music playback is currently active. */
- VEHICLE_AUDIO_CONTEXT_MUSIC_FLAG = 0x1,
- /** Navigation is currently running. */
- VEHICLE_AUDIO_CONTEXT_NAVIGATION_FLAG = 0x2,
- /** Voice command session is currently running. */
- VEHICLE_AUDIO_CONTEXT_VOICE_COMMAND_FLAG = 0x4,
- /** Voice call is currently active. */
- VEHICLE_AUDIO_CONTEXT_CALL_FLAG = 0x8,
- /** Alarm is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY. */
- VEHICLE_AUDIO_CONTEXT_ALARM_FLAG = 0x10,
- /**
- * Notification sound is active. This may be only used in VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY.
- */
- VEHICLE_AUDIO_CONTEXT_NOTIFICATION_FLAG = 0x20,
- /**
- * Context unknown. Only used for VEHICLE_PROPERTY_AUDIO_ROUTING_POLICY to represent default
- * stream for unknown contents.
- */
- VEHICLE_AUDIO_CONTEXT_UNKNOWN_FLAG = 0x40,
- /** Safety alert / warning is played. */
- VEHICLE_AUDIO_CONTEXT_SAFETY_ALERT_FLAG = 0x80,
- /** CD / DVD kind of audio is played */
- VEHICLE_AUDIO_CONTEXT_CD_ROM = 0x100,
- /** Aux audio input is played */
- VEHICLE_AUDIO_CONTEXT_AUX_AUDIO = 0x200,
-};
-
-/**
* H/W specific, non-standard property can be added as necessary. Such property should use
* property number in range of [VEHICLE_PROPERTY_CUSTOM_START, VEHICLE_PROPERTY_CUSTOM_END].
* Definition of property in this range is completely up to each HAL implementation.
@@ -913,10 +913,8 @@
VEHICLE_VALUE_TYPE_STRING = 0x01,
VEHICLE_VALUE_TYPE_BYTES = 0x02,
VEHICLE_VALUE_TYPE_BOOLEAN = 0x03,
- VEHICLE_VALUE_TYPE_ZONED_INT32 = 0x04,
- VEHICLE_VALUE_TYPE_ZONED_FLOAT = 0x05,
- VEHICLE_VALUE_TYPE_ZONED_BOOLEAN = 0x06,
- VEHICLE_VALUE_TYPE_INT64 = 0x07,
+ VEHICLE_VALUE_TYPE_ZONED_BOOLEAN = 0x04,
+ VEHICLE_VALUE_TYPE_INT64 = 0x05,
VEHICLE_VALUE_TYPE_FLOAT = 0x10,
VEHICLE_VALUE_TYPE_FLOAT_VEC2 = 0x11,
VEHICLE_VALUE_TYPE_FLOAT_VEC3 = 0x12,
@@ -925,6 +923,12 @@
VEHICLE_VALUE_TYPE_INT32_VEC2 = 0x21,
VEHICLE_VALUE_TYPE_INT32_VEC3 = 0x22,
VEHICLE_VALUE_TYPE_INT32_VEC4 = 0x23,
+ VEHICLE_VALUE_TYPE_ZONED_FLOAT = 0x30,
+ VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC2 = 0x31,
+ VEHICLE_VALUE_TYPE_ZONED_FLOAT_VEC3 = 0x32,
+ VEHICLE_VALUE_TYPE_ZONED_INT32 = 0x40,
+ VEHICLE_VALUE_TYPE_ZONED_INT32_VEC2 = 0x41,
+ VEHICLE_VALUE_TYPE_ZONED_INT32_VEC3 = 0x42,
};
/**
@@ -1172,6 +1176,15 @@
int32_t value;
} vehicle_zoned_int32_t;
+typedef struct vehicle_zoned_int32_array {
+ union {
+ int32_t zone;
+ int32_t seat;
+ int32_t window;
+ };
+ int32_t values[3];
+} vehicle_zoned_int32_array_t;
+
typedef struct vehicle_zoned_float {
union {
int32_t zone;
@@ -1181,6 +1194,15 @@
float value;
} vehicle_zoned_float_t;
+typedef struct vehicle_zoned_float_array {
+ union {
+ int32_t zone;
+ int32_t seat;
+ int32_t window;
+ };
+ float values[3];
+} vehicle_zoned_float_array_t;
+
typedef struct vehicle_zoned_boolean {
union {
int32_t zone;
@@ -1376,7 +1398,9 @@
vehicle_bytes_t bytes_value;
vehicle_boolean_t boolean_value;
vehicle_zoned_int32_t zoned_int32_value;
+ vehicle_zoned_int32_array_t zoned_int32_array;
vehicle_zoned_float_t zoned_float_value;
+ vehicle_zoned_float_array_t zoned_float_array;
vehicle_zoned_boolean_t zoned_boolean_value;
// Vehicle Information.