在Peripheral低功耗蓝牙从机例程中,连接之后可以通过接口函数读取主机的信号强度,那么在广播状态如何获取主机的信号强度呢?

蓝牙主机在搜到广播后会发起扫描请求,蓝牙从机收到该请求便可以获取到蓝牙主机的信号强度,蓝牙从机端添加一个接收扫描请求的回调即可,下面是增加回调接口的方法。

一.添加peripheralScanReqRecv函数:

// Broadcast Callbacks
static gapRolesBroadcasterCBs_t Broadcaster_BroadcasterCBs = {
    NULL, // Not used in peripheral role
    peripheralScanReqRecv  // Receive scan request callback
};

 二.peripheralScanReqRecv函数定义:

static void peripheralScanReqRecv(gapScanRec_t * pEvent){

    PRINT("eventType=%d\n",pEvent->eventType);
    PRINT("addrType=%d\n",pEvent->addrType);
    PRINT("addrType=");
    for(uint8_t i=0;i<6;i++){
        PRINT("%02x ",pEvent->addr[i]);    
    }
    PRINT("\n");
    PRINT("rssi=%d\n",pEvent->rssi);
}

三.获取参数说明:

typedef struct
{
    uint8_t eventType;        // 广播事件类型:标识广播者使用的广播类型,具体定义参考 GAP_ADVERTISEMENT_REPORT_TYPE_DEFINES
    uint8_t addrType;         // 设备地址类型:0x00-公有设备地址/公有标识地址  0x01-随机设备地址/随机(静态)标识地址
    uint8_t addr[B_ADDR_LEN]; // 设备MAC地址/蓝牙设备地址(长度由B_ADDR_LEN定义)
    int8_t  rssi;             // 接收信号强度指示(单位:dBm,值越大信号越强)
} gapScanRec_t;

 

若只是需要获取发起扫描请求的蓝牙主机设备的mac地址,只需要Peripheral_Init初始化调用:

// Enable scan req notify
GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, ENABLE);

在此回调中获取mac地址:

/*********************************************************************
 * @fn      Peripheral_ProcessGAPMsg
 *
 * @brief   Process an incoming task message.
 *
 * @param   pMsg - message to process
 *
 * @return  none
 */
static void Peripheral_ProcessGAPMsg(gapRoleEvent_t *pEvent)
{
    switch(pEvent->gap.opcode)
    {
        case GAP_SCAN_REQUEST_EVENT:
        {
            PRINT("Receive scan req from %x %x %x %x %x %x  ..\n", pEvent->scanReqEvt.scannerAddr[0],
                  pEvent->scanReqEvt.scannerAddr[1], pEvent->scanReqEvt.scannerAddr[2], pEvent->scanReqEvt.scannerAddr[3],
                  pEvent->scanReqEvt.scannerAddr[4], pEvent->scanReqEvt.scannerAddr[5]);
            break;
        }

        case GAP_PHY_UPDATE_EVENT:
        {
            PRINT("Phy update Rx:%x Tx:%x ..\n", pEvent->linkPhyUpdate.connRxPHYS, pEvent->linkPhyUpdate.connTxPHYS);
            break;
        }

        default:
            break;
    }
}
posted on 2026-05-07 15:27  WCH蓝牙应用分享  阅读(49)  评论(0)    收藏  举报