source: mainline/uspace/drv/usbhid/hiddev.h@ 79c8a96

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 79c8a96 was 00b13408, checked in by Lubos Slovak <lubos.slovak@…>, 14 years ago

Fixed destroying of KBD structure when polling ended.

The structure must be destroyed in the autorepeat fibril, as there is
no nice way to stop the fibril on demand.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/*
2 * Copyright (c) 2011 Lubos Slovak
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup drvusbhid
30 * @{
31 */
32/** @file
33 * Generic USB HID device structure and API.
34 *
35 * @todo Add function for parsing report - this is generic HID function, not
36 * keyboard-specific, as the report parser is also generic.
37 * @todo Add function for polling as that is also a generic HID process.
38 * @todo Add interrupt in pipe to the structure.
39 */
40
41#ifndef USBHID_HIDDEV_H_
42#define USBHID_HIDDEV_H_
43
44#include <stdint.h>
45
46#include <ddf/driver.h>
47
48#include <usb/classes/hid.h>
49#include <usb/pipes.h>
50#include <usb/classes/hidparser.h>
51
52/*----------------------------------------------------------------------------*/
53
54/**
55 * USB/HID device type.
56 *
57 * Holds a reference to DDF device structure, and HID-specific data, such
58 * as information about used pipes (one Control pipe and one Interrupt In pipe),
59 * polling interval, assigned interface number, Report descriptor and a
60 * reference to the Report parser used to parse incoming reports and composing
61 * outgoing reports.
62 */
63typedef struct {
64 /** DDF device representing the controlled HID device. */
65 ddf_dev_t *device;
66
67 /** Physical connection to the device. */
68 usb_device_connection_t wire;
69 /** USB pipe corresponding to the default Control endpoint. */
70 usb_endpoint_pipe_t ctrl_pipe;
71 /** USB pipe corresponding to the Interrupt In (polling) pipe. */
72 usb_endpoint_pipe_t poll_pipe;
73
74 /** Polling interval retreived from the Interface descriptor. */
75 short poll_interval;
76
77 /** Interface number assigned to this device. */
78 uint16_t iface;
79
80 /** Report descriptor. */
81 uint8_t *report_desc;
82
83 size_t report_desc_size;
84
85 /** HID Report parser. */
86 usb_hid_report_parser_t *parser;
87
88 /** State of the structure (for checking before use). */
89 int initialized;
90} usbhid_dev_t;
91
92/*----------------------------------------------------------------------------*/
93
94usbhid_dev_t *usbhid_dev_new(void);
95
96void usbhid_dev_free(usbhid_dev_t **hid_dev);
97
98int usbhid_dev_init(usbhid_dev_t *hid_dev, ddf_dev_t *dev,
99 usb_endpoint_description_t *poll_ep_desc);
100
101/*----------------------------------------------------------------------------*/
102
103#endif /* USBHID_HIDDEV_H_ */
104
105/**
106 * @}
107 */
Note: See TracBrowser for help on using the repository browser.