Changeset 74017ce in mainline for uspace/srv/hid
- Timestamp:
- 2017-11-22T17:36:54Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7a6065c
- Parents:
- c4c6025
- git-author:
- Jiri Svoboda <jiri@…> (2017-11-22 15:53:34)
- git-committer:
- Jiri Svoboda <jiri@…> (2017-11-22 17:36:54)
- Location:
- uspace/srv/hid
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/input.c
rc4c6025 r74017ce 37 37 */ 38 38 39 #include <adt/fifo.h> 39 40 #include <adt/list.h> 40 #include <stdbool.h> 41 #include <async.h> 42 #include <config.h> 43 #include <errno.h> 44 #include <fibril.h> 41 45 #include <fibril_synch.h> 46 #include <io/chardev.h> 47 #include <io/console.h> 48 #include <io/keycode.h> 42 49 #include <ipc/services.h> 43 50 #include <ipc/input.h> 44 #include <config.h> 51 #include <loc.h> 52 #include <ns.h> 53 #include <stdbool.h> 45 54 #include <stdio.h> 46 55 #include <stdlib.h> 47 #include <ns.h>48 #include <async.h>49 #include <errno.h>50 #include <adt/fifo.h>51 #include <io/console.h>52 #include <io/keycode.h>53 #include <loc.h>54 56 #include <str_error.h> 55 #include <char_dev_iface.h> 56 #include <fibril.h> 57 #include "layout.h" 57 58 #include "input.h" 58 59 #include "kbd.h" 59 60 #include "kbd_port.h" 60 61 #include "kbd_ctl.h" 62 #include "layout.h" 61 63 #include "mouse.h" 62 64 #include "mouse_proto.h" 63 65 #include "serial.h" 64 #include "input.h"65 66 66 67 #define NUM_LAYOUTS 4 … … 536 537 while (true) { 537 538 uint8_t data; 538 539 char_dev_read(sdev->sess, &data, sizeof(data)); 539 size_t nread; 540 541 chardev_read(sdev->chardev, &data, sizeof(data), &nread); 542 /* XXX Handle error */ 540 543 kbd_push_data(sdev->kdev, data); 541 544 } … … 552 555 { 553 556 bool match = false; 557 int rc; 554 558 555 559 serial_dev_t *sdev = serial_dev_new(); … … 559 563 sdev->kdev->svc_id = service_id; 560 564 561 intrc = loc_service_get_name(service_id, &sdev->kdev->svc_name);565 rc = loc_service_get_name(service_id, &sdev->kdev->svc_name); 562 566 if (rc != EOK) 563 567 goto fail; … … 582 586 sdev->sess = loc_service_connect(service_id, INTERFACE_DDF, 583 587 IPC_FLAG_BLOCKING); 588 589 rc = chardev_open(sdev->sess, &sdev->chardev); 590 if (rc != EOK) { 591 async_hangup(sdev->sess); 592 sdev->sess = NULL; 593 list_remove(&sdev->link); 594 goto fail; 595 } 584 596 585 597 fid_t fid = fibril_create(serial_consumer, sdev); -
uspace/srv/hid/input/serial.h
rc4c6025 r74017ce 39 39 40 40 #include <async.h> 41 #include <io/chardev.h> 41 42 #include "kbd.h" 42 43 … … 45 46 link_t link; 46 47 async_sess_t *sess; 48 chardev_t *chardev; 47 49 } serial_dev_t; 48 50 -
uspace/srv/hid/isdv4_tablet/isdv4.c
rc4c6025 r74017ce 27 27 */ 28 28 29 #include <char_dev_iface.h>30 29 #include <errno.h> 30 #include <io/chardev.h> 31 #include <mem.h> 31 32 #include <stdbool.h> 32 33 #include <stdint.h> 33 34 #include <stdlib.h> 34 #include <mem.h>35 35 #include <thread.h> 36 36 … … 298 298 bool reading = true; 299 299 while (reading) { 300 ssize_t read = char_dev_read(state->sess, state->buf + state->buf_end, 301 state->buf_size - state->buf_end); 302 if (read < 0) 300 size_t nread; 301 int rc; 302 303 rc = chardev_read(state->chardev, state->buf + state->buf_end, 304 state->buf_size - state->buf_end, &nread); 305 if (rc != EOK && nread == 0) 303 306 return EIO; 304 state->buf_end += read;307 state->buf_end += nread; 305 308 306 309 size_t i = 0; … … 357 360 return EOK; 358 361 } 359 static bool write_command(async_sess_t *sess, uint8_t command) 360 { 361 return char_dev_write(sess, &command, 1) == 1; 362 363 static bool write_command(chardev_t *chardev, uint8_t command) 364 { 365 int rc; 366 size_t nwr; 367 368 rc = chardev_write(chardev, &command, 1, &nwr); 369 return rc == EOK; 362 370 } 363 371 … … 365 373 isdv4_event_fn event_fn) 366 374 { 375 chardev_t *chardev; 376 int rc; 377 378 rc = chardev_open(sess, &chardev); 379 if (rc != EOK) 380 return rc; 381 367 382 memset(state, 0, sizeof(isdv4_state_t)); 383 368 384 state->sess = sess; 385 state->chardev = chardev; 386 369 387 state->buf = malloc(BUF_SIZE); 370 if (state->buf == NULL) 388 if (state->buf == NULL) { 389 chardev_close(chardev); 371 390 return ENOMEM; 391 } 392 372 393 state->buf_size = BUF_SIZE; 373 394 state->emit_event_fn = event_fn; … … 377 398 int isdv4_init_tablet(isdv4_state_t *state) 378 399 { 379 if (!write_command(state-> sess, CMD_STOP))400 if (!write_command(state->chardev, CMD_STOP)) 380 401 return EIO; 381 402 … … 383 404 384 405 // FIXME: Read all possible garbage before sending commands 385 if (!write_command(state-> sess, CMD_QUERY_STYLUS))406 if (!write_command(state->chardev, CMD_QUERY_STYLUS)) 386 407 return EIO; 387 408 … … 390 411 return rc; 391 412 392 if (!write_command(state-> sess, CMD_QUERY_TOUCH))413 if (!write_command(state->chardev, CMD_QUERY_TOUCH)) 393 414 return EIO; 394 415 … … 397 418 return rc; 398 419 399 if (!write_command(state-> sess, CMD_START))420 if (!write_command(state->chardev, CMD_START)) 400 421 return EIO; 401 422 -
uspace/srv/hid/isdv4_tablet/isdv4.h
rc4c6025 r74017ce 31 31 32 32 #include <async.h> 33 #include <io/chardev.h> 33 34 34 35 typedef struct isdv4_event isdv4_event_t; … … 58 59 bool finger1_pressed; /* Reported as touch button 1 */ 59 60 60 /* Session tothe serial device */61 /** Session with the serial device */ 61 62 async_sess_t *sess; 63 /** Character device */ 64 chardev_t *chardev; 62 65 63 66 /* Receive buffer state */ … … 66 69 size_t buf_end; 67 70 68 /* Callbacks */71 /** Callbacks */ 69 72 isdv4_event_fn emit_event_fn; 70 73 } isdv4_state_t; -
uspace/srv/hid/output/port/chardev.c
rc4c6025 r74017ce 30 30 */ 31 31 32 #include <async.h> 33 #include <config.h> 34 #include <errno.h> 35 #include <fibril_synch.h> 36 #include <io/chardev.h> 37 #include <loc.h> 32 38 #include <stddef.h> 33 39 #include <stdint.h> 34 #include <char_dev_iface.h>35 40 #include <stdio.h> 36 41 #include <stdlib.h> 37 #include <async.h>38 #include <fibril_synch.h>39 #include <loc.h>40 #include <errno.h>41 42 #include <str.h> 42 #include <config.h>43 43 #include "../ctl/serial.h" 44 44 #include "../output.h" … … 48 48 49 49 static async_sess_t *sess; 50 static chardev_t *chardev; 50 51 static service_id_t serial_cat_id; 51 52 … … 57 58 { 58 59 uint8_t byte = (uint8_t) ch; 59 char_dev_write(sess, &byte, 1); 60 size_t nwr; 61 chardev_write(chardev, &byte, 1, &nwr); 62 /* XXX Handle error */ 60 63 } 61 64 62 65 static void chardev_control_puts(const char *str) 63 66 { 64 char_dev_write(sess, (void *) str, str_size(str)); 67 size_t nwr; 68 chardev_write(chardev, (void *) str, str_size(str), &nwr); 69 /* XXX Handle error */ 65 70 } 66 71 … … 126 131 return; 127 132 } 133 134 rc = chardev_open(sess, &chardev); 135 if (rc != EOK) { 136 fibril_mutex_unlock(&discovery_lock); 137 printf("%s: Failed opening character device\n", NAME); 138 return; 139 } 140 128 141 serial_init(chardev_putchar, chardev_control_puts); 129 142
Note:
See TracChangeset
for help on using the changeset viewer.