Hey guys, I want to build an RTLS, where the tags (additionally to the normal PANS-functionality), send BLE advertisements, that contain their currently measured ranges.
In this process, I found the PANS SDK, as well as the mynewt-based one on Github.
I was wondering what the difference between both is, since both do not seem to be actively developed.
After tinkering around with the mynewt example apps, I came to the conclusion that replicating a RTLS UWB-Network like PANS seems infeasible.
For example the twr_nranges_tdma app seems to require that all slave-anchors directly see the master-anchor, while the Network created by PANS is more mesh-like.
Am I missing something?
What is the intended relationship between PANS and the mynewt SDKs?
I’m starting an opensource RTLS development and before I started I made a survey of existing closed and open source, so if you find more not listed there please let me know
The RTLS I started is for now collecting ranges only and still did not deploy the dynamic mesh roles assignments but that is the goal of the development. The strategy is to put as little logic as possible in the nodes firmware and let a central server manage roles assignments. Although the current server is one to one communication, I’ll be expanding it for mesh with routing to cover a multi rooms space.
If you have ideas or want to review that’ll be welcome.
Hi, thanks for the responses @wassfila and @leapslabs .
As far as I know, PANS’ own BLE functionality is optional, and can be disabled by simply not calling dwm_ble_compile(). Do you happen to know, if I can take control of the chips’ bluetooth functionalities if this is omitted? Or is it maybe already enough to set dwm_cfg_common.ble_en = false? I’ve seen some questions to this topic (like this one), but they are either unanswered, or the answer is “should be possible, but we never tried”.
I tried for a couple of hours now, but I was not able to find out how to properly initialize the chip.
If dwm_ble_compile() is not called, all nrf API calls error out with NRF_ERROR_SOFTDEVICE_NOT_ENABLED (SoftDevice has not been enabled), and if I keep the call, but instead disable bluetooth via the ble_en property, calls like ble_advertising_start() error out with NRF_ERROR_INVALID_STATE (Invalid state, operation disallowed in this state).
as far I remember when the dwm_ble_compile() is commented out then a lot fot thing are not present in the binary for the BLE (removed during the size optimization).
When you set the dwm_cfg_common.ble_en = false then the internal structures will disable the BLE and Im not 100% sure some other mandatory stuff for BLE is not initialized (each ble_en change need reboot to take effect). And that is probably the reason why you cannot initialized it by yourself. There might be some workarounds but I’m not aware of them.