之前我们的手柄使用的都是/dev/hidrawx节点,自己写了一个service通过这个结点和手柄交互。
最近发现,同样使用/dev/hidrawx节点的手柄, 要是被我自己写的service open一次后,会无法被系统正常识别。
所以便想 我们自己的手柄是不是可以根据pid、vid去创建一个私有的结点。
然后就看代码
发现在hidraw.c里hidraw_connect函数里有创建/dev/hidrawx节点。
所以就在这个位置加了判断,若vid为我们自己的,便去创建一个私有节点。
int hidraw_connect(struct hid_device *hid){
...
...
if(BLUETOOTH_DEVICE_VENDOR_ID_XXXX == hid->vendor){
dev->dev = device_create(hidraw_class, &hid->dev, MKDEV(hidraw_major, minor),
NULL, "%s%d", "hidraw-xxxx", minor);
}else{
dev->dev = device_create(hidraw_class, &hid->dev, MKDEV(hidraw_major, minor),
NULL, "%s%d", "hidraw", minor);
}
若vendor id为BLUETOOTH_DEVICE_VENDOR_ID_XXXX 则创建 hidraw-xxxx