}
break;
}
+ case BT_RFCOMM_ACCEPT_CONNECTION: {
+ char *address;
+
+ address = (char *)g_variant_get_data(in_param1);
+ result = _bt_rfcomm_reply_conn_authorization(address, TRUE);
+ break;
+ }
+ case BT_RFCOMM_REJECT_CONNECTION: {
+ char *address;
+
+ address = (char *)g_variant_get_data(in_param1);
+ result = _bt_rfcomm_reply_conn_authorization(address, FALSE);
+ break;
+ }
case BT_RFCOMM_REMOVE_SOCKET: {
/*
* This call to bt-service is only used for privilege check, so return
return is_connected;
}
+
+int _bt_rfcomm_reply_conn_authorization(char *address, gboolean reply)
+{
+ bt_address_t bd_addr;
+ int res;
+
+ BT_DBG("+");
+
+ retv_if (NULL == address, BLUETOOTH_ERROR_INVALID_PARAM);
+ _bt_convert_addr_string_to_type(bd_addr.addr, address);
+ res = device_reply_auth_request(&bd_addr, 0, reply, FALSE);
+ if (res != OAL_STATUS_SUCCESS) {
+ BT_ERR("authorize_response: %d", res);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+
+ BT_DBG("-");
+ return BLUETOOTH_ERROR_NONE;
+}
\ No newline at end of file
#include "bt-service-util.h"
#include "bt-service-event-receiver.h"
#include "bt-service-socket.h"
+#include "bt-service-event.h"
typedef struct {
int sock_fd;
BT_DBG("-");
}
+static void __handle_socket_authorization_request(event_socket_authorize_req_t *auth_event)
+{
+ char address[BT_ADDRESS_STRING_SIZE];
+ char uuid_str[BT_UUID_STRING_SIZE];
+ int result = BLUETOOTH_ERROR_NONE;
+
+ BT_DBG("+");
+
+ _bt_convert_addr_type_to_string(address, auth_event->address.addr);
+ _bt_service_convert_uuid_type_to_string(uuid_str, auth_event->uuid.uuid);
+ BT_INFO("Address: %s, UUID: %s", address, uuid_str);
+ _bt_send_event(BT_RFCOMM_SERVER_EVENT,
+ BLUETOOTH_EVENT_RFCOMM_AUTHORIZE,
+ g_variant_new("(iss)", result, address, uuid_str));
+ BT_DBG("-");
+}
+
static void __bt_socket_event_handler(int event_type, gpointer event_data)
{
BT_INFO("OAL event = 0x%x, \n", event_type);
__handle_socket_disconnected(client_info);
break;
}
+ case OAL_EVENT_SOCKET_AUTHORIZE_REQUEST: {
+ BT_INFO("Socket Authorization Request");
+ __handle_socket_authorization_request((event_socket_authorize_req_t *)event_data);
+ break;
+ }
default:
BT_ERR("Invalid event:%d\n", event_type);
break;