23,124
社区成员
发帖
与我相关
我的任务
分享
usb_init();
nret=usb_find_busses();
if(nret<0)
{
sprintf(g_buf,"usb_find_busses nret:[%d] fail:[%s]",nret,strerror(errno));
return (*env)->NewStringUTF(env,g_buf);
}
nret1=nret;
nret=usb_find_devices();
if(nret<0)
{
sprintf(g_buf,"nret1:[%d] usb_find_devices nret:[%d] fail:[%s]",nret1,nret,strerror(errno));
return (*env)->NewStringUTF(env,g_buf);
}
#ifdef myhid_debug
sprintf(g_buf,"libenkb:usb_find_busses[%d] usb_find_devices[%d]\n",nret1,nret);
writelog(g_buf);
#endif
for (bus = usb_busses; bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
if(dev->descriptor.idVendor==VENDOR_ID&& dev->descriptor.idProduct == PRODUCT_ID)
{
findflag=1;
goto find_ok;
}
}
}
if(findflag==0)
{
return (*env)->NewStringUTF(env, "hid device not find!");
}
find_ok:
udev=usb_open(dev);
if(udev==NULL)
{
return (*env)->NewStringUTF(env,"hid open fail!");
}
#ifdef myhid_debug
sprintf(g_buf,"idVendor:0x%x idProduct:0x%0x iManufacturer:%d bNumEndpoints:0x%0x",dev->descriptor.idVendor,dev->descriptor.idProduct,dev->descriptor.iManufacturer,dev->config->interface->altsetting->bNumEndpoints);
writelog(g_buf);
#endif
nret=usb_detach_kernel_driver_np(udev,0);
/*
if(nret<0)
{
sprintf(g_buf,"usb_detach_kernel_driver_np nret:[%d] fail:[%s]",nret,strerror(errno));
return (*env)->NewStringUTF(env,g_buf);
}
*/
nret=usb_claim_interface(udev,0);
int nret=usb_release_interface(udev,0);
if(nret<0)
{
sprintf(g_buf,"usb_release_interface nret:[%d] fail:[%s]",nret,strerror(errno));
return (*env)->NewStringUTF(env,g_buf);
}
nret=usb_close(udev);
if(nret<0)
{
sprintf(g_buf,"usb_close ret:[%d] fail:[%s]",nret,strerror(errno));
return (*env)->NewStringUTF(env,g_buf);
}