Add HfBatteryLevelChanged event 07/230007/3 accepted/tizen/unified/20200409.083629 submit/tizen/20200408.035538
authorDeokhyun Kim <dukan.kim@samsung.com>
Tue, 7 Apr 2020 05:37:31 +0000 (14:37 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 8 Apr 2020 02:50:46 +0000 (11:50 +0900)
Change-Id: I7daabc5f5f54215a3bf42910363ae0c2bee0981f
Signed-off-by: Deokhyun Kim <dukan.kim@samsung.com>
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
bt-api/bt-telephony.c
include/bluetooth-telephony-api.h [changed mode: 0755->0644]

index addbcb9..4c50132 100644 (file)
@@ -73,6 +73,7 @@ static guint owner_id = 0;
 #define HFP_REJECT_CALL "Reject"
 #define HFP_RELEASE_CALL "Release"
 #define HFP_THREEWAY_CALL "Threeway"
+#define HFP_HF_BATTERY_LEVEL_CHANGE "HfBatteryLevelChanged"
 
 #define DEFAULT_ADAPTER_OBJECT_PATH "/org/bluez/hci0"
 
@@ -480,6 +481,20 @@ static void __bluetooth_handle_nrec_status_change(GVariant *var)
 
 }
 
+static void __bluetooth_telephony_hf_battery_level_change(GVariant *var)
+{
+       telephony_event_hf_battery_level_t param;
+       char secure_address[BT_ADDRESS_STRING_SIZE] = { 0 };
+
+       g_variant_get(var, "(&su)", &param.remote_address, &param.battery_level);
+
+       _bt_convert_addr_string_to_secure_string(secure_address, param.remote_address);
+       BT_INFO("address(%s) battery level(%u)", secure_address, param.battery_level);
+
+       __bt_telephony_event_cb(BLUETOOTH_EVENT_TELEPHONY_HF_BATTERY_LEVEL_CHANGED,
+               BLUETOOTH_TELEPHONY_ERROR_NONE, (void *)&param);
+}
+
 static void __bluetooth_telephony_event_filter(GDBusConnection *connection,
                const gchar *sender_name,
                const gchar *object_path,
@@ -625,6 +640,8 @@ static void __bluetooth_telephony_event_filter(GDBusConnection *connection,
                        __bluetooth_telephony_release_call(parameters);
                else if (strcasecmp(signal_name, HFP_THREEWAY_CALL) == 0)
                        __bluetooth_telephony_threeway_call(parameters);
+               else if (strcasecmp(signal_name, HFP_HF_BATTERY_LEVEL_CHANGE) == 0)
+                       __bluetooth_telephony_hf_battery_level_change(parameters);
        }
        BT_DBG("-");
 }
@@ -2175,6 +2192,44 @@ BT_EXPORT_API int bluetooth_telephony_get_headset_volume(
        return BLUETOOTH_TELEPHONY_ERROR_NONE;
 }
 
+BT_EXPORT_API int bluetooth_telephony_get_battery_level(
+                       const char *remote_address, unsigned int *level)
+{
+       GVariant *reply;
+       GError *err = NULL;
+       GVariant *param = NULL;
+       int ret;
+
+       FN_START;
+
+       BT_TELEPHONY_CHECK_INITIALIZED();
+       BT_TELEPHONY_CHECK_ENABLED();
+
+       param = g_variant_new("(s)", remote_address);
+
+       reply = __bluetooth_telephony_dbus_method_send(
+                       HFP_AGENT_PATH, HFP_AGENT_INTERFACE,
+                       "GetHfBatteryLevel", &err, param);
+
+       if (!reply) {
+               BT_ERR("Error returned in method call\n");
+               if (err) {
+                       g_dbus_error_strip_remote_error(err);
+                       ret = __bt_telephony_get_error(err->message);
+                       g_error_free(err);
+                       return ret;
+               }
+               return BLUETOOTH_TELEPHONY_ERROR_INTERNAL;
+       }
+
+       g_variant_get(reply, "(u)", level);
+
+       g_variant_unref(reply);
+
+       FN_END;
+       return BLUETOOTH_TELEPHONY_ERROR_NONE;
+}
+
 BT_EXPORT_API int bluetooth_telephony_is_connected(gboolean *ag_connected)
 {
        GVariant *reply;
old mode 100755 (executable)
new mode 100644 (file)
index f0f7101..060a7ef
@@ -78,6 +78,11 @@ typedef struct {
        gchar *dtmf;
 } telephony_event_dtmf_t;
 
+typedef struct {
+       const gchar *remote_address;
+       guint battery_level;
+} telephony_event_hf_battery_level_t;
+
 typedef enum {
        BLUETOOTH_STATE_CONNECTED,
        BLUETOOTH_STATE_PLAYING,
@@ -133,6 +138,7 @@ typedef enum {
        BLUETOOTH_EVENT_TELEPHONY_SET_MIC_GAIN,
        BLUETOOTH_EVENT_TELEPHONY_NREC_CHANGED,
        BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD,
+       BLUETOOTH_EVENT_TELEPHONY_HF_BATTERY_LEVEL_CHANGED,
 } bluetooth_telephony_event_type;
 
 typedef enum {
@@ -379,6 +385,18 @@ int bluetooth_telephony_get_headset_volume(unsigned int *speaker_gain);
 int bluetooth_telephony_set_speaker_gain(unsigned short speaker_gain);
 
 /**
+ * @brief      The function bluetooth_telephony_get_battery_level is called to get
+ *     the changed battery level on AG.
+ *
+ * @param[in]  remote_address  Remote Addr.
+ * @param[out] level                   Battery level.
+ * @return     int     Zero on Success or reason for error if any.
+ *
+ */
+int bluetooth_telephony_get_battery_level(
+                       const char *remote_address, unsigned int *level);
+
+/**
  * @brief      The function bluetooth_telephony_is_connected is called to get
  *     the connection state on AG.
  *