Add the previlege check logic for getting MTU API
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-hid-device.c
index a1c03aa..d58edbd 100644 (file)
@@ -760,17 +760,22 @@ BT_EXPORT_API int bluetooth_hid_device_send_key_event(const char *remote_addr,
        return written;
 }
 
-BT_EXPORT_API int bluetooth_hid_device_send_rc_key_event(const char *remote_addr,
-                                       hid_send_rc_key_event_t send_event)
+BT_EXPORT_API int bluetooth_hid_device_send_custom_event(const char *remote_addr,
+                       unsigned char btcode, unsigned char report_id,
+                       const char *data, unsigned int data_len)
 {
        int result;
        int written = 0;
        int socket_fd;
        hid_connected_device_info_t *info = NULL;
+       char *send_event = NULL;
+
+       BT_CHECK_PARAMETER(remote_addr, return);
+       BT_CHECK_PARAMETER(data, return);
 
        switch (privilege_token_send_key) {
        case 0:
-               result = _bt_check_privilege(BT_BLUEZ_SERVICE, BT_HID_DEVICE_SEND_KEY_EVENT);
+               result = _bt_check_privilege(BT_CHECK_PRIVILEGE, BT_HID_DEVICE_SEND_CUSTOM_EVENT);
 
                if (result == BLUETOOTH_ERROR_NONE) {
                        privilege_token_send_key = 1; /* Have a permission */
@@ -803,7 +808,18 @@ BT_EXPORT_API int bluetooth_hid_device_send_rc_key_event(const char *remote_addr
        else
                socket_fd = info->ctrl_fd;
 
-       written = write(socket_fd, &send_event, sizeof(send_event));
+       send_event = (char*)g_malloc0(data_len + 2);
+       if (send_event == NULL)
+               return BLUETOOTH_ERROR_OUT_OF_MEMORY;
+
+       send_event[0] = (char)btcode;
+       send_event[1] = (char)report_id;
+       memcpy(send_event + 2, data, data_len);
+
+       written = write(socket_fd, send_event, data_len + 2);
+
+       g_free(send_event);
+
        return written;
 }