• David Herrmann's avatar
    HID: uhid: implement feature requests · fcfcf0de
    David Herrmann authored
    HID standard allows sending a feature request to the device which is
    answered by an HID report. uhid implements this by sending a UHID_FEATURE
    event to user-space which then must answer with UHID_FEATURE_ANSWER. If it
    doesn't do this in a timely manner, the request is discarded silently.
    
    We serialize the feature requests, that is, there is always only a single
    active feature-request sent to user-space, other requests have to wait.
    HIDP and USB-HID do it the same way.
    
    Because we discard feature-requests silently, we must make sure to match
    a response to the corresponding request. We use sequence-IDs for this so
    user-space must copy the ID from the request into the answer.
    Feature-answers are ignored if they do not contain the same ID as the
    currently pending feature request.
    
    Internally, we must make sure that feature-requests are synchronized with
    UHID_DESTROY and close() events. We must not dead-lock when closing the
    HID device, either, so we have to use separate locks.
    Signed-off-by: default avatarDavid Herrmann <dh.herrmann@googlemail.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    fcfcf0de
uhid.c 12.1 KB