Add HfBatteryLevelChanged event 05/230005/2 accepted/tizen/unified/20200409.083623 submit/tizen/20200408.035538
authorDeokhyun Kim <dukan.kim@samsung.com>
Tue, 7 Apr 2020 05:38:18 +0000 (14:38 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Tue, 7 Apr 2020 06:59:31 +0000 (15:59 +0900)
Change-Id: I68f8e008278aeadc5ef3e42f8b6b3f52ab94b086
Signed-off-by: Deokhyun Kim <dukan.kim@samsung.com>
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
include/bluetooth_private.h
src/bluetooth-audio.c
src/bluetooth-common.c

index fc5a8f2e50394961b436dfdec7a3684d405a669c..9715b956898e7635ec11fe0f509688a7c0c59a8c 100644 (file)
@@ -105,6 +105,7 @@ typedef enum {
        BT_EVENT_AG_MICROPHONE_GAIN_CHANGE, /**< Audio Microphone change callback */
        BT_EVENT_AG_SPEAKER_GAIN_CHANGE, /**< Audio Speaker gain change callback */
        BT_EVENT_AG_VENDOR_CMD, /**< Audio - XSAT Vendor cmd */
+       BT_EVENT_AG_BATTERY_LEVEL_CHANGE, /**< Audio battery level change callback */
        BT_EVENT_AUDIO_ABSOLUTE_VOLUME_CHANGED, /**< Audio absolute volume change callback */
        BT_EVENT_AUDIO_AVC_STATUS_CHANGED, /**< Absolute Volume Control status change callback */
        BT_EVENT_AVRCP_CONNECTION_STATUS, /**< AVRCP connection change callback */
@@ -1036,6 +1037,19 @@ void _bt_otc_connection_state_changed(int result, bluetooth_otc_info_t *otc_info
  */
 void _bt_otp_check_service_changed(char *address, bt_gatt_service_change_t *service_change);
 
+/**
+ * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
+ * @brief  Called when the battery level of the remote device is changed.
+ * @since_tizen 4.0
+ *
+ * @param[in] remote_address The remote address
+ * @param[in] level The battery level (0 ~ 100)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see bt_ag_set_battery_level_changed_cb()
+ * @see bt_ag_unset_battery_level_changed_cb()
+ */
+typedef void (*bt_ag_battery_level_changed_cb) (const char *remote_address, unsigned int level, void *user_data);
+
 typedef enum {
        _PROFILE_UNKNOWN = 0,
        _PROFILE_MOBILE = 0x1,
index 50921d8ca2c959dd1c01c1823bd4cffe0770483e..e418fbcb04f81fa3c3d4f99c7e97120dd026a0ac 100644 (file)
@@ -566,6 +566,45 @@ int bt_ag_unset_speaker_gain_changed_cb(void)
                _bt_unset_cb(BT_EVENT_AG_SPEAKER_GAIN_CHANGE);
        return BT_ERROR_NONE;
 }
+/* LCOV_EXCL_STOP */
+
+int bt_ag_get_battery_level(const char *remote_address, unsigned int *level)
+{
+       int error;
+
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(remote_address);
+       BT_CHECK_INPUT_PARAMETER(level);
+
+       error = bluetooth_telephony_get_battery_level(remote_address, level);
+       error = _bt_convert_telephony_error_code(error);
+       if (BT_ERROR_NONE != error)
+               BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error);
+
+       return error;
+}
+
+int bt_ag_set_battery_level_changed_cb(bt_ag_battery_level_changed_cb callback, void *user_data)
+{
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(callback);
+       _bt_set_cb(BT_EVENT_AG_BATTERY_LEVEL_CHANGE, callback, user_data);
+       return BT_ERROR_NONE;
+}
+
+int bt_ag_unset_battery_level_changed_cb(void)
+{
+       BT_CHECK_HFP_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_AG_INIT_STATUS();
+       if (_bt_check_cb(BT_EVENT_AG_BATTERY_LEVEL_CHANGE) == true)
+               _bt_unset_cb(BT_EVENT_AG_BATTERY_LEVEL_CHANGE);
+       return BT_ERROR_NONE;
+}
 
 int bt_ag_open_sco(void)
 {
index 4dbdb20d164865f06cd5855382d481dd323156b1..d73513433d89198c16ad50c06f5edcbb7d304b13 100644 (file)
@@ -239,6 +239,7 @@ static bt_event2index_table_t event2index[] = {
        { BLUETOOTH_EVENT_PASSKEY_NOTIFICATION, BT_EVENT_PASSKEY_NOTIFICATION_EVENT },
        { BLUETOOTH_EVENT_CONNECTABLE_CHANGED, BT_EVENT_CONNECTABLE_CHANGED_EVENT },
        { BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD, BT_EVENT_AG_VENDOR_CMD },
+       { BLUETOOTH_EVENT_TELEPHONY_HF_BATTERY_LEVEL_CHANGED, BT_EVENT_AG_BATTERY_LEVEL_CHANGE },
        { BLUETOOTH_EVENT_RSSI_ENABLED, BT_EVENT_RSSI_ENABLED_EVENT },
        { BLUETOOTH_EVENT_RSSI_ALERT, BT_EVENT_RSSI_ALERT_EVENT },
        { BLUETOOTH_EVENT_RAW_RSSI, BT_EVENT_GET_RSSI_EVENT },