root / hw / adb.h @ fa156e51
History | View | Annotate | Download (2.3 kB)
1 | 7a880d93 | Laurent Vivier | /*
|
---|---|---|---|
2 | 7a880d93 | Laurent Vivier | * QEMU ADB emulation shared definitions and prototypes
|
3 | 7a880d93 | Laurent Vivier | *
|
4 | 7a880d93 | Laurent Vivier | * Copyright (c) 2004-2007 Fabrice Bellard
|
5 | 7a880d93 | Laurent Vivier | * Copyright (c) 2007 Jocelyn Mayer
|
6 | 7a880d93 | Laurent Vivier | *
|
7 | 7a880d93 | Laurent Vivier | * Permission is hereby granted, free of charge, to any person obtaining a copy
|
8 | 7a880d93 | Laurent Vivier | * of this software and associated documentation files (the "Software"), to deal
|
9 | 7a880d93 | Laurent Vivier | * in the Software without restriction, including without limitation the rights
|
10 | 7a880d93 | Laurent Vivier | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11 | 7a880d93 | Laurent Vivier | * copies of the Software, and to permit persons to whom the Software is
|
12 | 7a880d93 | Laurent Vivier | * furnished to do so, subject to the following conditions:
|
13 | 7a880d93 | Laurent Vivier | *
|
14 | 7a880d93 | Laurent Vivier | * The above copyright notice and this permission notice shall be included in
|
15 | 7a880d93 | Laurent Vivier | * all copies or substantial portions of the Software.
|
16 | 7a880d93 | Laurent Vivier | *
|
17 | 7a880d93 | Laurent Vivier | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18 | 7a880d93 | Laurent Vivier | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19 | 7a880d93 | Laurent Vivier | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
20 | 7a880d93 | Laurent Vivier | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21 | 7a880d93 | Laurent Vivier | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22 | 7a880d93 | Laurent Vivier | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23 | 7a880d93 | Laurent Vivier | * THE SOFTWARE.
|
24 | 7a880d93 | Laurent Vivier | */
|
25 | 7a880d93 | Laurent Vivier | |
26 | 7a880d93 | Laurent Vivier | #if !defined(__ADB_H__)
|
27 | 7a880d93 | Laurent Vivier | #define __ADB_H__
|
28 | 7a880d93 | Laurent Vivier | |
29 | 7a880d93 | Laurent Vivier | #define MAX_ADB_DEVICES 16 |
30 | 7a880d93 | Laurent Vivier | |
31 | 7a880d93 | Laurent Vivier | #define ADB_MAX_OUT_LEN 16 |
32 | 7a880d93 | Laurent Vivier | |
33 | 7a880d93 | Laurent Vivier | typedef struct ADBDevice ADBDevice; |
34 | 7a880d93 | Laurent Vivier | |
35 | 7a880d93 | Laurent Vivier | /* buf = NULL means polling */
|
36 | 7a880d93 | Laurent Vivier | typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out, |
37 | 7a880d93 | Laurent Vivier | const uint8_t *buf, int len); |
38 | 7a880d93 | Laurent Vivier | typedef int ADBDeviceReset(ADBDevice *d); |
39 | 7a880d93 | Laurent Vivier | |
40 | 7a880d93 | Laurent Vivier | struct ADBDevice {
|
41 | 7a880d93 | Laurent Vivier | struct ADBBusState *bus;
|
42 | 7a880d93 | Laurent Vivier | int devaddr;
|
43 | 7a880d93 | Laurent Vivier | int handler;
|
44 | 7a880d93 | Laurent Vivier | ADBDeviceRequest *devreq; |
45 | 7a880d93 | Laurent Vivier | ADBDeviceReset *devreset; |
46 | 7a880d93 | Laurent Vivier | void *opaque;
|
47 | 7a880d93 | Laurent Vivier | }; |
48 | 7a880d93 | Laurent Vivier | |
49 | 7a880d93 | Laurent Vivier | typedef struct ADBBusState { |
50 | 7a880d93 | Laurent Vivier | ADBDevice devices[MAX_ADB_DEVICES]; |
51 | 7a880d93 | Laurent Vivier | int nb_devices;
|
52 | 7a880d93 | Laurent Vivier | int poll_index;
|
53 | 7a880d93 | Laurent Vivier | } ADBBusState; |
54 | 7a880d93 | Laurent Vivier | |
55 | 7a880d93 | Laurent Vivier | int adb_request(ADBBusState *s, uint8_t *buf_out,
|
56 | 7a880d93 | Laurent Vivier | const uint8_t *buf, int len); |
57 | 7a880d93 | Laurent Vivier | int adb_poll(ADBBusState *s, uint8_t *buf_out);
|
58 | 7a880d93 | Laurent Vivier | |
59 | 7a880d93 | Laurent Vivier | ADBDevice *adb_register_device(ADBBusState *s, int devaddr,
|
60 | 7a880d93 | Laurent Vivier | ADBDeviceRequest *devreq, |
61 | 7a880d93 | Laurent Vivier | ADBDeviceReset *devreset, |
62 | 7a880d93 | Laurent Vivier | void *opaque);
|
63 | 7a880d93 | Laurent Vivier | void adb_kbd_init(ADBBusState *bus);
|
64 | 7a880d93 | Laurent Vivier | void adb_mouse_init(ADBBusState *bus);
|
65 | 7a880d93 | Laurent Vivier | |
66 | 7a880d93 | Laurent Vivier | extern ADBBusState adb_bus;
|
67 | 7a880d93 | Laurent Vivier | #endif /* !defined(__ADB_H__) */ |