This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

СС2650 How to scan by name

Hi everyone,

Tell me please
How to scan by name and auto connecting to devise.

GAPCentralRole_StartDiscovery(DEFAULT_DISCOVERY_MODE,
DEFAULT_DISCOVERY_ACTIVE_SCAN,
DEFAULT_DISCOVERY_WHITE_LIST);

//auto connect to device by address

if (!(GAPCentralRole_CancelDiscovery())) {

GAPCentralRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
pEvent->deviceInfo.addrType, pEvent->deviceInfo.addr);

and how to connect by name?

with respect,

Arkadii

  • Hello Arkadii,

    In BLE, connections are established by the Bluetooth device address (BDADDR).

    Please see the SimpleCentral example, specifically on how it filters by UUID in the ADV data during processing of the GAP_DEVICE_INFO_EVENT. You could extend this capability to filter during the same event based on the name (GAP_ADTYPE_LOCAL_NAME_SHORT or GAP_ADTYPE_LOCAL_NAME_COMPLETE) in ADV or ScanRsp data.

    See SimpleBLECentral_findSvcUuid()

    Best wishes
  • Hi JXS,

    Could you help me.
    You can make an example of how it should look. How to write code.
    And how to use the white list when searching by name.

    case GAP_DEVICE_INFO_EVENT:
    {
    // if filtering device discovery results based on service UUID
    if (DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE)
    {
    if (SimpleBLECentral_findSvcUuid(SIMPLEPROFILE_SERV_UUID,<------------------(GAP_ADTYPE_LOCAL_NAME_SHORT)
    pEvent->deviceInfo.pEvtData,
    pEvent->deviceInfo.dataLen))
    {
    SimpleBLECentral_addDeviceInfo(pEvent->deviceInfo.addr,
    pEvent->deviceInfo.addrType);
    }

    }
    if (!(GAPCentralRole_CancelDiscovery())) {

    GAPCentralRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
    DEFAULT_LINK_WHITE_LIST,
    pEvent->deviceInfo.addrType, pEvent->deviceInfo.addr);

    }
    }
    break;


    scanRspData in Simple_peripheral

    static uint8_t scanRspData[] =
    {
    // complete name
    0x14, // length of this data
    GAP_ADTYPE_LOCAL_NAME_COMPLETE,
    'S',
    'i',
    'm',
    'p',
    'l',
    'e',
    'B',
    'L',
    'E',
    'P',
    'e',
    'r',
    'i',
    'p',
    'h',
    'e',
    'r',
    'a',
    'l',

    // connection interval range
    0x05, // length of this data
    GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
    LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), // 100ms
    HI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL),
    LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // 1s
    HI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL),

    // Tx power level
    0x02, // length of this data
    GAP_ADTYPE_POWER_LEVEL,
    0 // 0dBm
    };

    How to use the white list when searching by name?

    White list in: static void SimpleBLECentral_init(void)

    uint8 bdPeerAddress[B_ADDR_LEN] = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
    HCI_LE_ClearWhiteListCmd();
    HCI_LE_AddWhiteListCmd(ADDRTYPE_PUBLIC,bdPeerAddress);

     

    Help me please.

    With respect,

    Arkadii.