Changeset bb4ba92 in mainline


Ignore:
Timestamp:
2022-06-27T10:46:59Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9e9d9bc6
Parents:
b7155d7
git-author:
Jiri Svoboda <jiri@…> (2022-06-26 17:46:37)
git-committer:
Jiri Svoboda <jiri@…> (2022-06-27 10:46:59)
Message:

XT keyboard driver needs a function for getting scan codes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/hid/xtkbd/xtkbd.c

    rb7155d7 rbb4ba92  
    11/*
     2 * Copyright (c) 2022 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    3  * Copyright (c) 2017 Jiri Svoboda
    44 * All rights reserved.
    55 *
     
    198198}
    199199
     200/** Get one scancode byte from the keyboard.
     201 *
     202 * @param kbd Keyboard
     203 * @param code Place to store scancode byte
     204 * @return EOK on success or an error code
     205 */
     206static errno_t xtkbd_get_code(xt_kbd_t *kbd, uint8_t *code)
     207{
     208        errno_t rc;
     209        size_t nread;
     210
     211        *code = 0;
     212        rc = chardev_read(kbd->chardev, code, 1, &nread, chardev_f_none);
     213        if (rc != EOK) {
     214                ddf_msg(LVL_WARN, "Error reading from keyboard device.");
     215                return EIO;
     216        }
     217
     218        ddf_msg(LVL_DEBUG, "Read scancode: 0x%02hhx", *code);
     219
     220        return EOK;
     221}
     222
    200223/** Get data and parse scancodes.
    201224 *
     
    208231{
    209232        xt_kbd_t *kbd = arg;
    210         size_t nread;
    211233        errno_t rc;
    212234
     
    216238
    217239                uint8_t code = 0;
    218                 rc = chardev_read(kbd->chardev, &code, 1, &nread, chardev_f_none);
     240                rc = xtkbd_get_code(kbd, &code);
    219241                if (rc != EOK)
    220242                        return EIO;
     
    229251                        map_size = sizeof(scanmap_e0) / sizeof(unsigned int);
    230252
    231                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    232                             chardev_f_none);
     253                        rc = xtkbd_get_code(kbd, &code);
    233254                        if (rc != EOK)
    234255                                return EIO;
     
    237258
    238259                        if (code == 0x2a) {  /* Print Screen */
    239                                 rc = chardev_read(kbd->chardev, &code, 1, &nread,
    240                                     chardev_f_none);
     260                                rc = xtkbd_get_code(kbd, &code);
    241261                                if (rc != EOK)
    242262                                        return EIO;
     
    245265                                        continue;
    246266
    247                                 rc = chardev_read(kbd->chardev, &code, 1, &nread,
    248                                     chardev_f_none);
     267                                rc = xtkbd_get_code(kbd, &code);
    249268                                if (rc != EOK)
    250269                                        return EIO;
     
    257276
    258277                        if (code == 0x46) {  /* Break */
    259                                 rc = chardev_read(kbd->chardev, &code, 1, &nread,
    260                                     chardev_f_none);
     278                                rc = xtkbd_get_code(kbd, &code);
    261279                                if (rc != EOK)
    262280                                        return EIO;
     
    265283                                        continue;
    266284
    267                                 rc = chardev_read(kbd->chardev, &code, 1, &nread,
    268                                     chardev_f_none);
     285                                rc = xtkbd_get_code(kbd, &code);
    269286                                if (rc != EOK)
    270287                                        return EIO;
     
    279296                /* Extended special set */
    280297                if (code == KBD_SCANCODE_SET_EXTENDED_SPECIAL) {
    281                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    282                             chardev_f_none);
     298                        rc = xtkbd_get_code(kbd, &code);
    283299                        if (rc != EOK)
    284300                                return EIO;
     
    287303                                continue;
    288304
    289                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    290                             chardev_f_none);
     305                        rc = xtkbd_get_code(kbd, &code);
    291306                        if (rc != EOK)
    292307                                return EIO;
     
    295310                                continue;
    296311
    297                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    298                             chardev_f_none);
     312                        rc = xtkbd_get_code(kbd, &code);
    299313                        if (rc != EOK)
    300314                                return EIO;
     
    303317                                continue;
    304318
    305                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    306                             chardev_f_none);
     319                        rc = xtkbd_get_code(kbd, &code);
    307320                        if (rc != EOK)
    308321                                return EIO;
     
    311324                                continue;
    312325
    313                         rc = chardev_read(kbd->chardev, &code, 1, &nread,
    314                             chardev_f_none);
     326                        rc = xtkbd_get_code(kbd, &code);
    315327                        if (rc != EOK)
    316328                                return EIO;
Note: See TracChangeset for help on using the changeset viewer.