Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset a2afd8f in mainline for uspace/drv/hid/adb-mouse/adb-mouse.h


Ignore:
Timestamp:
2017-11-13T18:07:46Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master
Children:
0dd4779
Parents:
56763a4
Message:

Move ADB keyboard and mouse support to separate drivers.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/drv/hid/adb-mouse/adb-mouse.h

    r56763a4 ra2afd8f  
    11/*
    2  * Copyright (c) 2011 Martin Decky
     2 * Copyright (c) 2017 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup mouse_proto
    30  * @ingroup input
    31  * @{
    32  */
    33 /**
    34  * @file
    35  * @brief ADB protocol driver.
     29/** @file ADB mouse driver
    3630 */
    3731
     32#ifndef ADB_MOUSE_H
     33#define ADB_MOUSE_H
     34
     35#include <async.h>
     36#include <ddf/driver.h>
    3837#include <stdbool.h>
    39 #include "../mouse.h"
    40 #include "../mouse_port.h"
    41 #include "../mouse_proto.h"
    4238
    43 static mouse_dev_t *mouse_dev;
    44 static bool b1_pressed;
    45 static bool b2_pressed;
     39/** ADB mouse */
     40typedef struct {
     41        ddf_dev_t *dev;
     42        async_sess_t *parent_sess;
     43        ddf_fun_t *fun;
     44        async_sess_t *client_sess;
     45        bool b1_pressed;
     46        bool b2_pressed;
     47} adb_mouse_t;
    4648
    47 static int adb_proto_init(mouse_dev_t *mdev)
    48 {
    49         mouse_dev = mdev;
    50         b1_pressed = false;
    51         b2_pressed = false;
    52        
    53         return 0;
    54 }
     49extern int adb_mouse_add(adb_mouse_t *);
     50extern int adb_mouse_remove(adb_mouse_t *);
     51extern int adb_mouse_gone(adb_mouse_t *);
    5552
    56 /** Process mouse data */
    57 static void adb_proto_parse(sysarg_t data)
    58 {
    59         bool b1, b2;
    60         uint16_t udx, udy;
    61         int dx, dy;
    62        
    63         /* Extract fields. */
    64         b1 = ((data >> 15) & 1) == 0;
    65         udy = (data >> 8) & 0x7f;
    66         b2 = ((data >> 7) & 1) == 0;
    67         udx = data & 0x7f;
    68        
    69         /* Decode 7-bit two's complement signed values. */
    70         dx = (udx & 0x40) ? (udx - 0x80) : udx;
    71         dy = (udy & 0x40) ? (udy - 0x80) : udy;
    72        
    73         if (b1 != b1_pressed) {
    74                 mouse_push_event_button(mouse_dev, 1, b1);
    75                 b1_pressed = b1;
    76         }
    77        
    78         if (b2 != b2_pressed) {
    79                 mouse_push_event_button(mouse_dev, 2, b2);
    80                 b1_pressed = b1;
    81         }
    82        
    83         if (dx != 0 || dy != 0)
    84                 mouse_push_event_move(mouse_dev, dx, dy, 0);
    85 }
     53#endif
    8654
    87 mouse_proto_ops_t adb_proto = {
    88         .parse = adb_proto_parse,
    89         .init = adb_proto_init
    90 };
    91 
    92 /**
    93  * @}
     55/** @}
    9456 */
Note: See TracChangeset for help on using the changeset viewer.