Is there any actual difference between "Fast Advertising", and "Slow Advertising" - or is it just a way to easily specify two different sets of timing parameters?
The question has been asked before; eg,
https://devzone.nordicsemi.com/f/nordic-q-a/16843/slow-fast-advertising
https://devzone.nordicsemi.com/f/nordic-q-a/12165/fast-advertising-and-slow-advertising (documentation link broken)
https://devzone.nordicsemi.com/f/nordic-q-a/8502/fast-vs-slow-advertising-where-is-the-border-between
But I don't see an answer to that question.
Also, how to specify indefinite advertising; ie, with no timeout?
Various threads have suggested that a timeout of zero should do it:
https://devzone.nordicsemi.com/f/nordic-q-a/7344/infinite-slow-adversiting
https://devzone.nordicsemi.com/f/nordic-q-a/7320/infinite-advertising-with-sd-8-0-0
But I can't see anything in any documentation which actually states that this is so.
Current (15.3.0) online Documentation: https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_ble_advertising.html
As far as I know it's just a convenient feature. I actually extended that to support a "super slow" advertising interval after the slow advertising times out. I don't think it is a Bluetooth spec featureā¦
Yes, it's just for convenience and is optional to use. Apple recommends having both in their design guidelines: https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf (section 25.3)
Andy said:I don't think it's linked anywhere
I eventually found this - in ble_gap.h:
/**@brief GAP advertising parameters. */ typedef struct { : : uint16_t duration; /**< Advertising duration in 10 ms units. When timeout is reached, an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. @sa BLE_GAP_ADV_TIMEOUT_VALUES. @note The SoftDevice will always complete at least one advertising event even if the duration is set too low. */
The SES 'Find in Project' doesn't work on on that Doxygen cross-reference to BLE_GAP_ADV_TIMEOUT_VALUES, but some raw text searching does eventually get to:
/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values in 10 ms units * @{ */ #define BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX (128) /**< Maximum high duty advertising time in 10 ms units. Corresponds to 1.28 s. */ #define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (18000) /**< Maximum advertising time in 10 ms units corresponding to TGAP(lim_adv_timeout) = 180 s in limited discoverable mode. */ #define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. For high duty cycle advertising, this corresponds to @ref BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX. */ /**@} */
Yes, that's actually how I found the documentation I linked above, but that's already in the GAP header file. I don't think there's any information about the timeouts in the header file of the advertising module.