MG127学习之路之广播PDU结构

广播PDU结构(仅描述MG127适用的无连接广播)

参考链接

在这里插入图片描述

可操作的空间为:

1. PDU type:

1)0000 - connected undirected advertising event 可连接非定向广播事件

2)0001 - connected directed advertising event 可连接定向广播事件

3)0010 - non-connected undirected advertising event 不可连接非定向广播事件

4)0011 - response to scan request form scanner扫描请求响应

5)0101 - connect request by initiator连接请求

6)0110 -connected directed advertising event 可发现非定向广播事件

2. TxAdd & RxAdd:

1) 发送地址类型和接收地址类型指示了设备使用公共地址(Public Address)还是随机地址(Random Address)。公共地址和随机地址的长度一样,都包含6个字节共48位。BLE设备至少要拥有这两种地址类型中的一种,当然也可以同时拥有这两种地址类型。

2) 公共地址由两部分组成,如下图。公共地址由制造商从IEEE申请,由IEEE注册机构为该制造商分配的机构唯一标识符OUI(Organizationally Unique Identifier)。这个地址是独一无二,不能修改的。

3) 随机地址有包含两种:静态地址(Static Device Address)和私有地址(PrivateDevice Address)。

4) 静态地址有如下要求:

	  a) 静态地址的最高2位有效位必须是1。
	
	 b) 静态地址最高2位有效位之外的其余部分不能全为0。
	
	 c) 静态地址最高2位有效位之外的其余部分不能全为1。

在私有地址的定义当中,又包含了两个子类:不可解析私有地址(Non-resolvable Private Address)和可解析私有地址(Resolvable Private Address,RPA)。

MG127中不用考虑,只需设置为随机地址即可

3. length:

广播的数据长度,实际等于数据长度加6(MAC地址长度)

广播报文除了最多31个字节的数据之外,还必须要包含6个字节的广播设备地址。6+31=37,所以需要6比特的长度域。

再次强调:广播时必须要包含6个字节的广播设备地址。

4. AdvA:

发射端MAC地址,部分芯片内部自己添加

5. 0-31 bytes AdvData:

广播和扫描响应的数据格式由有效数据部分和无效数据部分组成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fC5C0zT6-1622382136930)(MG127学习测试.assets/image-20200729165637136.png)]

  1. 有效数据部分:包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成。其中:
  • Length:AD Type和AD Data的长度。
  • AD Type:指示AD Data数据的含义。
  • Data:需要发送的数据

AD Type(Nordic SDK 中的声明):暂未理解其用途,暂时仅做记录

//Nordic SDK GAP AD_TYPE

#define BLE_GAP_AD_TYPE_FLAGS                0x01 														
    /**< Flags for discoverability. */
	/** 可发现性标志*/

#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE  0x02 		  
    /**< Partial list of 16 bit service UUIDs. */
	/**	 16位服务uuid的部分列表*/

#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE     0x03 				   
    /**< Complete list of 16 bit service UUIDs. */
	/**  16位服务uuid的完整列表*/

#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE  0x04 		
    /**< Partial list of 32 bit service UUIDs. */
	/**	 32位服务uuid的部分列表*/

#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE     0x05		 		  
    /**< Complete list of 32 bit service UUIDs. */
	/**	 32位服务uuid的完整列表*/

#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06	    
    /**< Partial list of 128 bit service UUIDs. */
	/**	 128位服务uuid的部分列表*/

#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE    0x07 				
    /**< Complete list of 128 bit service UUIDs. */
	/**	 128位服务uuid的部分列表*/

#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME          0x08 							 	
    /**< Short local device name. */
	/** 短本地设备名*/
	
#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME         0x09					 	   
    /**< Complete local device name. */
	/** 完整的本地设备名*/

#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL           0x0A	 								  
    /**< Transmit power level. */
	/** 传输功率*/
	
#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE           0x0D 									
    /**< Class of device. */
	/**  设备类别*/

#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C        0x0E 						  
    /**< Simple Pairing Hash C. */
	/** 简单配对哈希C*/
	
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R     0x0F			   
    /**< Simple Pairing Randomizer R. */
	/** 简单配对随机发生器R*/

#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE      0x10 				
    /**< Security Manager TK Value. */
	/**	安全管理器TK值*/

#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS     0x11 			
    /**< Security Manager Out Of Band Flags. */
	/** 带外安全管理标志*/

#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE   0x12 	
    /**< Slave Connection Interval Range. */
	/** 从属连接间隔范围*/

#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT    0x14 			 
    /**< List of 16-bit Service Solicitation UUIDs. */
	/** 16位UUID请求列表*/

#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT   0x15    		
    /**< List of 128-bit Service Solicitation UUIDs. */
	/** 128位UUID请求列表*/

#define BLE_GAP_AD_TYPE_SERVICE_DATA            0x16 									   
    /**< Service Data - 16-bit UUID. */
	/** 服务数据 - 16位UUID*/

#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS        0x17 					 
    /**< Public Target Address. */
	/** 公共目标地址*/

#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS        0x18 				 
    /**< Random Target Address. */
	/** 随机目标地址*/

#define BLE_GAP_AD_TYPE_APPEARANCE             0x19 									   
    /**< Appearance. */

#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL        0x1A 						 
    /**< Advertising Interval. */
	/** 广播时间间隔*/

#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS     0x1B 		 
    /**< LE Bluetooth Device Address. */

#define BLE_GAP_AD_TYPE_LE_ROLE               0x1C 											 
    /**< LE Role. */

#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256      0x1D 				
    /**< Simple Pairing Hash C-256. */

#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256   0x1E 	 
 /**< Simple Pairing Randomizer R-256. */

#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID       0x20 				   
    /**< Service Data - 32-bit UUID. */

#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID      0x21 				  
    /**< Service Data - 128-bit UUID. */

#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA         0x3D 					 
    /**< 3D Information Data. */

#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA     0xFF 			
    /**< Manufacturer Specific Data. */
	/** 制造商特定数据*/

2)无效数据部分:暂未知其作用,BLE5.0中Extern Adv中提出的扩展数据包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦杨37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值