File: hidapi.py

package info (click to toggle)
pysdl2 0.9.17%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,328 kB
  • sloc: python: 24,685; makefile: 36; sh: 8
file content (114 lines) | stat: -rw-r--r-- 4,323 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from ctypes import (
    c_char_p, c_wchar_p, c_int, c_ubyte, c_ushort, c_size_t, c_void_p, Structure
)
from ctypes import POINTER as _P
from .dll import _bind, SDLFunc, AttributeDict
from .stdinc import Uint32, SDL_bool


__all__ = [
    # Structs
    "SDL_hid_device", "SDL_hid_device_info",
]


# Structs & opaque typedefs

class SDL_hid_device(c_void_p):
    pass

class SDL_hid_device_info(Structure):
    pass

SDL_hid_device_info._fields_ = [
    ("path", c_char_p),
    ("vendor_id", c_ushort),
    ("product_id", c_ushort),
    ("serial_number", c_wchar_p),
    ("release_number", c_ushort),
    ("manufacturer_string", c_wchar_p),
    ("product_string", c_wchar_p),
    ("usage_page", c_ushort),
    ("usage", c_ushort),
    ("interface_number", c_int),
    ("interface_class", c_int),
    ("interface_subclass", c_int),
    ("interface_protocol", c_int),
    ("next", _P(SDL_hid_device_info))
]


# Raw ctypes function definitions

_funcdefs = [
    SDLFunc("SDL_hid_init", None, c_int, added='2.0.18'),
    SDLFunc("SDL_hid_exit", None, c_int, added='2.0.18'),
    SDLFunc("SDL_hid_device_change_count", None, Uint32, added='2.0.18'),
    SDLFunc("SDL_hid_enumerate", [c_ushort, c_ushort], _P(SDL_hid_device_info), added='2.0.18'),
    SDLFunc("SDL_hid_free_enumeration", [_P(SDL_hid_device_info)], None, added='2.0.18'),
    SDLFunc("SDL_hid_open", [c_ushort, c_ushort, c_wchar_p], _P(SDL_hid_device), added='2.0.18'),
    SDLFunc("SDL_hid_open_path", [c_char_p, c_int], _P(SDL_hid_device), added='2.0.18'),
    # NOTE: not sure if _P(c_ubyte) is right for SDL_hid_write, need to test
    SDLFunc("SDL_hid_write", [_P(SDL_hid_device), _P(c_ubyte), c_size_t], c_int, added='2.0.18'),
    SDLFunc("SDL_hid_read_timeout",
        [_P(SDL_hid_device), _P(c_ubyte), c_size_t, c_int],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_read", [_P(SDL_hid_device), _P(c_ubyte), c_size_t], c_int, added='2.0.18'),
    SDLFunc("SDL_hid_set_nonblocking", [_P(SDL_hid_device), c_int], c_int, added='2.0.18'),
    SDLFunc("SDL_hid_send_feature_report",
        [_P(SDL_hid_device), _P(c_ubyte), c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_get_feature_report",
        [_P(SDL_hid_device), _P(c_ubyte), c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_close", [_P(SDL_hid_device)], None, added='2.0.18'),
    SDLFunc("SDL_hid_get_manufacturer_string",
        [_P(SDL_hid_device), c_wchar_p, c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_get_product_string",
        [_P(SDL_hid_device), c_wchar_p, c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_get_serial_number_string",
        [_P(SDL_hid_device), c_wchar_p, c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_get_indexed_string",
        [_P(SDL_hid_device), c_int, c_wchar_p, c_size_t],
        returns = c_int, added = '2.0.18'
    ),
    SDLFunc("SDL_hid_ble_scan", [SDL_bool], None, added='2.0.18'),
]
_ctypes = AttributeDict()
for f in _funcdefs:
    _ctypes[f.name] = _bind(f.name, f.args, f.returns, f.added)
    __all__.append(f.name) # Add all bound functions to module namespace


# Aliases for ctypes bindings

SDL_hid_init = _ctypes["SDL_hid_init"]
SDL_hid_exit = _ctypes["SDL_hid_exit"]
SDL_hid_device_change_count = _ctypes["SDL_hid_device_change_count"]
SDL_hid_enumerate = _ctypes["SDL_hid_enumerate"]
SDL_hid_free_enumeration = _ctypes["SDL_hid_free_enumeration"]
SDL_hid_open = _ctypes["SDL_hid_open"]
SDL_hid_open_path = _ctypes["SDL_hid_open_path"]

SDL_hid_write = _ctypes["SDL_hid_write"]
SDL_hid_read_timeout = _ctypes["SDL_hid_read_timeout"]
SDL_hid_read = _ctypes["SDL_hid_read"]

SDL_hid_set_nonblocking = _ctypes["SDL_hid_set_nonblocking"]
SDL_hid_send_feature_report = _ctypes["SDL_hid_send_feature_report"]
SDL_hid_get_feature_report = _ctypes["SDL_hid_get_feature_report"]
SDL_hid_close = _ctypes["SDL_hid_close"]
SDL_hid_get_manufacturer_string = _ctypes["SDL_hid_get_manufacturer_string"]
SDL_hid_get_product_string = _ctypes["SDL_hid_get_product_string"]
SDL_hid_get_serial_number_string = _ctypes["SDL_hid_get_serial_number_string"]
SDL_hid_get_indexed_string = _ctypes["SDL_hid_get_indexed_string"]
SDL_hid_ble_scan = _ctypes["SDL_hid_ble_scan"]