大神教你如何调用防拆开关接口用于人脸识别专用主板人脸识别整机RK3288主板
防拆接口调用说明
1、防拆接口以上报键值方式
正常时(未被拆机状态),不会上报数据。拆机后,只要按键未被按下,会每隔2秒钟上报KEY_F13(183)键值;
KEY_F13 ==> 183
2、底层注册的input设备
3、开启防拆功能监测和获取键值开启防拆按键:
系统默认是关闭防拆功能,需要apk先去打开此功能,再获取上报的键值。开启方法如下:
调用节点:”/dev/tp_int”
使用write函数控制开启和关闭:
写入'1',代表开启防拆功能监测;
写入'0',代表关闭防拆功能监测;
测试用例:
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct input_event event;
#define OPEN_TAMPER_PATH "/dev/tp_int" //开启和关闭防拆功能监测
int main(int argc, char **argv)
{
char name[64];
int fd = 0;
int fd1 = 0;
char open_tp = '1';
int rc;
if (argc > 1) {
sprintf(name, "/dev/input/event%d", atoi(argv[1]));
if ((fd = open(name, O_RDWR, 0)) >= 0) {
printf("%s: open, fd = %d\n", name, fd);
if((fd1 = open(OPEN_TAMPER_PATH, O_RDWR, 0)) >= 0){
if (write(fd1, &open_tp, sizeof(char)) < 0){ //开启防拆功能监测
printf("fail to write");
return -1;
}
close(fd1);
} else {
printf("open %s error!!!\n",OPEN_TAMPER_PATH);
close(fd1);
return -1;
}
while ((rc = read(fd, &event, sizeof(event))) > 0) { //获取上报的键值183
switch (event.type) {
case EV_KEY:
if (event.code > BTN_MISC) {
printf("Button %d %s",
event.code & 0xff,
event.value ? "press" : "release");
} else {
printf("Key %d (0x%x) %s",
event.code & 0xff,
event.code & 0xff,
event.value ? "press" : "release");
}
break;
case EV_REL: break;
case EV_ABS: break;
}
printf("\n");
}
printf("rc = %d, (%s)\n", rc, strerror(errno));
close(fd);
}
}
return 0;
|