蓝牙学习-PAN

2022-05-11  本文已影响0人  集韵增广

PAN - Personal Area Networking Profile

PAN基于BNEP为应用层提供蓝牙设备间的单向网络能力

PAN的服务能力:

  1. 访问PANU服务:SPP等Profile一样,要发现PAN服务先需要SDP查询,然后建立BNEP连接,这样就能访问了;
  2. 提供PANU服务:同上先需要注册个SDP记录,标明UUID,framesize等基础信息,然后使能被发现,注册回调函数等客户端访问

PAN客户端分析

  1. 创建流程

    l2cap_init()
    sm_init()
    sdp_init()
    bnep_init()
    bnep_register_service(packet_handler, BLUETOOTH_SERVICE_CLASS_PANU, 1691)
    pan_create_panu_sdp_record()
    sdp_register_service
    btstack_network_init
    hci_add_event_handler
    gap_set_local_name("PANU Client 00:00:00:00:00:00");
    gap_set_class_of_device(0x020300);
    hci_power_control(HCI_POWER_ON);
    
  1. 处理流程

    graph LR
       packet_handler --> packet_type:HCI_EVENT_PACKET --> BTSTACK_EVENT_STATE --> sdp_client_query_uuid16
       sdp_client_query_uuid16 --> SDP_EVENT_QUERY_ATTRIBUTE_VALUE
       sdp_client_query_uuid16 --> SDP_EVENT_QUERY_COMPLETE --> bnep_connect
       packet_type:HCI_EVENT_PACKET --> HCI_EVENT_PIN_CODE_REQUEST
       packet_type:HCI_EVENT_PACKET --> HCI_EVENT_USER_CONFIRMATION_REQUEST
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_OPENED --> btstack_network_up
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_TIMEOUT 
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_CLOSED -->btstack_network_down
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CAN_SEND_NOW --> bnep_send
       packet_handler --> BNEP_DATA_PACKET --> btstack_network_process_packet
    

    主要流程解析:

    PANU客户端是用来连接NAP或者GN的,所以自己启动后首先需要和服务端连接(sdp查找BLUETOOTH_SERVICE_CLASS_NAP)
    由于BLE采用安全连接,所以建立连接时用采用PINCODE验证
    连接建立后进行sdp查询,根据找到的对端地址,l2cap多路复用,客户端uuid,服务端uuid进行bnep连接
    连接建立好后启动btstack_network_up进行Ethernet网络和蓝牙网络的通信
    

PAN服务分析

  1. 创建流程

    l2cap_init()
    sm_init()
    sdp_init()
    bnep_init()
    bnep_register_service(packet_handler, BLUETOOTH_SERVICE_CLASS_NAP, 1691)
    pan_create_panu_sdp_record()
    sdp_register_service
    btstack_network_init
    hci_add_event_handler
    gap_set_local_name("NAP Server 00:00:00:00:00:00");
    gap_set_class_of_device(0x020300);
    hci_power_control(HCI_POWER_ON);
    
  1. 处理流程

    graph LR
       packet_handler --> packet_type:HCI_EVENT_PACKET
       packet_type:HCI_EVENT_PACKET --> HCI_EVENT_PIN_CODE_REQUEST
       packet_type:HCI_EVENT_PACKET --> HCI_EVENT_USER_CONFIRMATION_REQUEST
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_OPENED --> btstack_network_up
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_TIMEOUT 
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CHANNEL_CLOSED -->btstack_network_down
       packet_type:HCI_EVENT_PACKET --> BNEP_EVENT_CAN_SEND_NOW --> bnep_send
       packet_handler --> BNEP_DATA_PACKET --> btstack_network_process_packet
    

    主要流程解析:

    PANU服务端是用来等待客户端连接的,由于BLE采用安全连接,所以建立连接时用采用PINCODE验证
    连接建立后等待BNEP事件,收到BNEP_EVENT_CHANNEL_OPENED后开启网络btstack_network_up
    
上一篇下一篇

猜你喜欢

热点阅读