return FALSE;
}
-static int __rfcomm_listen(rfcomm_server_info_t *server_info)
+static int __rfcomm_listen(rfcomm_server_info_t *server_info, bool accept)
{
int result;
GUnixFDList *out_fd_list = NULL;
BT_INIT_PARAMS();
BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- g_array_append_vals(in_param1, server_info->uuid, BLUETOOTH_UUID_STRING_MAX);
- result = _bt_send_request_with_unix_fd_list(BT_BLUEZ_SERVICE, BT_RFCOMM_LISTEN,
- in_param1, in_param2, in_param3, in_param4, NULL, &out_param, &out_fd_list);
+ if (accept == false) {
+ g_array_append_vals(in_param1, server_info->uuid, BLUETOOTH_UUID_STRING_MAX);
+ result = _bt_send_request_with_unix_fd_list(BT_BLUEZ_SERVICE, BT_RFCOMM_LISTEN,
+ in_param1, in_param2, in_param3, in_param4, NULL, &out_param, &out_fd_list);
+ } else {
+ g_array_append_vals(in_param1, server_info->uuid, BLUETOOTH_UUID_STRING_MAX);
+ result = _bt_send_request_with_unix_fd_list(BT_BLUEZ_SERVICE, BT_RFCOMM_LISTEN_AND_ACCEPT,
+ in_param1, in_param2, in_param3, in_param4, NULL, &out_param, &out_fd_list);
+ }
BT_DBG("result: %x", result);
if (result != BLUETOOTH_ERROR_NONE) {
server_info->max_pending_conn = max_pending_connection;
server_info->auto_accept = TRUE;
- return __rfcomm_listen(server_info);
+ return __rfcomm_listen(server_info, true);
#endif
}
server_info->max_pending_conn = max_pending_connection;
server_info->auto_accept = FALSE;
- return __rfcomm_listen(server_info);
+ return __rfcomm_listen(server_info, false);
#endif
}