void *user_data;
};
+struct adapter_visibility_duration_cb_node {
+ bt_adapter_visibility_duration_changed_cb cb;
+ void *user_data;
+};
+
struct device_destroy_unpaired_cb_node {
bt_adapter_device_discovery_state_changed_cb cb;
void *user_data;
static struct device_created_cb_node *device_created_node;
static struct adapter_state_cb_node *adapter_state_node;
static struct adapter_discovering_cb_node *adapter_discovering_node;
+static struct adapter_visibility_duration_cb_node
+ *adapter_visibility_duration_node;
static struct device_destroy_unpaired_cb_node *unpaired_device_removed_node;
static struct device_bond_cb_node *device_bond_node;
static struct device_auth_cb_node *device_auth_node;
g_free(adapter_name);
}
+static void discoverable_timeout_changed(bluez_adapter_t *adapter,
+ guint32 timeout, void *user_data)
+{
+ struct adapter_visibility_duration_cb_node *node = user_data;
+
+ node->cb(timeout, node->user_data);
+}
+
static void _bt_update_bluetooth_callbacks(void)
{
DBG("default_adpater: %p", default_adapter);
bluez_adapter_discovering_changed,
adapter_discovering_node);
+ if (adapter_visibility_duration_node)
+ bluez_adapter_set_discoverable_timeout_changed_cb(
+ default_adapter,
+ discoverable_timeout_changed,
+ adapter_visibility_duration_node);
+
if (generic_device_removed_set == FALSE)
set_device_removed_generic_callback(default_adapter);
return BT_SUCCESS;
}
+int bt_adapter_set_visibility_duration_changed_cb(
+ bt_adapter_visibility_duration_changed_cb callback,
+ void *user_data)
+{
+ struct adapter_visibility_duration_cb_node *node_data;
+
+ DBG("");
+
+ if (callback == NULL)
+ return BT_ERROR_INVALID_PARAMETER;
+
+ if (adapter_visibility_duration_node) {
+ DBG("duration changed callback already set.");
+ return BT_ERROR_ALREADY_DONE;
+ }
+
+ node_data = g_new0(struct adapter_visibility_duration_cb_node, 1);
+ if (node_data == NULL) {
+ ERROR("no memory");
+ return BT_ERROR_OUT_OF_MEMORY;
+ }
+
+ node_data->cb = callback;
+ node_data->user_data = user_data;
+
+ adapter_visibility_duration_node = node_data;
+
+ _bt_update_bluetooth_callbacks();
+ return BT_SUCCESS;
+}
+
int bt_adapter_unset_state_changed_cb(void)
{
DBG("");
return BT_SUCCESS;
}
-int bt_adapter_set_visibility_duration_changed_cb(
- bt_adapter_visibility_duration_changed_cb callback,
- void *user_data)
-{
- DBG("Not implement");
-
- return BT_SUCCESS;
-}
-
int bt_adapter_unset_visibility_mode_changed_cb(void)
{
DBG("Not implement");
return 0;
}
+static void visibility_duration_changed_callback(int duration,
+ void *user_data)
+{
+ DBG("adapter visibility changed to %d seconds", duration);
+}
+
+static int set_visibility_duration_callback(const char *p1, const char *p2)
+{
+ int ret = bt_adapter_set_visibility_duration_changed_cb(
+ visibility_duration_changed_callback, NULL);
+ if (ret != BT_SUCCESS) {
+ ERROR("set_visibility_duration_changed_cb failed %d", ret);
+ return 0;
+ }
+
+ return 0;
+}
+
static void device_discovery_cb(int result,
bt_adapter_device_discovery_state_e state,
bt_adapter_device_discovery_info_s *discovery_info,
{"get_adapter_visibility", get_adapter_visibility,
"Usage: get_adapter_visibility\n\tGet local adapter visibility"},
+ {"set_visibility_duration_callback", set_visibility_duration_callback,
+ "Usage: set_visibility_duration_callback\n\tSet duration callback"},
+
{"set_discovery_callback", set_discovery_callback,
"Usage: set_discovery_callback\n\tSet device found callback"},