This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

multiple writes and notifications per connection interval

I know that it can be done and I have read the other posts. I'm still running on SDK8.0.0 with both a S110 and a S130. Using wireshark and the nordic sniffer firmware on a dongle I can see only one 20 byte attribute write command (not the req with response type) going out per connection interval. I also see the same thing on all notify type HVX messsages. I often see an empty PDU coming back interleaved in the writes and HVXs.

When I do my writes I call the stack send until I get back the no buffers return and then start queueing up and then every time I receive a TX Complete event I send the next one in my buffer. I always seem to get a TX Complete with only 1 in the count. I would have expected to pipeline my 4 writes into a single connection interval but that is not the case.

Any ideas? I have it on my plate to update to the latest stack, however I do want to put this issue to bed before stirring things up with new stack and SD. Is there an issue with 8.0.0 that updating will fix?

  • more info:

    so when I use a Nexus5 android as a central role I see all 4 HVX going out on a single connection interval (same S110 peripheral role radio code). I don't know about the write commands since they are using all write requests and those can't go out on a single since it needs to wait on the response.

  • So you have one peripheral (S110) connected to one central (S130)? And you are doing notifications from the peripheral to the central, and write commands from the central to the peripheral. Or do you have a different setup?

  • yes, S110 and S130 are 1:1, peripheral is notifying data to the central and the central is doing writes to the peripheral. Notifys work as expected when S110 is talking to an android phone. Write commands from S130 do not stack into one connection interval and notifications on S110 do not either when talking to the S130. There is something on the S130 that is doing something to consume the rest of the connection. I see tons of empty PDUs listed on WireShark interleaved with every write command and notification. Put android in for the S130 and I see noifications with no empty PDUs in between as I would expect.

  • this post says that for SoftDevice S120 you can only send one packet, and I think S130 when working as a Central also allow only one packet per connection. So you need 4 connections to send your 4 write commands. At least that was what I found from my research.

  • Since you are using SDK 8.0.0, I'm guessing you are using S130 1.0.0. It can only receive 1 notification per connection interval, and can only send 1 write command per connection interval. Please see Chapter 16 in S130 SoftDevice Specification v1.0 for more information.

    The S130 2.0.0 can recieve 6-7 notifications (20B) per connection interval, and send 6-7 write commands (20B) per connection interval. If this is something you want I recommend you to upgrade to this version, and use it together with SDK 11.0.0.

1 2