#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"
}
+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)", ¶m.remote_address, ¶m.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 *)¶m);
+}
+
static void __bluetooth_telephony_event_filter(GDBusConnection *connection,
const gchar *sender_name,
const gchar *object_path,
__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("-");
}
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;
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,
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 {
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.
*