NFC蓝牙配对标签数据格式

发布时间 2023-07-12 18:02:53作者: petercao

原文:https://www.amobbs.com/thread-5581854-1-1.html

NFC蓝牙配对标签,用于简化蓝牙配对过程,当带NFC功能的设备触碰到标签时,可以读取到内部的数据,触发设备打开蓝牙(安卓设备支持,WP8需要先打开蓝牙)。

NFC标签,这里指的是TYPE 2 TAG,即T2T标签,其实就是一张大容量mifare ul卡,但对多种设备兼容性比mifare ul卡好。T2T标签内部存储结构如下:

其中0-2 block包含的是卡号和block锁定控制位,03block是功能定义部分,对于T2T标签这部分有固定定义,对标签的格式化主要也是对这个区域写入特定值,对于NTAG203
这种标准的T2T标签,这部分不用设置,NTAG203的CC部分定义如下:

其中E1h是由NFC论坛定义的数值,表示下面的数据是由NFC论坛定义的数据,10h是版本号,12h表示容量,容量真实值是12h*8字节,00h是表示读写权限,00h表示无保护。

下面是重点,即数据保存的格式。NFC标签首先存储的格式不是NDEF格式,而是T(Type)L(Length)V(Value)格式,NDEF格式是TLV格式内的V部分,对于NTAG203类标准标签
默认已经有一个LOCK TLV数据格式(这个部分既是动态锁定位,与存储结构中定义的静态锁定字节相对应)和一个0字节NDEF数据格式,和一个TLV结束数据结构(0XFE)。

这个部分的数据格式可以直接擦除,即不使用动态锁定位,其实目前而言,标签没有要求锁定的。TLV数据格式,只要掌握NDEF的TLV数据格式就可以了,NDEF的TLV数据格式定义如下:

上图可以清晰的看到标签内的蓝牙配对数据格式,上面的TLV数据格式不用太详述,主要还是NDEF数据格式,NDEF数据格式由上图中的HEAD,TYPE_LENGTH,PAYLOAD_LENGTH,ID_LENGTH,TYPE,ID
及PAYLOAD组成,MB表示是否为NDEF消息的起始,ME表示是否为NDEF消息的结束,CF表示该消息还有后续数据,SR表示PAYLOAD_LENGTH是否为1字节,IL表示ID_LENGTH是否存在,TNF表示type
的类型。TNF定义如下:

对于NFC蓝牙配对标签,使用的是Media-type类型的NDEF数据格式。

TYPE_LENGTH即TYPE(application/vnd.bluetooth.ep.oob)的长度,这个定义是是蓝牙标签技术联盟定义为蓝牙配对的媒体类型,ID部分请参考上上图。下面是关键的东西了,即PAYLOAD也是蓝牙标准技术联盟
定义的蓝牙配对媒体类型中需要的OOB DATA.

OOB DATA内容由长度,蓝牙地址,及OOB可选数据组成。NFC设备在读取到标签后,最终实现连接是要拿到OOB里的蓝牙地址,蓝牙配对过程中,设备名是不需要的,而设备名即存储在OOB可选数据中。相应OOB
数据内容定义,请参考蓝牙标准。

以上就是完整的蓝牙配对标签数据格式的全部内容,对于标准的标签,如NTAG203,NTAG213可以完整的写入蓝牙地址及蓝牙设备名,但如果想用mifare ul卡做为标签,那只能写入蓝牙地址,没有空间写入蓝牙设备名。