void *user_data;
};
+struct device_service_search_cb_node {
+ bt_device_service_searched_cb cb;
+ void *user_data;
+};
+
struct spp_connection_requested_cb_node {
bt_spp_connection_requested_cb cb;
void *user_data;
static struct device_auth_cb_node *device_auth_node;
static struct device_destroy_paired_cb_node *paired_device_removed_node;
static struct device_connected_state_cb_node *device_connected_state_node;
+static struct device_service_search_cb_node *device_service_search_node;
static struct spp_connection_requested_cb_node *spp_connection_requested_node;
static struct spp_data_received_cb_node *spp_data_received_node;
static struct avrcp_target_connection_state_changed_node
int bt_device_set_service_searched_cb(bt_device_service_searched_cb callback,
void *user_data)
{
- DBG("Not implement");
+ struct device_service_search_cb_node *node;
+
+ DBG("");
+
+ if (callback == NULL)
+ return BT_ERROR_INVALID_PARAMETER;
+
+ if (device_service_search_node) {
+ DBG("Device service serach callback already set.");
+ return BT_SUCCESS;
+ }
+
+ node = g_new0(struct device_service_search_cb_node, 1);
+ if (node == NULL) {
+ ERROR("no memeroy");
+ return BT_ERROR_OUT_OF_MEMORY;
+ }
+
+ node->cb = callback;
+ node->user_data = user_data;
+
+ device_service_search_node = node;
return BT_SUCCESS;
}
int bt_device_unset_service_searched_cb(void)
{
- DBG("Not implement");
+ DBG("");
+
+ if (initialized == false)
+ return BT_ERROR_NOT_INITIALIZED;
+
+ if (!device_service_search_node)
+ return BT_SUCCESS;
+
+ g_free(device_service_search_node);
+ device_service_search_node = NULL;
return BT_SUCCESS;
}
return 0;
}
+static void service_search_cb(int result, bt_device_sdp_info_s *sdp_info,
+ void *user_data)
+{
+ int i;
+
+ if (result != BT_SUCCESS) {
+ DBG("device service serach failed %d", result);
+ return;
+ }
+
+ DBG("remote address %s contain services:", sdp_info->remote_address);
+ for (i = 0; i < sdp_info->service_count; ++i)
+ DBG("\t%s", sdp_info->service_uuid[i]);
+}
+
+static int set_device_service_serach_callback(const char *p1, const char *p2)
+{
+ int ret;
+
+ ret = bt_device_set_service_searched_cb(service_search_cb, NULL);
+ if (ret != BT_SUCCESS) {
+ ERROR("bt_device_set_service_searched_cb error: %d", ret);
+ return 0;
+ }
+
+ return 0;
+}
+
+static int unset_device_service_serach_callback(const char *p1,
+ const char *p2)
+{
+ int ret;
+
+ ret = bt_device_unset_service_searched_cb();
+ if (ret != BT_SUCCESS) {
+ ERROR("bt_device_unset_service_searched_cb error: %d", ret);
+ return 0;
+ }
+
+ return 0;
+}
+
static int start_discovery(const char *p1, const char *p2)
{
int err;
{"unset_device_connected_callback", unset_device_connected_callback,
"Usage: unset_device_connected_callback\n\tUnSet device connected callback"},
+ {"set_device_service_serach_callback", set_device_service_serach_callback,
+ "Usage: set_device_service_serach_callback\n\tSet service serach callback"},
+
+ {"unset_device_service_serach_callback", unset_device_service_serach_callback,
+ "Usage: unset_device_service_serach_callback\n\tUnset service serach callback"},
+
{"start_discovery", start_discovery,
"Usage: start_discovery\n\tStart to discovery devices"},