HID Device : send correct mouse / keyboard event 81/141981/1
authorSangki Park <sangki79.park@samsung.com>
Fri, 2 Jun 2017 07:25:06 +0000 (16:25 +0900)
committerNagaraj D R <nagaraj.dr@samsung.com>
Wed, 2 Aug 2017 06:50:07 +0000 (12:20 +0530)
Fix logical error in sending event for
keybaord and mouse input

Change-Id: I2f5c41dade0dbffe862407c9caec735b41586edc

src/bluetooth-hid.c

index a2141cc34602e9cb912437cbdb51f4c006ad84e8..7bc4df1edf0ac6ad92ce370f42c56e7c6bd1a2b5 100644 (file)
@@ -28,6 +28,9 @@
 
 static bool is_hid_host_initialized = false;
 
+#define HID_MOUSE_REPORT_ID 1
+#define HID_KEY_REPORT_ID 2
+
 #define BT_CHECK_HID_HOST_SUPPORT() \
 { \
        BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
@@ -221,6 +224,8 @@ int bt_hid_device_send_mouse_event(const char *remote_address,
                const bt_hid_mouse_data_s *mouse_data)
 {
        int ret;
+       hid_send_mouse_event_t mouse_event = {0, };
+
        BT_CHECK_HID_DEVICE_SUPPORT();
        BT_CHECK_INIT_STATUS();
        BT_CHECK_INPUT_PARAMETER(remote_address);
@@ -243,8 +248,16 @@ int bt_hid_device_send_mouse_event(const char *remote_address,
                return -1;
        }
 
+       mouse_event.btcode = 0xA1;
+       mouse_event.rep_id = HID_MOUSE_REPORT_ID;
+
+       mouse_event.button = (unsigned char)mouse_data->buttons;
+       mouse_event.axis_x = (signed char)mouse_data->axis_x;
+       mouse_event.axis_y = (signed char)mouse_data->axis_y;
+       mouse_event.axis_z = (signed char)mouse_data->padding;
+
        ret = bluetooth_hid_device_send_mouse_event(remote_address,
-                       *(hid_send_mouse_event_t *)mouse_data);
+                       mouse_event);
        if (ret <= 0) {
                if (ret == -1) {
                        /* write fail case */
@@ -275,6 +288,8 @@ int bt_hid_device_send_key_event(const char *remote_address,
        BT_CHECK_INPUT_PARAMETER(key_data);
        hid_send_key_event_t send_event = {0};
 
+       send_event.btcode = 0xA1;
+       send_event.rep_id = HID_KEY_REPORT_ID;
        send_event.modify = key_data->modifier;
        memcpy(send_event.key, key_data->key, sizeof(send_event.key));