有了前面的L2CAP,RFCOMM的初始化分析,再来分析Hid和Bnep的代码就轻松很多了。基本来说,这两个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基本没有什么新的内容,权当对《kernel中bluetooth的初始化》这篇文章的补充吧。至此,晓东对kernel中bluetooth
statck相关初始化的内容已经全部解释清楚了。大家也许对这些内容有何作用暂时还比较迷茫,不过没有关系,在后面的蓝牙各个操作中,我们会一一为大家揭晓。
分享到:
相关推荐
linux下的蓝牙接口程序非常好用你可以自由开发应用质量很高非常的好
嗯 想学习蓝牙的来了 好好看那看 是肯定有帮助的 Bluetooth Network Encapsulation Protocol (BNEP) Specifica.pdf
Protocol specifications define the protocols that govern communication among devices on Bluetooth wireless networks.
蓝牙协议core5.3-a2dp-hfp-opp-pbap-avrcp-pan-bnep-hsp-avdtp-map-volume-spp史上最全协议规范,压缩包中包含了所有的蓝牙协议规范文档,值得下载
蓝牙全套5.2协议: Core 4.0~5.2:L2CAP、HCI、无线部分 A2DP ...BNEP CGMP CPS CSS CTN CTS DIS DUN FTP GATT GAVDP GOEP GPP HDP HID HSP IRDA LLS MAP MESH OPP PAN PBAP PXP RFCOMM SPP VDP 等等
文档清单,覆盖全部常见的配置文件profile,和core protocol A2DP_v1.3.1.pdf AVCTP_SPEC_V14.pdf AVDTP_SPEC_V13.pdf AVRCP_v1.6.1.pdf BNEP_Spec_V10.pdf Core_v5.0.pdf FTP_v1.3.1.pdf HDP_SPEC_V11.pdf ...
RFCOMM, BNEP, CMTP 和 HIDP内核实现 HCI UART, USB, PCMCIA 和虚拟设备驱动 通用蓝牙和SDP库和守候进程 配置和测试小工具 协议解码和分析工具 BlueZ内核模块,程序开发库和小工具能在支持Linux的多种硬件架构...
Linux 系统下的蓝牙协议栈,应用在不同的设备和领域中。 BlueZ 是 Linux 的官方蓝牙协议栈,也是目前应用最广 泛的协议栈,几乎支持所有已通过认证的蓝牙设备。对于基 于主机的蓝牙应用,目前常见的硬件接口有 UART...
及早加入BQB,可是使产品开发的时间和费用最小化。 蓝牙产品认证方针,在PRD中的文档,是由蓝牙认证评估委员会(BQRB)制定的,该委员会由来自9个蓝牙SIG的发起企业的代表选举产生。认证程序由代表BQRB利益的蓝牙认证...
蓝牙协议体系中的协议按 SIG 的关注程度分为四层:核心协议、电缆替代协议、电话传送控制协议和选用协议。 蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM) 蓝牙协议规范包括 HCI、L2CAP、SDP、...
通过马来酸酐(MA)与 BNEP上的羟基反应, 在BNEP上引入羧基亲水性基团和碳碳双键,制得自乳化的阴离子双酚A酚醛环氧树脂(WNEP)。然后将其通过相反转乳化技术制备成WNEP乳液并作为浸渍剂应用于机油滤纸上。采用傅里叶...
AVCTP_SPEC_V13r00.pdf 'BNEP Specification.pdf' DeviceID_SPEC_V13.pdf HID_SPEC_V11.pdf 'PAN Spec v1_0'/ AVCTP_SPEC_V14.pdf BPP_SPEC_V10.pdf DI_SPEC_V12r00.pdf HIDS_SPEC_V10.pdf 'PAN Spec v1_0.zip' ...
├─BNEP=Bluetooth Network Encapsulation Protocol (Qualifiable) │ BNEP Specification.pdf │ ├─BPP=Basic Printing Profile │ BPP_SPEC_V10.pdf │ BPP_SPEC_V12r00.pdf │ ├─Core │ Core v2.0 + EDR....
├─BNEP=Bluetooth Network Encapsulation Protocol (Qualifiable) │ BNEP Specification.pdf │ ├─BPP=Basic Printing Profile │ BPP_SPEC_V10.pdf │ BPP_SPEC_V12r00.pdf │ ├─Core │ Core v2.0 + EDR....
蓝牙核心技术概述(一):蓝牙概述 蓝牙核心技术概述(二):蓝牙使用场景 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、...蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、 BNEP、 AVDTP、 AVCTP)
蓝牙个人局域网(PAN)应用规范定义了使蓝牙设备能加入个人局域网的方法,规定了单个主从网中蓝牙设备之间的网络发现、网络形成、地址分配、地址解析、域名解析、桥接或路由和网络安全,一个或多个蓝牙设备的网络接...
信息家电是当前国内外研究的热点,而信息家电中又以数据传输方式的性...本文首先介绍蓝牙的HCI和蓝牙协议L2CAP、BNEP,然后介绍如何在Linux2.4.18下实现USB蓝牙驱动,最后介绍如何实现在蓝牙个人局域网中进行无线通信。
BNEP implementation for Linux Bluetooth stack (BlueZ).
[ 3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc...
[ 3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc...