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.

Few Questions on TI Bluetooth Low Energy Stack features

Other Parts Discussed in Thread: CC2541

Hi,

I am trying to assess whether networking could be possible by using the TI's BLE stack and I would like to find the answers to the following questions which is critical for my objective. Your feedback and comments will be greatly appreciated.

1 - How many simultaneous master-slave connections are supported by the stack?

2 - Is peripheral-to-central and central-to-peripheral role changes supported? Can these role changes be performed without power cycling or resetting the stack?

3 - If role switching is supported without power cycling or resetting the device, how fast does this role switching take place in milliseconds?


4 - Does the stack support combined roles such as "central scanner" and "peripheral broadcaster"? What I mean by a combined role is as follows:

    4.1. central scanner: While the central device is connected to one or more slaves, it is able to perform scanning other devices around it without aborting its existing connections.

    4.2. peripheral broadcaster: While a peripheral device is connected to a central device, it is still able to broadcast to other devices around it without disconnecting. (However, no new connections to this peripheral device can be made)

5 - What is thefootprint of TI's stack in terms of RAM and Flash?

Kind regards...

  • Hi, I can give you some info about item 1 and 2.

    1. It is 3.

    2. Please refer to http://processors.wiki.ti.com/index.php/MasterSlaveSwitch. It needs to power recycle to change role.

  • Regarding #2 - as far as I have been able to determine, this is not supported in the current version of TI BLE stack.  See this thread: http://e2e.ti.com/support/low_power_rf/f/538/p/259087/923889.aspx#923889

    Furthermore, if you search this forum for MasterSlaveSwitch, you will find lots of questions asking why this doesn't work (and no answers).  Personally, I find it disappointing the TI cannot either support this configuration or else admit that it is not supported.

  • I have tried the source code and I can make it work. You need to add the following items to it.

    1.  Trigger GAPCentralRole_StartDiscovery when the role is central.

    2. Handle GAP_DEVICE_INFO_EVENT and GAP_DEVICE_DISCOVERY_EVENT in simpleBLECentralEventCB.

    By the way, there is mistake in my previous post. You do not need to power recycle CC2541 to change role and the switch time is very fast.

  • Hi YiKai,

    Thank you for your response.

    However, there seems to be contradictory information here regarding role switching. You say that it is doable and the switching is really fast.

    According to the following (very recent) post, some developers even had to change their topology to avoid the need to change roles.

    http://e2e.ti.com/support/low_power_rf/f/538/p/259087/923889.aspx#923889

    In your post, you have described discovery in central mode. However, it will be nice to see the steps you follow to perform role change from central to peripheral (and back)

    If you could kindly list those steps, that will be very helpful.

    Regards...

  • Hi Richard,

    I read the thread you have provided. Thank you.

    This does appear to be a problem with TI stack. I was talking to another vendor that uses TI BLE stack. They confirmed that they were supporting role switching. They even provided a role switching latency of about 7 to 8 msec (depending on the state of the hardware), which shows that they have tested this feature carefully.

    Therefore, I think the stack should be providing role switching and the problem is with how to get that feature working.

    Regards...

  • Role switching basically revolves around doing a GapRoleInit and then having the profile of both roles in the code. The problem you will have though is keeping a connection up. GapRoleInit will reset the LL layer and all timing/connection info will be cleared.  It will behave similar to a power cycle in that respect. BLE is star network topology when connected. One way around this is to utilize advertising/scanning while connected to send smaller amounts of data between devices.

    BR,

    -Greg

  • Hi Greg,

    Thank you for your useful feedback.

    So actually there is no need to power cycle the radio or to re-initialise the stack for changing roles. However, an initialisation of the Link Layer will be needed with TI. This may cause some latency as well. I wonder how quickly that role change can be achieved in real-time. Maybe if the latency is short enough, this initialisation will not be a problem for my application.

    As you have mentioned, combined roles such as central-scanner, peripheral-broadcaster and central-broadcaster (I think this is also possible) is really attractive to avoid role change. This is one alternative I am currently considering.

    Regards...

  • One undesirable side effect I found with resetting the LL is that it makes all OSAL timers expire! OSAL timers are driven by the LL's 625us clock and resetting the LL also resets the clock and messes up the timers count (see osalTimeUpdate() in OSAL_ClockBLE.c).

    --Tom