Changes in uspace/drv/usbmouse/mouse.c [79ae36dd:4a4c8bcf] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbmouse/mouse.c
r79ae36dd r4a4c8bcf 40 40 #include <ipc/mouse.h> 41 41 #include <async.h> 42 #include <async_obsolete.h>43 42 #include "mouse.h" 44 43 45 44 /** Mouse polling callback. 46 45 * 47 * @param dev Device that is being polled.46 * @param dev Device that is being polled. 48 47 * @param buffer Data buffer. 49 * @param buffer_size Buffer size in bytes. 50 * @param arg Custom argument - points to usb_mouse_t. 48 * @param size Buffer size in bytes. 49 * @param arg Pointer to usb_mouse_t. 50 * 51 51 * @return Always true. 52 * 52 53 */ 53 bool usb_mouse_polling_callback(usb_device_t *dev, 54 uint8_t *buffer, size_t buffer_size, void *arg)54 bool usb_mouse_polling_callback(usb_device_t *dev, uint8_t *buffer, 55 size_t size, void *arg) 55 56 { 56 57 usb_mouse_t *mouse = (usb_mouse_t *) arg; 57 58 58 59 usb_log_debug2("got buffer: %s.\n", 59 usb_debug_str_buffer(buffer, buffer_size, 0));60 60 usb_debug_str_buffer(buffer, size, 0)); 61 61 62 uint8_t butt = buffer[0]; 62 63 char str_buttons[4] = { … … 66 67 0 67 68 }; 68 69 69 70 int shift_x = ((int) buffer[1]) - 127; 70 71 int shift_y = ((int) buffer[2]) - 127; 71 72 int wheel = ((int) buffer[3]) - 127; 72 73 if (buffer[1] == 0) {73 74 if (buffer[1] == 0) 74 75 shift_x = 0; 75 }76 if (buffer[2] == 0) {76 77 if (buffer[2] == 0) 77 78 shift_y = 0; 78 }79 if (buffer[3] == 0) {79 80 if (buffer[3] == 0) 80 81 wheel = 0; 81 } 82 83 if (mouse->console_phone >= 0) { 82 83 if (mouse->console_sess) { 84 84 if ((shift_x != 0) || (shift_y != 0)) { 85 /* FIXME: guessed for QEMU */ 86 async_obsolete_req_2_0(mouse->console_phone, 87 MEVENT_MOVE, 88 - shift_x / 10, - shift_y / 10); 85 // FIXME: guessed for QEMU 86 87 async_exch_t *exch = async_exchange_begin(mouse->console_sess); 88 async_req_2_0(exch, MEVENT_MOVE, -shift_x / 10, -shift_y / 10); 89 async_exchange_end(exch); 89 90 } 90 91 if (butt) { 91 /* FIXME: proper button clicking. */ 92 async_obsolete_req_2_0(mouse->console_phone, 93 MEVENT_BUTTON, 1, 1); 94 async_obsolete_req_2_0(mouse->console_phone, 95 MEVENT_BUTTON, 1, 0); 92 // FIXME: proper button clicking 93 94 async_exch_t *exch = async_exchange_begin(mouse->console_sess); 95 async_req_2_0(exch, MEVENT_BUTTON, 1, 1); 96 async_req_2_0(exch, MEVENT_BUTTON, 1, 0); 97 async_exchange_end(exch); 96 98 } 97 99 } 98 100 99 101 usb_log_debug("buttons=%s dX=%+3d dY=%+3d wheel=%+3d\n", 100 102 str_buttons, shift_x, shift_y, wheel); 101 103 102 104 /* Guess. */ 103 105 async_usleep(1000); 104 106 105 107 return true; 106 108 } … … 108 110 /** Callback when polling is terminated. 109 111 * 110 * @param dev Device where the polling terminated.112 * @param dev Device where the polling terminated. 111 113 * @param recurring_errors Whether the polling was terminated due to 112 * recurring errors. 113 * @param arg Custom argument - points to usb_mouse_t. 114 * recurring errors. 115 * @param arg Pointer to usb_mouse_t. 116 * 114 117 */ 115 void usb_mouse_polling_ended_callback(usb_device_t *dev, 116 bool recurring_errors,void *arg)118 void usb_mouse_polling_ended_callback(usb_device_t *dev, bool recurring_errors, 119 void *arg) 117 120 { 118 121 usb_mouse_t *mouse = (usb_mouse_t *) arg; 119 120 async_ obsolete_hangup(mouse->console_phone);121 mouse->console_ phone = -1;122 122 123 async_hangup(mouse->console_sess); 124 mouse->console_sess = NULL; 125 123 126 usb_device_destroy(dev); 124 127 }
Note:
See TracChangeset
for help on using the changeset viewer.