我正在使用嵌入式 Linux(内核 2.6.31)的系统。
内部是一颗AT91SAM9G20芯片,部分Pin转发到外部。
现在我想将它们用作 GPIO 输入。
我阅读了有关通过文件系统使用 GPIO 的 gpio.txt 文档,直到这里为止它都运行良好。我将一些开关连接到 gpio 引脚,我可以在/sys/class/gpio/gpioX/value. 但现在我想对更改做出反应,而不是在循环中忙等待。(即回显“Switch1 被按下”)。
我想我在这里需要中断,但是如果不编写自己的内核驱动程序,我无法找到如何使用它们。我对 Linux 和 C 比较陌生(我通常用 Java 编程),所以我也想通过 sysfs 处理中断。但我的问题是,我的 GPIO 目录中没有“edge”文件(我猜是因为这只是从内核版本 2.6.33+ 开始)。是对的吗?我在那里有一个uevent文件,而不是“edge”,该文件在gpio.txt.
在 gpio.txt 文档中提到了一个标准内核驱动程序:“gpio_keys”。可以用这个来解决我的问题吗?
我想使用这个驱动程序比允许用户空间程序操纵内核任务更好。我找到了很多用于编写自己的驱动程序的代码片段,但我什至无法找出gpio.h要包含的 600 个文件中的哪些,以及如何引用该库(交叉编译器找不到 gpio.h 文件) 。
新手问题请多多指教,希望大家多多指教。
提前致谢
我正在寻找一种从我的Android智能手机(HTC Desire with Android 4.0.1)定期进行蓝牙查询的方法.设备已植根,并且是安装的自定义Rom,因此我具有完全权限.我已经编写了一个shellcript,它使用hcitool,hciconfig和hcidump来进行查询.到目前为止工作正常,但对我来说这有点慢.我想这是因为我使用android-app从linux执行一个shellcript的肮脏的解决方法.虽然通过我的应用程序杀死执行的进程我遇到了问题.
所以我想找到一种从Android API查询BT设备的方法.我发现现在没有可能做到这一点,但我读到了可能符合我要求的bluez API.有没有人对我有任何链接,提示或建议?
我没有找到任何有用的东西:/
提前致谢.
编辑(2012-09-28):
好的,我想我现在离解决方案更近一些了.我从bluez.org下载了blueZ库的源代码 然后我将重要文件(hci.h,bluetooth.h,hcilib.h及其源文件)放入我的android项目的jni文件夹中,并将它们编译到我的共享库中.我在函数周围编写了一个JNI Wrapper
hci_inquiry(int dev_id, int len, int nrsp, const uint8_t *lap,inquiry_info **ii, long flags)
Run Code Online (Sandbox Code Playgroud)
并遵循建议的这本书做我的询问.一切都很好,直到这里.
但是当我开始查询时,功能
dev_id = hci_get_route(NULL);
Run Code Online (Sandbox Code Playgroud)
总是返回-1,我无法继续.
蓝牙已激活,我已尝试授予对我的应用程序的root访问权限.不是更好:(
我到底做错了什么?是不是允许从Android应用程序使用BlueZ HCI命令?我的意思是JBlueZ什么都不做呢?
我的本机代码如下所示:
inquiry_info *ii = NULL;
int max_rsp, num_rsp;
int dev_id, sock, len, flags;
int i;
char addr[19] = { 0 };
char name[248] = { 0 };
dev_id = hci_get_route(NULL);
if (dev_id < 0 ) {
LOGI("ERROR ON finding Device ID"); …Run Code Online (Sandbox Code Playgroud) 我正在努力为枚举类提供新的宇宙飞船运算符。让我们看下面的例子:
#include <cstdio>
#include <iostream>
#include <compare>
#include <cstdint>
enum class Animals : uint8_t
{
Bird = 27, //those values are just for making a point
Tiger = 5,
Ant = 100,
Snake = 45,
Wale = 17
};
//auto operator<=(const Animals& lhs, const Animals& rhs) = delete;
//auto operator>=(const Animals& lhs, const Animals& rhs) = delete;
//auto operator<(const Animals& lhs, const Animals& rhs) = delete;
//auto operator>(const Animals& lhs, const Animals& rhs) = delete;
auto operator<=>(const Animals& lhs, const …Run Code Online (Sandbox Code Playgroud)