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.

定向广播求助?



1、有些资料说定向可连接广播类型分成两种方式(High duty cycle和Low duty cycle)。且在(include/gap.h),具体定义的类型如下:

 GAP_ADTYPE_ADV_IND //!< Connectable undirected advertisement

 GAP_ADTYPE_ADV_HDC_DIRECT_IND //!< Connectable high duty cycle directed advertisement

 GAP_ADTYPE_ADV_SCAN_IND //!< Scannable undirected advertisement

 GAP_ADTYPE_ADV_NONCONN_IND //!< Non-Connectable undirected advertisement

 GAP_ADTYPE_ADV_LDC_DIRECT_IND //!< Connectable low duty cycle directed advertisement

但是,怎么找不到GAP_ADTYPE_ADV_HDC_DIRECT_IND 和GAP_ADTYPE_ADV_LDC_DIRECT_IND ;只有

#define GAP_ADTYPE_ADV_IND                0x00  //!< Connectable undirected advertisement

#define GAP_ADTYPE_ADV_DIRECT_IND         0x01  //!< Connectable directed advertisement

#define GAP_ADTYPE_ADV_DISCOVER_IND       0x02  //!< Discoverable undirected advertisement

#define GAP_ADTYPE_ADV_NONCONN_IND        0x03  //!< Non-Connectable undirected advertisement

#define GAP_ADTYPE_SCAN_RSP_IND           0x04  //!< Only used in gapDeviceInfoEvent_t

这是什么问题?

2、Direct Advertisement Address Type和Direct Advertisement Address.又要怎么配置?有什么作用?

  •  主机代码:
    static uint8 bdAddress[6] = {0xff,0xff,0xff,0xff,0xff,0x03};
        HCI_EXT_SetBDADDRCmd(bdAddress);
    然后将拨码开关的组号与bdAddress[0]相或
    注释:simpleBLECentralEventCB时间中
     case GAP_DEVICE_INFO_EVENT:
          {
            // if filtering device discovery results based on service UUID
            /*
            if ( DEFAULT_DEV_DISC_BY_SVC_UUID == TRUE )
            {
              if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV_UUID,
                                         pEvent->deviceInfo.pEvtData,
                                         pEvent->deviceInfo.dataLen ) )
              {
                simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );
              }
            }
            */
            simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );
          }
          break;
    case GAP_DEVICE_DISCOVERY_EVENT:
          {
            // discovery complete
            simpleBLEScanning = FALSE;
           
            // if not filtering device discovery results based on service UUID
            /*
            if ( DEFAULT_DEV_DISC_BY_SVC_UUID == FALSE )
            {
              // Copy results
              simpleBLEScanRes = pEvent->discCmpl.numDevs;
              osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
                           (sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
            }
            */
            simpleBLEScanRes = pEvent->discCmpl.numDevs;
              osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
                           (sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
            LCD_WRITE_STRING_VALUE( "Devices Found", simpleBLEScanRes,
                                    10, HAL_LCD_LINE_1 );
            if ( simpleBLEScanRes > 0 )
            {
              LCD_WRITE_STRING( "<- To Select", HAL_LCD_LINE_2 );
              //连接第一个
             
              HalLedSet(HAL_LED_3, HAL_LED_MODE_ON ); //开LED3
             
              if ( simpleBLEState == BLE_STATE_IDLE )
              {
                simpleBLEScanIdx++;
                LCD_WRITE_STRING( "simpleBLEScanIdx++", HAL_LCD_LINE_1 );
                if ( simpleBLEScanIdx >= simpleBLEScanRes )
                {
                  simpleBLEScanIdx = 0;
                  LCD_WRITE_STRING( "simpleBLEScanIdx = 0;", HAL_LCD_LINE_1 );
                }
                uint8 addrType;
                uint8 *peerAddr;
                // connect to current device in scan result
                peerAddr = simpleBLEDevList[simpleBLEScanIdx].addr;
                addrType = simpleBLEDevList[simpleBLEScanIdx].addrType;
                simpleBLEState = BLE_STATE_CONNECTING;
                GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
                                              DEFAULT_LINK_WHITE_LIST,
                                              addrType, peerAddr );
             
              }
            }
            // initialize scan index to last device
            simpleBLEScanIdx = simpleBLEScanRes;
          }
          break;
     从机:
    申明 static uint8 centralAddr[]={0x00,0xFF,0xFF,0xFF,0xFF,0xF1};


    void SimpleBLEPeripheral_Init( uint8 task_id )
    {
    .......................
    uint8 gaprole_adv_event_type = GAP_ADTYPE_ADV_LDC_DIRECT_IND;


    GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &gaprole_adv_event_type);
    GAPRole_SetParameter(GAPROLE_ADV_DIRECT_ADDR,sizeof(centralAddr), centralAddr);
    .......................
    }