Kernel中Hid和Bnep的初始化

有了前面的L2CAP,RFCOMM的初始化分析,再来分析HidBnep的代码就轻松很多了。基本来说,这两个protol没有太多的新意,直接看代码就可以看出来了。

static int __init hidp_init(void)
{
	int ret;
	BT_INFO("HIDP (Human Interface Emulation) ver %s", VERSION);
//注册了一个hid的driver,hidp_driver见下面
	//其实就是把该driver加载到hid的bus总线上去,通过name进行区分。
	//这里的name是generic-bluetooth,后期用到我们再来具体分析
	ret = hid_register_driver(&hidp_driver);
	if (ret)
		goto err;
	//也就是在proto_list中加入了hid
	//初始化了bt_proto中的BTPROTO_HIDP的值。
	//所以总的来说没有什么好讲的
	ret = hidp_init_sockets();
	if (ret)
		goto err_drv;

	return 0;
err_drv:
	hid_unregister_driver(&hidp_driver);
err:
	return ret;
}

static const struct hid_device_id hidp_table[] = {
	{ HID_BLUETOOTH_DEVICE(HID_ANY_ID, HID_ANY_ID) },
	{ }
};
//主要就是一个name,是generiv-bluetooth
static struct hid_driver hidp_driver = {
	.name = "generic-bluetooth",
	.id_table = hidp_table,
};

对于bnep的初始化,其实看起来也比较简单哦:

static int __init bnep_init(void)
{
	char flt[50] = "";

//根据选项,初始化flt数组
#ifdef CONFIG_BT_BNEP_PROTO_FILTER
	strcat(flt, "protocol ");
#endif

#ifdef CONFIG_BT_BNEP_MC_FILTER
	strcat(flt, "multicast");
#endif

	BT_INFO("BNEP (Ethernet Emulation) ver %s", VERSION);
	if (flt[0])
		BT_INFO("BNEP filters: %s", flt);
//和上面的hid是一样的,只是换了个名字而已
	bnep_sock_init();
	return 0;
}

总的来说,这两个proto基本没有什么新的内容,权当对《kernelbluetooth的初始化》这篇文章的补充吧。至此,晓东对kernelbluetooth statck相关初始化的内容已经全部解释清楚了。大家也许对这些内容有何作用暂时还比较迷茫,不过没有关系,在后面的蓝牙各个操作中,我们会一一为大家揭晓。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值