Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/drivers/hid/surface-hid/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  surface_hid_core.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Common/core components for the Surface System Aggregator Module (SSAM) HID
 * transport driver. Provides support for integrated HID devices on Microsoft
 * Surface models.
 *
 * Copyright (C) 2019-2021 Maximilian Luz <luzmaximilian@gmail.com>
 */


#ifndef SURFACE_HID_CORE_H
#define SURFACE_HID_CORE_H

#include <linux/hid.h>
#include <linux/pm.h>
#include <linux/types.h>

#include <linux/surface_aggregator/controller.h>
#include <linux/surface_aggregator/device.h>

enum surface_hid_descriptor_entry {
 SURFACE_HID_DESC_HID    = 0,
 SURFACE_HID_DESC_REPORT = 1,
 SURFACE_HID_DESC_ATTRS  = 2,
};

struct surface_hid_descriptor {
 __u8 desc_len;   /* = 9 */
 __u8 desc_type;   /* = HID_DT_HID */
 __le16 hid_version;
 __u8 country_code;
 __u8 num_descriptors;  /* = 1 */

 __u8 report_desc_type;  /* = HID_DT_REPORT */
 __le16 report_desc_len;
} __packed;

static_assert(sizeof(struct surface_hid_descriptor) == 9);

struct surface_hid_attributes {
 __le32 length;
 __le16 vendor;
 __le16 product;
 __le16 version;
 __u8 _unknown[22];
} __packed;

static_assert(sizeof(struct surface_hid_attributes) == 32);

struct surface_hid_device;

struct surface_hid_device_ops {
 int (*get_descriptor)(struct surface_hid_device *shid, u8 entry, u8 *buf, size_t len);
 int (*output_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
 int (*get_feature_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
 int (*set_feature_report)(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len);
};

struct surface_hid_device {
 struct device *dev;
 struct ssam_controller *ctrl;
 struct ssam_device_uid uid;

 struct surface_hid_descriptor hid_desc;
 struct surface_hid_attributes attrs;

 struct ssam_event_notifier notif;
 struct hid_device *hid;

 struct surface_hid_device_ops ops;
};

int surface_hid_device_add(struct surface_hid_device *shid);
void surface_hid_device_destroy(struct surface_hid_device *shid);

extern const struct dev_pm_ops surface_hid_pm_ops;

#endif /* SURFACE_HID_CORE_H */

Messung V0.5
C=93 H=93 G=92

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.