从usb 实际应用中分析源码之claim通信节点

1.usb想要通信就必须要claim 到通信的节点上.

    mUsbDeviceConnection.claimInterface(intf, forceClaim);

2.调用的是本地方法在 android_hardware_UsbDeviceConnection.cpp

static jboolean
android_hardware_UsbDeviceConnection_claim_interface(JNIEnv *env, jobject thiz,
        int interfaceID, jboolean force)
{
    struct usb_device* device = get_device_from_object(env, thiz);
    if (!device) {
        ALOGE("device is closed in native_claim_interface");
        return -1;
    }
        //这个是使用usbhost.c 里面的方法来获取节点的
    int ret = usb_device_claim_interface(device, interfaceID);
//个人认为force 应该true 因为这样的好处你可以在一个应用不用close,在另一个就可以open.个人就是在使用系统usb函数连接使用时,然后这时你再去用libusb库发现连接不上,但是在libusb库添加下面这个机制就可以了. 
    if (ret && force && errno == EBUSY) {
        // disconnect kernel driver and try again
        usb_device_connect_kernel_driver(device, interfaceID, false);
        ret = usb_device_claim_interface(device, interfaceID);
    }
    re
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值