Changeset 74017ce in mainline for uspace/srv/hid


Ignore:
Timestamp:
2017-11-22T17:36:54Z (8 years ago)
Author:
Jiri Svoboda <jiri@…>
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)
Message:

Convert char_dev_iface users to chardev.

Location:
uspace/srv/hid
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/input/input.c

    rc4c6025 r74017ce  
    3737 */
    3838
     39#include <adt/fifo.h>
    3940#include <adt/list.h>
    40 #include <stdbool.h>
     41#include <async.h>
     42#include <config.h>
     43#include <errno.h>
     44#include <fibril.h>
    4145#include <fibril_synch.h>
     46#include <io/chardev.h>
     47#include <io/console.h>
     48#include <io/keycode.h>
    4249#include <ipc/services.h>
    4350#include <ipc/input.h>
    44 #include <config.h>
     51#include <loc.h>
     52#include <ns.h>
     53#include <stdbool.h>
    4554#include <stdio.h>
    4655#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>
    5456#include <str_error.h>
    55 #include <char_dev_iface.h>
    56 #include <fibril.h>
    57 #include "layout.h"
     57
     58#include "input.h"
    5859#include "kbd.h"
    5960#include "kbd_port.h"
    6061#include "kbd_ctl.h"
     62#include "layout.h"
    6163#include "mouse.h"
    6264#include "mouse_proto.h"
    6365#include "serial.h"
    64 #include "input.h"
    6566
    6667#define NUM_LAYOUTS  4
     
    536537        while (true) {
    537538                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 */
    540543                kbd_push_data(sdev->kdev, data);
    541544        }
     
    552555{
    553556        bool match = false;
     557        int rc;
    554558
    555559        serial_dev_t *sdev = serial_dev_new();
     
    559563        sdev->kdev->svc_id = service_id;
    560564       
    561         int rc = loc_service_get_name(service_id, &sdev->kdev->svc_name);
     565        rc = loc_service_get_name(service_id, &sdev->kdev->svc_name);
    562566        if (rc != EOK)
    563567                goto fail;
     
    582586                sdev->sess = loc_service_connect(service_id, INTERFACE_DDF,
    583587                    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                }
    584596
    585597                fid_t fid = fibril_create(serial_consumer, sdev);
  • uspace/srv/hid/input/serial.h

    rc4c6025 r74017ce  
    3939
    4040#include <async.h>
     41#include <io/chardev.h>
    4142#include "kbd.h"
    4243
     
    4546        link_t link;
    4647        async_sess_t *sess;
     48        chardev_t *chardev;
    4749} serial_dev_t;
    4850
  • uspace/srv/hid/isdv4_tablet/isdv4.c

    rc4c6025 r74017ce  
    2727 */
    2828
    29 #include <char_dev_iface.h>
    3029#include <errno.h>
     30#include <io/chardev.h>
     31#include <mem.h>
    3132#include <stdbool.h>
    3233#include <stdint.h>
    3334#include <stdlib.h>
    34 #include <mem.h>
    3535#include <thread.h>
    3636
     
    298298        bool reading = true;
    299299        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)
    303306                        return EIO;
    304                 state->buf_end += read;
     307                state->buf_end += nread;
    305308
    306309                size_t i = 0;
     
    357360        return EOK;
    358361}
    359 static bool write_command(async_sess_t *sess, uint8_t command)
    360 {
    361         return char_dev_write(sess, &command, 1) == 1;
     362
     363static 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;
    362370}
    363371
     
    365373    isdv4_event_fn event_fn)
    366374{
     375        chardev_t *chardev;
     376        int rc;
     377
     378        rc = chardev_open(sess, &chardev);
     379        if (rc != EOK)
     380                return rc;
     381
    367382        memset(state, 0, sizeof(isdv4_state_t));
     383
    368384        state->sess = sess;
     385        state->chardev = chardev;
     386
    369387        state->buf = malloc(BUF_SIZE);
    370         if (state->buf == NULL)
     388        if (state->buf == NULL) {
     389                chardev_close(chardev);
    371390                return ENOMEM;
     391        }
     392
    372393        state->buf_size = BUF_SIZE;
    373394        state->emit_event_fn = event_fn;
     
    377398int isdv4_init_tablet(isdv4_state_t *state)
    378399{
    379         if (!write_command(state->sess, CMD_STOP))
     400        if (!write_command(state->chardev, CMD_STOP))
    380401                return EIO;
    381402
     
    383404
    384405        // 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))
    386407                return EIO;
    387408
     
    390411                return rc;
    391412
    392         if (!write_command(state->sess, CMD_QUERY_TOUCH))
     413        if (!write_command(state->chardev, CMD_QUERY_TOUCH))
    393414                return EIO;
    394415
     
    397418                return rc;
    398419
    399         if (!write_command(state->sess, CMD_START))
     420        if (!write_command(state->chardev, CMD_START))
    400421                return EIO;
    401422
  • uspace/srv/hid/isdv4_tablet/isdv4.h

    rc4c6025 r74017ce  
    3131
    3232#include <async.h>
     33#include <io/chardev.h>
    3334
    3435typedef struct isdv4_event isdv4_event_t;
     
    5859        bool finger1_pressed; /* Reported as touch button 1 */
    5960
    60         /* Session to the serial device */
     61        /** Session with the serial device */
    6162        async_sess_t *sess;
     63        /** Character device */
     64        chardev_t *chardev;
    6265
    6366        /* Receive buffer state */
     
    6669        size_t buf_end;
    6770
    68         /* Callbacks */
     71        /** Callbacks */
    6972        isdv4_event_fn emit_event_fn;
    7073} isdv4_state_t;
  • uspace/srv/hid/output/port/chardev.c

    rc4c6025 r74017ce  
    3030 */
    3131
     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>
    3238#include <stddef.h>
    3339#include <stdint.h>
    34 #include <char_dev_iface.h>
    3540#include <stdio.h>
    3641#include <stdlib.h>
    37 #include <async.h>
    38 #include <fibril_synch.h>
    39 #include <loc.h>
    40 #include <errno.h>
    4142#include <str.h>
    42 #include <config.h>
    4343#include "../ctl/serial.h"
    4444#include "../output.h"
     
    4848
    4949static async_sess_t *sess;
     50static chardev_t *chardev;
    5051static service_id_t serial_cat_id;
    5152
     
    5758{
    5859        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 */
    6063}
    6164
    6265static void chardev_control_puts(const char *str)
    6366{
    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 */
    6570}
    6671
     
    126131                return;
    127132        }
     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
    128141        serial_init(chardev_putchar, chardev_control_puts);
    129142
Note: See TracChangeset for help on using the changeset viewer.