This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Broadcaster/observer low level implementation

In one of my current projects, I need:

  • to have access to more than 8 kB of RAM (which is not possible when using SoftDevice)
  • to have Observer role (which apparently is not implemented in SoftDevice)

Since I don't use any other functionality from the SoftDevice, I decided to implement the Observer and to reimplement the Broadcaster roles. After reading the specification Bluetooth Low Energy Link Layer and nRF51822 RADIO specification I developed a little firmware that makes passive scanning in the advertise channels 37, 38 and 39 using a 1 second scanWindow and 2 seconds scanInterval.

To evaluate my implementation I put BlueZ 5.x to do advertising and I checked with another BlueZ 5.x if the advertising is correct. Then I put my firmware (source code attached) to run. Although the packet are apparently received, their contents are wrong (check the attached log):

  • received packets are different in each channel
  • CRC check fails
  • invalid header fields (PDU type, TxAdd, RxAdd, ...)
  • invalid payload (it doesn't contains the advertiser address 00:1B:DC:05:4B:DF)

I tried to put a lot of comments in the source file but english is not my first language, so I apologize in advance for any linguistic mistake.

What can I do to fix my firmware?

log.txt

main.c

Parents
  • Hi Ole

    Since the previous post, i'd like to implement the low level advertising part.

    Which one is the Nordic S110 low level library that implements low level broadcasting ? Or is there a Nordic lib else than nrf51.h or an existing documentation that i can study as a starting point, in order to understand how S110 implements low level broadcasting ?

    Thanks in advance, Arnaud

  • This is really the complete opposite question than here, so it would have much better off separately. However, you may have use in taking a look at the packet configuration in the example here, as that would be very similar for an advertiser. In addition, I'd recommend you to read the RADIO chapter of the nRF51 Reference Manual thoroughly, read the appropriate parts of the Core Specification, primarily Volume 3, Part C, section 9.1 and 11, and Volume 6, Part B, section 2.3 and 4.4, and take a look at the radio_example in the SDK, as well as this here. What you plan to do isn't trivial, but should be perfectly doable if you read up a little first.

    If you have any further, specific questions, I'd recommend you to post them separately.

Reply
  • This is really the complete opposite question than here, so it would have much better off separately. However, you may have use in taking a look at the packet configuration in the example here, as that would be very similar for an advertiser. In addition, I'd recommend you to read the RADIO chapter of the nRF51 Reference Manual thoroughly, read the appropriate parts of the Core Specification, primarily Volume 3, Part C, section 9.1 and 11, and Volume 6, Part B, section 2.3 and 4.4, and take a look at the radio_example in the SDK, as well as this here. What you plan to do isn't trivial, but should be perfectly doable if you read up a little first.

    If you have any further, specific questions, I'd recommend you to post them separately.

Children
No Data
Related