linux/include/linux/uhid.h
<<
>>
Prefs
   1#ifndef __UHID_H_
   2#define __UHID_H_
   3
   4/*
   5 * User-space I/O driver support for HID subsystem
   6 * Copyright (c) 2012 David Herrmann
   7 */
   8
   9/*
  10 * This program is free software; you can redistribute it and/or modify it
  11 * under the terms of the GNU General Public License as published by the Free
  12 * Software Foundation; either version 2 of the License, or (at your option)
  13 * any later version.
  14 */
  15
  16/*
  17 * Public header for user-space communication. We try to keep every structure
  18 * aligned but to be safe we also use __attribute__((__packed__)). Therefore,
  19 * the communication should be ABI compatible even between architectures.
  20 */
  21
  22#include <linux/input.h>
  23#include <linux/types.h>
  24
  25enum uhid_event_type {
  26        UHID_CREATE,
  27        UHID_DESTROY,
  28        UHID_START,
  29        UHID_STOP,
  30        UHID_OPEN,
  31        UHID_CLOSE,
  32        UHID_OUTPUT,
  33        UHID_OUTPUT_EV,
  34        UHID_INPUT,
  35        UHID_FEATURE,
  36        UHID_FEATURE_ANSWER,
  37};
  38
  39struct uhid_create_req {
  40        __u8 name[128];
  41        __u8 phys[64];
  42        __u8 uniq[64];
  43        __u8 __user *rd_data;
  44        __u16 rd_size;
  45
  46        __u16 bus;
  47        __u32 vendor;
  48        __u32 product;
  49        __u32 version;
  50        __u32 country;
  51} __attribute__((__packed__));
  52
  53#define UHID_DATA_MAX 4096
  54
  55enum uhid_report_type {
  56        UHID_FEATURE_REPORT,
  57        UHID_OUTPUT_REPORT,
  58        UHID_INPUT_REPORT,
  59};
  60
  61struct uhid_input_req {
  62        __u8 data[UHID_DATA_MAX];
  63        __u16 size;
  64} __attribute__((__packed__));
  65
  66struct uhid_output_req {
  67        __u8 data[UHID_DATA_MAX];
  68        __u16 size;
  69        __u8 rtype;
  70} __attribute__((__packed__));
  71
  72struct uhid_output_ev_req {
  73        __u16 type;
  74        __u16 code;
  75        __s32 value;
  76} __attribute__((__packed__));
  77
  78struct uhid_feature_req {
  79        __u32 id;
  80        __u8 rnum;
  81        __u8 rtype;
  82} __attribute__((__packed__));
  83
  84struct uhid_feature_answer_req {
  85        __u32 id;
  86        __u16 err;
  87        __u16 size;
  88        __u8 data[UHID_DATA_MAX];
  89};
  90
  91struct uhid_event {
  92        __u32 type;
  93
  94        union {
  95                struct uhid_create_req create;
  96                struct uhid_input_req input;
  97                struct uhid_output_req output;
  98                struct uhid_output_ev_req output_ev;
  99                struct uhid_feature_req feature;
 100                struct uhid_feature_answer_req feature_answer;
 101        } u;
 102} __attribute__((__packed__));
 103
 104#endif /* __UHID_H_ */
 105
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.