gpt4 book ai didi

c - 如何从 Linux 存储库调用此方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:12 25 4
gpt4 key购买 nike

一段时间以来,我一直在努力寻找一种方法来控制游戏 Buzz(有线,来自 Playstation 2)中的一组 Controller 上的灯。您可以在 Stack Overflow 上的问题中看到我的一些失败尝试

所以我转向了一种更基本的 linux 发送消息的方法,但通过将数据管道传输到/dev/hidraw0 也失败了。

然后我在 linux 存储库中发现了一个文件,它专门提到了蜂鸣器 Controller ( /linux/drivers/hid/hid-sony.c ),以及它们有灯的事实。它甚至有一个名为 buzz_set_leds 的方法(第 1512 行):

static void buzz_set_leds(struct sony_sc *sc)

所以我 100% 确定这是我正在尝试做的代码。

我尝试过将其包含在 c 文件中,但我无法包含 hid-sony,因为我似乎缺少这些文件。

#include <linux/device.h>
#include <linux/hid.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/leds.h>
#include <linux/power_supply.h>
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/idr.h>
#include <linux/input/mt.h>

#include "hid-ids.h"

在编译时,我得到这个错误:

hid-sony.c:29:26: fatal error: linux/device.h: No such file or directory
#include <linux/device.h>
^
compilation terminated.

抱歉,我是一名没有 C 语言背景的 Ruby 程序员。

如何获取这些缺失的“linux/”文件并从我的 C 库中引用它们?

最佳答案

非常感谢@brian-malehorn、@alan-au 和@colonel-thirty-two。我自己回答这个问题,因为他们都没有告诉我确切的答案,但他们引导我找到了答案。

这个具体问题的答案是“不要”。

潜在的问题是“我如何在 Linux 中打开这些灯?”我就是这样做的。

在/sys/class/leds中,当 Controller 被插入时,里面有这4个文件夹(不是实际文件夹,而是表示为文件系统中的文件夹)。

0003:054C:0002.0007::buzz1
0003:054C:0002.0007::buzz2
0003:054C:0002.0007::buzz3
0003:054C:0002.0007::buzz4

中间2个十六进制数字是来自lsusb的设备描述符的元素

Bus 002 Device 011: ID 054c:0002 Sony Corp. Standard HUB

最后一个数字似乎是 USB 设备和实例插入时的标识符。如果我拔下此设备并重新插入,最后一个数字会递增。

我现在无法弄清楚第一个是什么,但从理论上讲,它可能是 HID 接口(interface)类。这是来自 lsusb -vd 054c:0002

bInterfaceClass         3 Human Interface Device

这些文件夹中的每一个都包含一个包含数字 1 的 max_brightness"file",以及一个可用于控制它的亮度"file"。

我不得不打开这些的权限(这有点笨拙,但它做到了):

cd /sys/class/leds
sudo chmod 777 */brightness

然后我可以像这样点亮 LED:

echo 1 > 0003\:054C\:0002.0007\:\:buzz1/brightness

然后像这样关闭 LED:

echo 0 > 0003\:054C\:0002.0007\:\:buzz1/brightness

我还可以绕过所有那些复杂的数字变化和转义冒号:

echo 1 > *buzz1/brightness

关于c - 如何从 Linux 存储库调用此方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com