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.

CC1352R: BLE Scanning during quiet times of sub 1GHz prop radio activity

Part Number: CC1352R
Other Parts Discussed in Thread: BLE-STACK

I'm evaluating the CC1352R for a dual-band application where I have both BLE and a synchronous sub-1GHz network that has a moderate amount of idle time yet is time-critical (<500us) when active. My sub-1GHz service must always have priority. While technically my needs for BLE would be considered Dual-Role, the BLE side of the application doesn't actually need to initiate connections. It needs to be a GATT server (peripheral) and it needs to scan for advertisements whenever it can -- it reports on beacons. With a long enough connection interval/slave timeout, it should be able to maintain a BLE connection made to it.

The DMM seems like the solution for this but all the examples for the DMM I found speak of BLE peripheral mode only, never of central-oriented activity like scanning. I understand that the other central activities like originating connections may be incompatible with the DMM, but would intermittent scanning work? Is there anything about the DMM that specifically precludes using it for intermittent BLE central stuff like scanning?

In the BLE5 Stack documentation http://dev.ti.com/tirex/content/simplelink_cc26x2_sdk_2_30_00_34/docs/ble5stack/ble_user_guide/html/dmm/performance.html#protocol-stack-limitations there's a comment about only peripheral mode being supported but it's not obvious if this applies universally or only for the specific test case described. That said, all the DMM-using samples I could find are centered around peripheral mode. In my intended application, I would have the BLE activity always in lower priority, both the GATT server and the occasional scanning for beacons.

  • Perhaps this kind of case is what was envisioned for DMMPolicy_StackRole_reserved1 and DMMPolicy_StackRole_reserved2, one each for my kinda-dual-role and sub-1GHz stacks?
  • Hi Daniel,
    We do not have any DMM/BLE Central examples just yet. It's targeted for later this year. In the scenario where you would have a BLE central operating in your device, I am not certain you would be able to give higher priority to sub-1Ghz because of the strict BLE timing.
  • My central needs are for scanning only -- I can give the BLE priority for that when I want to scan. When being a GATT server (peripheral) though, I definitely need to give priority to my sub-1G.

    I'll readily admit that my BLE knowledge is limited. That said, I thought BLE ran transactions at intervals: if the participants miss their appointment, the transaction is retried again next interval. Isn't that what slave latency and supervisory timeout are about? My system can definitely tolerate delayed service of BLE notifications or attribute reads (such as when sub-1G is running) as long as they get through eventually. My sub-1G protocol has idle times (from a few to a few hundred ms in duration, variously, with guaranteed windows at least one per 205ms) which I was hoping I could use for BLE activity on the CC1352R. My theory was that if I set the BLE connection interval to a few ms and let the latency (number of missed connections) be high, it would all work out. No?

    Remember, I don't need full central capabilities - just scanning for beacons intermittently. Otherwise, my 1352's BLE role is that of peripheral.
  • Hi Daniel,
    You are correct about the data being retransmitted, if it doesn't get through. However, missed connection events causes breaks in the synchronisation if you do not allow the Link Layer to run and calculate the next connection event.
  • Joakim,

         I see. Thank you. Does this mean the BT stack is not capable of being suspended for multiple connection interval periods and then correctly scheduling its NEXT one when it is restored? I was hoping I could run in the following model: Let's say I have the BT connection params set to a Connection Interval of 2ms and the timeout set to 500ms. My proprietary sub-1G stack has, for the sake of example, intermittent work to do over a 300ms window. I thought the remote BT endpoint would try - and fail - to rendezvous with my embedded target every 2ms during the 300ms my target was busy using its proprietary stack. Then, when my target was free to do BT, it would release the BT stack which, I had hoped, would look at the system time, realize it had missed 150 connection intervals (at 2ms each), compute the next connection time, and actually meet the remote endpoint for a successful rendezvous at the appropriate point in phase with the established 2ms cycle. Is this not possible?

         Thinking about it further, if the BT stack needs to run to keep time but I need my sub-1G to dominate for 300ms, I should be able to tell the DMM that my sub-1G has priority such that the BT stack's RF activity would just get dropped by the DMM during the sub-1G busy window -- the key difference being the BT stack got to run and thus keep up with its scheduling. As long as the DMM actually prohibited the BT stack's RF activity from getting through during the sub-1G busy window (even when my proprietary stack had no RF commands submitted to the RF module), that would be enough to achieve my desired results. What's critical here is that my proprietary sub-1G may be technically idle for some of that 300ms window, though it needs to retain control of the RF module for performance reasons. Or at least I think it does. Maybe I'm not thinking about this the right way. As long as my stack had priority at the DMM, it would simply disrupt the BT RF activity if/as needed and the BT stack would do what it had to do to recover, with processing time available always and RF access sometimes. Do I understand correctly? That could work for my application. Thanks for your patience as I come up to speed on this.

        In that case, my question shifts to best practices. Does the DMM consider the radio to be locked to a task (stack) for the entire interval between RF_open() and RF_close(), or is it finer-grained than that? I'm trying to understand what consistency protections I need to employ to ensure my proprietary protocol can coexist with the BT stack doing RF transactions during my proprietary stack's idle times.

  • Hey,
    The BLE-Stack cannot recover from a completely missed connection event as it misses it's opportunity to calculate when the next connection event should occur.

    In the SDK v3.10, DMM was updated with a new policy table structure including a new policy option - Balanced Mode, that may be useful for you;

    dev.ti.com/.../states-and-policies.html