bt5.0学习前瞻

bt5.0

 

 

    linux bt5.0 蓝牙扩展广播怎么发送和接收
        1. https://blog.csdn.net/weixin_42583147/article/details/80968708?utm_source=blogxgwz8
            蓝牙4.x协议规定蓝牙广播数据包每包数据最大只支持31字节数据传输,广播信道限制在37,38,39三个信道。在原有的用于传输广播数据的PDU(ADV_IND、ADV_DIRECT_IND、ADV_NONCONN_IND以及ADV_SCAN_IND,称作legacy PDUs)的基础上,蓝牙5增加了扩展的PDU(ADV_EXT_IND、AUX_ADV_IND、AUX_SYNC_IND以及AUX_CHAIN_IND,称作extended advertising PDUs),同时也允许蓝牙在除开37,38,39三个通道之外的其他37个信道上发送长度介于0-255字节的数据。
        2. https://blog.csdn.net/weixin_44606722/article/details/88617634?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare
            蓝牙BLE5.0扩展广播介绍
        3. https://mp.weixin.qq.com/s/w_pmGU0Olq3WE-mJFOMVRw
            BLE 5.0 使用扩展广播功能

    bluetooth-meshd

====================================================================================

send -->
    /* LE commands */
    #define OGF_LE_CTL        0x08

    #define OCF_LE_SET_EVENT_MASK            0x0001
    typedef struct {
        uint8_t        mask[8];
    } __attribute__ ((packed)) le_set_event_mask_cp;
    #define LE_SET_EVENT_MASK_CP_SIZE 8
        Bit : 12 | LE Extended Advertising Report Event
        Bit : 16 | LE Extended Scan Timeout Event
        Bit : 17 | LE Extended Advertising Set Terminated Event
    ====================================================================================
    adv:    ADVERTISING STATE
        设置扩展广播参数: ADV_EXT_IND
            ====================================================================================
            HCI_LE_Set_Advertising_Parameters:
                #define OCF_LE_SET_ADVERTISING_PARAMETERS    0x0006
                typedef struct {
                    uint16_t    min_interval; // Advertising_Interval_Min(N = 0xXXXX, Range: 0x0020 to 0x4000, Default: N = 0x0800 (1.28 s);Time = N * 0.625 ms;Time Range: 20 ms to 10.24 s)
                    uint16_t    max_interval; // Advertising_Interval_Max(N = 0xXXXX, Range: 0x0020 to 0x4000, Default: N = 0x0800 (1.28 s);Time = N * 0.625 ms;Time Range: 20 ms to 10.24 s)
                    uint8_t        advtype;      // Advertising_Type, 0x00(ADV_IND),0x01(ADV_DIRECT_IND, high duty cycle),0x02(ADV_SCAN_IND)
                                              //           0x03(ADV_NONCONN_IND),0x04(ADV_DIRECT_IND, low duty cycle),0x05 – 0xFF(Reserved for future use)
                    uint8_t        own_bdaddr_type; // Own_Address_Type(0x00:Public Device Address (default); 0x01:Random Device Address)
                    uint8_t        direct_bdaddr_type; // Peer_Address_Type,
                    bdaddr_t    direct_bdaddr; // Peer_Address,
                    uint8_t        chan_map; // Advertising_Channel_Map, = 7
                    uint8_t        filter;   // Advertising_Filter_Policy(scan and connection: 0x00 0x01 0x02 0x03)
                } __attribute__ ((packed)) le_set_advertising_parameters_cp;
                #define LE_SET_ADVERTISING_PARAMETERS_CP_SIZE 15

            HCI_LE_Set_Extended_Advertising_Parameters:
                #define OCF_LE_Set_Extended_Advertising_Parameters    0x0036
                typedef struct {
                    uint8_t        handle; // Advertising_Handle,
                    uint16_t    properties; // Advertising_Event_Properties,(传统广播0x13:ADV_IND;0x12:ADV_SCAN_IND;0x10:ADV_NONCONN_IND)
                                            // (扩展广播0x03:ADV_IND;0x02:ADV_SCAN_IND;0x00:ADV_NONCONN_IND)
                    uint8_t        min_interval[3]; // Primary_Advertising_Interval_Min(N = 0xXXXXXX, Range: 0x000020 to 0xFFFFFF, Time = N * 0.625 ms, Time Range: 20 ms to 10,485.759375 s)
                    uint8_t        max_interval[3]; // Primary_Advertising_Interval_Max(N = 0xXXXXXX, Range: 0x000020 to 0xFFFFFF, Time = N * 0.625 ms, Time Range: 20 ms to 10,485.759375 s)
                    uint8_t        chan_map; // Primary_Advertising_Channel_Map,
                    uint8_t        own_bdaddr_type; // Own_Address_Type,
                    uint8_t        direct_bdaddr_type; // Peer_Address_Type,
                    bdaddr_t    direct_bdaddr; // Peer_Address,
                    uint8_t        filter;   // Advertising_Filter_Policy,
                    uint8_t        tx_power; // Advertising_Tx_Power,
                    uint8_t        primary_phy; // Primary_Advertising_PHY,
                    uint8_t        secondary_max_skip; // Secondary_Advertising_Max_Skip,
                    uint8_t        secondary_phy; // Secondary_Advertising_PHY,
                    uint8_t        adv_sid; // Advertising_SID,
                    uint8_t        notify; // Scan_Request_Notification_Enable
                } __attribute__ ((packed)) le_set_extended_advertising_parameters_cp;
                #define LE_SET_EXTENDED_ADVERTISING_PARAMETERS_CP_SIZE 25
            ====================================================================================

        设置扩展广播数据:
            ====================================================================================
            HCI_LE_Set_Advertising_Data
                #define OCF_LE_SET_ADVERTISING_DATA        0x0008
                typedef struct {
                    uint8_t        length;
                    uint8_t        data[31];
                } __attribute__ ((packed)) le_set_advertising_data_cp;
                #define LE_SET_ADVERTISING_DATA_CP_SIZE 32

            HCI_LE_Set_Extended_Advertising_Data
                #define OCF_LE_Set_Extended_Advertising_Parameters    0x0037
                typedef struct {
                    uint8_t        handle;
                    uint8_t        operation;
                    uint8_t        fragment_preference;
                    uint8_t        length;
                    uint8_t        data[251];
                } __attribute__ ((packed)) le_set_extended_advertising_data_cp;
                #define LE_SET_EXTENDED_ADVERTISING_DATA_CP_SIZE 255
            ====================================================================================

        扩展广播使能:
            ====================================================================================
            HCI_LE_Set_Advertising_Enable
                #define OCF_LE_SET_ADVERTISE_ENABLE        0x000A
                typedef struct {
                    uint8_t        enable;
                } __attribute__ ((packed)) le_set_advertise_enable_cp;
                #define LE_SET_ADVERTISE_ENABLE_CP_SIZE 1

            HCI_LE_Set_Extended_Advertising_Enable
                #define OCF_LE_Set_Extended_Advertising_Enable    0x0039
                typedef struct {
                    uint8_t        enable;
                    uint8_t        num_sets; // NUM * le_set_extended_advertising_sets_cp
                } __attribute__ ((packed)) le_set_extended_advertise_enable_cp;
                #define LE_SET_EXTENDED_ADVERTISE_ENABLE_CP_SIZE 2
                typedef struct {
                    uint8_t        handle;
                    uint16_t    duration;
                    uint8_t        max_events;
                } __attribute__ ((packed)) le_set_extended_advertising_sets_cp;
                #define LE_SET_EXTENDED_ADVERTISING_SETS_CP_SIZE 4
            ====================================================================================
    ====================================================================================
    scan:
        设置扩展广播的扫描数据回复:
            ====================================================================================
            HCI_LE_Set_Scan_Response_Data
                #define OCF_LE_SET_SCAN_RESPONSE_DATA        0x0009
                typedef struct {
                    uint8_t        length;
                    uint8_t        data[31];
                } __attribute__ ((packed)) le_set_scan_response_data_cp;
                #define LE_SET_SCAN_RESPONSE_DATA_CP_SIZE 32

            HCI_LE_Set_Extended_Scan_Response_Data
                #define OCF_LE_Set_Extended_Scan_Response_Data    0x0038
                typedef struct {
                    uint8_t        handle;
                    uint8_t        operation;
                    uint8_t        fragment_preference;
                    uint8_t        length;
                    uint8_t        data[251];
                } __attribute__ ((packed)) le_set_extended_scan_response_data_cp;
                #define LE_SET_EXTENDED_SCAN_RESPONSE_DATA_CP_SIZE 255
            ====================================================================================

        设置扩展广播的扫描参数:
            ====================================================================================
            HCI_LE_Set_Scan_Parameters
                #define OCF_LE_SET_SCAN_PARAMETERS        0x000B
                typedef struct {
                    uint8_t        type;
                    uint16_t    interval;
                    uint16_t    window;
                    uint8_t        own_bdaddr_type;
                    uint8_t        filter;
                } __attribute__ ((packed)) le_set_scan_parameters_cp;
                #define LE_SET_SCAN_PARAMETERS_CP_SIZE 7

            HCI_LE_Set_Extended_Scan_Parameters
                #define OCF_LE_Set_Extended_Scan_Parameters    0x0041
                typedef struct {
                    uint8_t        own_bdaddr_type;
                    uint8_t        filter;
                    uint8_t        scanning_PHYs; // NUM * le_set_extended_scan_parameters_INFO_cp
                } __attribute__ ((packed)) le_set_extended_scan_parameters_cp;
                #define LE_SET_EXTENDED_SCAN_PARAMETERS_CP_SIZE 7
                typedef struct {
                    uint8_t        type;
                    uint16_t    interval;
                    uint16_t    window;
                } __attribute__ ((packed)) le_set_extended_scan_parameters_INFO_cp;
                #define LE_SET_EXTENDED_SCAN_PARAMETERS_INFO_CP_SIZE 5
            ====================================================================================

        设置扩展广播的扫描状态:
            ====================================================================================
            HCI_LE_Set_Scan_Enable
                #define OCF_LE_SET_SCAN_ENABLE            0x000C
                typedef struct {
                    uint8_t        enable;
                    uint8_t        filter_dup;
                } __attribute__ ((packed)) le_set_scan_enable_cp;
                #define LE_SET_SCAN_ENABLE_CP_SIZE 2

            HCI_LE_Set_Extended_Scan_Enable
                #define OCF_LE_Set_Extended_Scan_Enable    0x0042
                typedef struct {
                    uint8_t        enable;
                    uint8_t        filter_dup;
                    uint16_t    duration;
                    uint16_t    period;
                } __attribute__ ((packed)) le_set_extended_scan_enable_cp;
                #define LE_SET_EXTENDED_SCAN_ENABLE_CP_SIZE 6
            ====================================================================================

    ====================================================================================
    other:
        HCI_LE_Extended_Create_Connection
        #define OCF_LE_Extended_Create_Connection    0x0043

    ====================================================================================

receive <--
    /* LE Meta Event 0x3E */
    Subevent_Code:
        0x01 : LE Connection Complete Event
        0x02 : LE Advertising Report Event
        0x06 : LE Remote Connection Parameter Request Event
        0x0D : LE Extended Advertising Report Event
        ...
    ====================================================================================

    LE Advertising Report:
        Subevent_Code   : 0x02
        Num_Reports     : 0x01 - 0x19, All other values
        Event_Type[i]   : 0x00 - 0x04, All other values
        Address_Type[i] : 0x00 - 0x03, All other values
        Address[i]      : 0xXXXXXXXXXXXX
        Length[i]       : 0x00 - 0x1F, All other values
        Data[i]         : [Vol 3] Part C, Section 11
        RSSI[i]         : N, 127(RSSI is not available), 21 to 126 (Reserved for future use)

        #define EVT_LE_ADVERTISING_REPORT    0x02
        typedef struct {
            uint8_t        evt_type;
            uint8_t        bdaddr_type;
            bdaddr_t    bdaddr;
            uint8_t        length;
            uint8_t        data[0];
        } __attribute__ ((packed)) le_advertising_info;
        #define LE_ADVERTISING_INFO_SIZE 9

    ====================================================================================

    LE Extended Advertising Report:
        Subevent_Code                        : 0x0D
        Num_Reports                            : 0x01 – 0x0A, All other values
        Event_Type[i]                        : Bit:0-6, All other bits
        Address_Type[i]                        : 0x00 - 0x03, 0xFF(No address provided (anonymous advertisement)), All other values
        Address[i]                            : 0xXXXXXXXXXXXX
        Primary_PHY[i]                        : 0x01(Advertiser PHY is LE 1M), 0x03(Advertiser PHY is LE Coded), All other values
        Secondary_PHY[i]                    : 0x00(No packets on the secondary advertising channel)
                                              0x01(Advertiser PHY is LE 1M)
                                              0x02(Advertiser PHY is LE 2M)
                                              0x03(Advertiser PHY is LE Coded)
                                              All other values
        Advertising_SID[i]                    : 0x00 – 0x0F(Value of the Advertising SID subfield in the ADI field of the PDU)
                                            : 0xFF(No ADI field in the PDU)
                                            : All other values
        Tx_Power[i]                            : N = 0xXX(-127 ≤ N ≤ +126, Units: dBm), 127(Tx Power information not available)
        RSSI[i]                                : N = 0xXX(-127 ≤ N ≤ +20, Units: dBm), 127(RSSI not available), All other values
        Periodic_Advertising_Interval[i]    : 2Bytes : 0x0000(No periodic advertising), N = 0xXXXX(Range:0x0006 to 0xFFFF,Time = N * 1.25 ms,Time Range: 7.5 ms to 81,918.75 s)
        Direct_Address_Type[i]                : 0x00-0x03, 0xFE, All other values
        Direct_Address[i]                    : 6Bytes :
        Data_Length[i]                        : 0-229, All other values
        Data[i]                                : [Vol 3] Part C, Section 11

        #define EVT_LE_EXTENDED_ADVERTISING_REPORT    0x0D
        typedef struct {
            uint8_t        evt_type;
            uint8_t        bdaddr_type;
            bdaddr_t    bdaddr;
            /******** add *******/
            uint8_t        primary_phy;
            uint8_t        secondary_phy;
            uint8_t        adv_sid;
            uint8_t        tx_power;
            uint8_t        rssi;
            uint16_t    periodic_interval;
            uint8_t        direct_bdaddr_type;
            bdaddr_t    direct_bdaddr;
            /******** end *******/
            uint8_t        length;
            uint8_t        data[0];
        } __attribute__ ((packed)) le_extended_advertising_info;
        #define LE_EXTENDED_ADVERTISING_INFO_SIZE 23

    ====================================================================================

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE 5.0是第五代PCI Express(Peripheral Component Interconnect Express)技术的简称,是一种高速串行总线技术,用于在计算机系统的主板上连接各种外部设备。 PCIE 5.0学习手册是一本详细介绍PCIE 5.0技术的教材,旨在帮助读者了解PCIE 5.0的原理、功能、特性和应用。该手册可以分为以下几个部分: 1. PCIE 5.0技术概述:介绍PCIE 5.0技术的发展历程、与前几代PCIE技术相比的改进和升级,以及其在计算机系统中的作用和重要性。 2. PCIE 5.0接口和插槽:详细介绍PCIE 5.0接口和插槽的物理规格、电气特性和信号传输机制。解释插槽的设计和功能,以及如何正确安装和连接设备。 3. PCIE 5.0数据传输:解释PCIE 5.0的数据传输协议和机制,包括其数据链路层和传输层的详细工作原理。介绍数据包的类型和组成,以及如何管理数据传输和错误处理。 4. PCIE 5.0性能优化:介绍提高PCIE 5.0性能的方法和技巧,包括如何最大限度地利用带宽、减少延迟和提高系统吞吐量。提供性能优化的实际案例和实施建议。 5. PCIE 5.0应用场景:列举PCIE 5.0在不同领域的应用案例,包括计算机网络、图形处理、存储系统和高性能计算等。讲解如何根据不同需求选择合适的PCIE 5.0设备和配置。 PCIE 5.0学习手册通过清晰的文字、图表和示例,为读者提供了全面而深入的PCIE 5.0知识。它适用于计算机科学、电子工程和相关领域的学生、工程师和从业人员。通过学习这本手册,读者将对PCIE 5.0技术有更深入的理解,并能更好地应用于实际项目中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值