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.

TI BLE stack GAP Establish Link Request "highDutyCycle" parameter?



Hello,

I am wondering, what does the highDutyCycle parameter in the GAP Establish Link request do? The HCI documentation seems to be a little vague on this, as well as the API documentation. Is this something that I can find information about in the BLE spec? If so, where? Is there another TI document I should be looking at?

 

Thanks in advance!

  • In gap.h:

     

    typedef struct

    {

      uint8 taskID;               //!< Requesting App/Profile's Task ID

      uint8 highDutyCycle;        //!< TRUE to high duty cycle scan, FALSE if not.

      uint8 whiteList;            //!< Determines use of the white list: @ref GAP_WHITELIST_DEFINES

      uint8 addrTypePeer;         //!< Address type of the advertiser: @ref GAP_ADDR_TYPE_DEFINES

      uint8 peerAddr[B_ADDR_LEN]; //!< Advertiser's address

    } gapEstLinkReq_t;

     

    I've searched on the 4.0 specs and have not find anything related. Perhaps is some way to speed up the checks a listening device perform on the 3 advertisement channels in order to detect the advertisers as fast as possible.

  • Setting highDutyCycle true will initiate a connection using the scan interval and scan window based on the values of the GAP parameters TGAP_CONN_HIGH_SCAN_INT and TGAP_CONN_HIGH_SCAN_WIND. When highDutyCycle is set to FALSE, the host will use TGAP_CONN_SCAN_INT and TGAP_CONN_SCAN_WIND.  By default the highDutyCycle params are set for 100% dutyCycle and the others to 50%, so it should connect as fast as possible in the highDutyCycle mode.

  • Thanks J. Sample. I'm still a little confused though as to why the highDutyCycle parameter is part of the GAP_Establish_Link_Request call though? It seems to me that when you call the establish link request command, you have already finished scanning and have discovered the device to which you are interested in connecting?

  • When trying to establish a connection, the BLE controller is in "initiating" mode, and from a pure radio standpoint initiating is identical to scanning. In both cases, the radio receiver is on for a set amount of time (the window), and the cycle repeats periodically (the interval). The only difference between the two is that when scanning, if an advertisement is received a scan request will be sent. When initiating, if an advertisement is received a connection request will be sent.

    With all that being said, when you are establishing a link, there is still a "scan window" and a "scan interval" that determines how long and how often the radio receiver is on. You are allowed to have two sets of parameters: the normal parameters or the "highDutyCycle" parameters.