ch573 Peripheral在主机连接从机时获取主机mac地址

如何在ch573 Peripheral在主机连接从机时获取主机mac地址

需求:就是主机连接从机时,从机先判断主机mac地址,再让主机连接从机

请问要在例程的哪里改?谢谢

您好,可以在下图函数中的结构体里获取到主机的地址类型和地址,

emobile_2024-04-09_16-56-17.png

emobile_2024-04-09_16-56-54.png

若要断开连接可调用此函数:

GAPRole_TerminateLink(peripheralConnList.connHandle);



执行到这个函数是已经被主机连上了吗?

/*********************************************************************

 * @fn      Peripheral_LinkEstablished

 *

 * @brief   Process link established.

 *

 * @param   pEvent - event to process

 *

 * @return  none

 */

static void Peripheral_LinkEstablished(gapRoleEvent_t *pEvent)

{

    gapEstLinkReqEvent_t *event = (gapEstLinkReqEvent_t *)pEvent;


    // See if already connected

    if(peripheralConnList.connHandle != GAP_CONNHANDLE_INIT)

    {

        GAPRole_TerminateLink(pEvent->linkCmpl.connectionHandle);

        PRINT("Connection max...\n");

    }

    else

    {

        peripheralConnList.connHandle = event->connectionHandle;

        peripheralConnList.connInterval = event->connInterval;

        peripheralConnList.connSlaveLatency = event->connLatency;

        peripheralConnList.connTimeout = event->connTimeout;

        peripheralMTU = ATT_MTU_SIZE;

        // Set timer for periodic event

        tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD);


        // Set timer for param update event

        tmos_start_task(Peripheral_TaskID, SBP_PARAM_UPDATE_EVT, SBP_PARAM_UPDATE_DELAY);


        // Start read rssi

        tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD);


        PRINT("Conn %x - Int %x \n", event->connectionHandle, event->connInterval);

    }

}


如果是,那有没有还没连上时,可以拒绝主机连的?


您好,没有还没连上的状态回调的,需要在这个已连接回调里去处理,可以根据自己的需求去选择是否断开连接。


GAPRole_TerminateLink(peripheralConnList.connHandle);//断开连接后,还会不会再次持续发广播?


默认的例程在断开连接后,会重新开启广播,也就是有advertising的日志信息。

image.png

image.png


只有登录才能回复,可以选择微信账号登录