USB 장치 중에 vid가 0bda이고 pid가 8176인 장치가 연결되어 있는지 알아 보는 방법입니다.
USB node는 /sys/bus/usb/devices/ 에 생성되고 idVendor와 idProuct를 읽어보면 됩니다.
{
DIR *dir = opendir("/sys/bus/usb/devices/");
struct dirent *dent;
if (dir != NULL) {
while ((dent = readdir(dir)) != NULL) {
char node[50] = {'\0',};
sprintf(node, "/sys/bus/usb/devices/%s/idVendor", dent->d_name);
int vid_fd = open(node, O_RDONLY);
char buf[5];
if (vid_fd > 0) {
read(vid_fd, buf, 4);
ALOGE("node = %s, vid = %s", node, buf);
if (strcmp(buf, "0bda") == 0) {
sprintf(node, "/sys/bus/usb/devices/%s/idProduct", dent->d_name);
int pid_fd = open(node, O_RDONLY);
read(pid_fd, buf, 4);
ALOGE("node = %s, pid = %s", node, buf);
if (pid_fd > 0) {
if (strcmp(buf, "8176") == 0) {
//pid가 8176인 장치가 연결되어 있음
break;
}
close(pid_fd);
}
}
close(vid_fd);
}
}
}
close(dir);
}