zoukankan      html  css  js  c++  java
  • BLE获取iphone mac地址的方法--【原创】

    本人用的BLE是TIcc2541,1.3.2协议栈

    1、首先要说明的是,iphone手机将信息保护了,BLE设备读到的iphone地址是随机的,每次连接都会不同

    2、下面我就具体说明如何查看手机的mac地址

    首先我的程序是作为从机的,从机配好开始广播,事件SBP_START_DEVICE_EVT ---> GAPRole_StartDevice( &simpleBLEPeripheral_PeripheralCBs );

    然后进入peripheral.c中的GAPRole_ProcessEvent函数(关于回调函数我就不提了),

    由事件SYS_EVENT_MSG --->gapRole_ProcessOSALMsg( (osal_event_hdr_t *)pMsg );  

    ---> GAP_MSG_EVENT ---> gapRole_ProcessGAPMsg( (gapEventHdr_t *)pMsg );

    ---> GAP_LINK_ESTABLISHED_EVENT ---> 

    #define GAP_LINK_ESTABLISHED_EVENT            0x05

    //!< Sent when the Establish Link Request is complete. This event is sent as an OSAL message defined as gapEstLinkReqEvent_t.

    uint8 devAddr[B_ADDR_LEN]; //!< Device address of link

    typedef struct
    {
    osal_event_hdr_t hdr; //!< GAP_MSG_EVENT and status
    uint8 opcode; //!< GAP_LINK_ESTABLISHED_EVENT
    uint8 devAddrType; //!< Device address type: @ref GAP_ADDR_TYPE_DEFINES
    uint8 devAddr[B_ADDR_LEN]; //!< Device address of link
    uint16 connectionHandle; //!< Connection Handle from controller used to ref the device
    uint16 connInterval; //!< Connection Interval
    uint16 connLatency; //!< Conenction Latency
    uint16 connTimeout; //!< Connection Timeout
    uint8 clockAccuracy; //!< Clock Accuracy
    } gapEstLinkReqEvent_t;

    gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;
    DEBUG_PRINT("address: %s(%d) ", bdAddr2Str(pPkt->devAddr), __LINE__);

    此时address就是你手机蓝牙的mac地址了,安卓和ios都可以,亲测

    欢迎交流,如有转载请注明出处

    新浪博客:http://blog.sina.com.cn/u/2049150530
    博客园:http://www.cnblogs.com/sky-heaven/
    知乎:http://www.zhihu.com/people/zhang-bing-hua

  • 相关阅读:
    bisect in Python
    1385. 两个数组间的距离值
    面试题 04.08. 首个共同祖先
    Python关键字yield
    1237. 找出给定方程的正整数解
    响应式文字
    java环境变量设置
    小 div在大 div中左右上下居中
    清除浮动
    jQuery 图片等比缩放
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/4317034.html
Copyright © 2011-2022 走看看