Giter VIP home page Giter VIP logo

dw1000-rs's Introduction

dw1000-rs's People

Contributors

diondokter avatar hannobraun avatar jamesmunns avatar jkelleyrtp avatar jonas-schievink avatar nbigaouette avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dw1000-rs's Issues

Add type parameter to `Led` to identify pin

Original issue: hannobraun/rust-dwm1001#13


Led currently uses the generic pin type (P0_Pin), however, each instance is actually restricted to a specific pin, making the struct not as type-safe as it could be. It would be safer, if it had a type parameter to identify the pin. Then the pin each instance needs could be made obvious in Leds.

This issue is blocked until nrf-rs/nrf-hal#8 is accepted and implemented.

Add support for bool and enums in field access code

Currently the field access code only supports unsigned integers as types for the fields. It would be great to support bool and custom enums, too.

I think this should be relatively straight-forward to add. It might even be possible to extend the macro syntax to generate custom field enums.

Docs fail to build

error: `[Frame::write]` cannot be resolved, ignoring it...
  --> /home/james/.cargo/git/checkouts/ieee-802.15.4-2c4cb3c4e568cea2/6d2059f/src/mac.rs:74:12
   |
74 | /// Tells [`Frame::write`] whether to write the footer
   |            ^^^^^^^^^^^^^^ cannot be resolved, ignoring
   |
note: lint level defined here
  --> rust-dw1000/src/lib.rs:7:9
   |
7  | #![deny(warnings)]
   |         ^^^^^^^^
   = note: #[deny(intra_doc_link_resolution_failure)] implied by #[deny(warnings)]
   = help: to escape `[` and `]` characters, just add '\' before them like `\[` or `\]`

error: `[Ping]` cannot be resolved, ignoring it...
  --> rust-dw1000/src/ranging/mod.rs:16:43
   |
16 | //! 2. Anchors regularly send out pings ([`Ping`]).
   |                                           ^^^^^^ cannot be resolved, ignoring
   |
   = help: to escape `[` and `]` characters, just add '\' before them like `\[` or `\]`

error: `[Request]` cannot be resolved, ignoring it...
  --> rust-dw1000/src/ranging/mod.rs:18:10
   |
18 | //!    ([`Request`]) for each ping they receive.
   |          ^^^^^^^^^ cannot be resolved, ignoring
   |
   = help: to escape `[` and `]` characters, just add '\' before them like `\[` or `\]`

error: `[Response]` cannot be resolved, ignoring it...
  --> rust-dw1000/src/ranging/mod.rs:20:19
   |
20 | //!    response ([`Response`]).
   |                   ^^^^^^^^^^ cannot be resolved, ignoring
   |
   = help: to escape `[` and `]` characters, just add '\' before them like `\[` or `\]`

error: Could not document `dw1000`.

Probably worth adding cargo doc to the CI.

Add support for sub-indices

The DW1000 register interface allows for addressing within a register by using a sub-index. This can be required for accessing larger registers, especially since the nRF52832's[1] SPIM peripheral is somewhat restricted in the buffer sizes it supports (also see jamesmunns/nrf52-hal#14).

[1] The nRF52832 is especially relevant to this crate, as it's the microcontroller used on the DWM1001 board.

HL Status Sys Status

I've purchased and mounted two dwm1000 modules onto breakout boards which I have wired up to some raspberry pi picos as a first test for an indoor positioning system I'm working on. I was able to get the dw1000_id.rs example working and got correct id values back, but when I built one of my picos for tx and one for rx, I never receive a message on the rx programmed device.

After some searching I found https://decaforum.decawave.com/t/i-can-not-receive/838 which seems similar to my issue (no received messages) and the decawave folks suggest inspecting (or printing out) the sys_status register to see if the receiving module changes that register at all when a message is expected.

I then started digging through the dw1000 module code to see if there was a way I could access that information from the high level api, but it seems like its only available through flags in the low level api.

TLDR: is there a way to access the sys_status flags in the high level api and or how would you recommend debugging a lack of receiving (or sending) messages ?

Add integration tests

The current unit tests are really not sufficient and a maintenance burden (I'm likely to remove them in an upcoming pull request).

Once embedded-hal is supported, an integration test suite should be added. This issue is currently blocked by #5.

Support full size of RX_BUFFER/TX_BUFFER

RX_BUFFER and TX_BUFFER both have a length of 1024 octets, but only 127 of those are supported in the code right now. To support the full size of the register, we'd need one of the following capabilities:

  • Support for longer transactions in nrf52-hal (nrf-rs/nrf-hal#11).
  • Support for sub-index access in those registers.

127 happens to the maximum length of UWB frames according to the IEEE 802.15.4 standard, but the DW1000 support longer, non-standard frame lengths. Therefore it would be nice to support the full sizes of RX_BUFFER and TX_BUFFER.

Enforce formatting in CI

#147 formats the code using cargo fmt, but doesn't update the CI build to enforce that. I think this should be done, as otherwise the formatting is going to drift again, over time.

When doing that, it might be worth deciding whether to include any formatting configuration that deviates from the default. Personally, I'm always changing the maximum line width to 80 characters (max_width = 80), as any other value is objectively too long or too short (no doubt about it ๐Ÿ˜).

Blocked on #128.

Use reusable library for field access code

This crate contains custom field access code. Since this code isn't in any way specific to this crate, I think it would be better to move it out.

I looked for libraries before implementing the code. The only thing that came close to what I needed was bitfield, but that doesn't support byte slices as the type of the bit field, which is what I needed.

I think this issue could be solved in either of these 3 ways:

  1. Find another library that fulfills our needs and use that.
  2. Extend the bitfield crate and use that.
  3. Clean up the custom code and move it to its own library.

Make register access API more convenient

Right now, you need to do something like this to read/write/modify registers:

dw1000.write::<dw1000::EUI, _>(|w| ... );

I'd like it to look more like this:

dw1000.eui.write(|w| ... );

Depend on embedded-hal instead of nrf52-hal

This crate should depend on embedded-hal, not any specific HAL implementation. Right now it depends on nrf52-hal though, making this crate unusable with any other microcontroller.

This can be changed once nrf52-hal implements the SPI traits from embedded-hal. This might require changes to the embedded-hal traits. I'm going to open issues in the proper repositories and link them here once I do.

Merge this repository with braun-embedded/rust-dwm1001

I'd like to merge this repository with the dwm1001 repository. I created separate repositories at first because they seem like different pieces of software, but in practice, they're tied together pretty closely:

  • The driver by itself is pretty much useless. I need the examples from the dwm1001 repository to test any changes.
  • Aside from testing, the dwm1001 is my primary means of verifying the sanity of API changes. This means between dw1000 releases, I either need to add a Git dependency to dwm1001's Cargo.toml, or I need to have a long-running pull request open.

If both lived in the same repository, they could just evolve together.

I'm pretty much convinced that this is the right thing to do, but I might not have looked at it from every perspective. My main question right now is what the repository name should be. I'm leaning towards just merging the dwm1001 repository into this one and keep the rust-dw1000 name.

@jamesmunns Any thoughts?

FYI `SYS_STATE` is now available in the datasheet

Hi Hanno!

I just wanted to make you aware that in the latest version of the DW1000 register datasheet the SYS_STATE register is finally specified with all the internal states of the chip.
This could be used to make the low-level driver more complete. :)

BR Emil

Is a mega PR welcome?

Hi!

So, the title says a lot.
I've done work on this library up until about half a year ago.
I was going to upstream it in nice chunks, at least that was the idea.
But now the project has been cancelled and I'm putting all my free time in renovating my house.
It's a waste though to let all these nice features go to waste in an unmaintained fork.

https://github.com/diondokter/rust-dw1000

Things that have been added:

  • Double buffering RX
  • RSSI and LOS calculations
  • Sleep and wakeup
  • Range bias calculations
  • External sync modes (for TDOA systems)
  • HL split up into multiple files (one for each state) because it got way too big
  • Probably more small things that I don't really remember

It all did work though... All of these were used successfully in my project before it was cancelled.

I don't want to burden you with this, so I'll leave it up to you.
Do you want me to make the PR? Apparently there will be no merge conflicts, so it is up-to-date enough with the current master I think.

Overflow and weird reading in ranging examples

I've seen overflows when running the dw1000_ranging_tag example in debug mode (with a dw1000_ranging_anchor` running on another board) and weird readings (high measured distance when distance should be low) in release mode. I suspect both problems originate in the same code.

So far, I haven't investigated further.

Investigate using embedded-hal-mock for examples

A lot of this driver's API doesn't have examples, because writing them would be tedious. There are some examples, but they contain their own stub implementations of embedded-hal traits.

I believe both of these issues could be improved using embedded-hal-mock. By mocking embedded-hal traits, we should be able to write API examples that are relatively straight-forward.

The actionable items here are:

  • To investigate whether this is really the case that embedded-hal-mock cloud help here.
  • Extend embedded-hal-mock. I don't it implements all the traits we require.

Apply range bias to distance measurement

Original issue: hannobraun/rust-dwm1001#55


The measured distance value is usually too large. To get a more accurate result, a bias needs to be applied. Strictly speaking, the value of this bias depends on the received signal strength. For the DWM1001, it should be accurate enough to apply the bias for the measured range. This is described in Application Note APS011.

The bias correction is implemented in Decawave's driver code. The code for that is available, but there's no license that would allow us to use that code. The following description is intended to serve as a specification, to make it possible to create a clean-room implementation.

The range bias value is applied using the following formular:

<corrected distance> = <measured distance> + <range bias>

The range bias value consists of two parts according to the following formular:

<range bias> = <base part> + <distance-dependent part>

The range bias value depends on the following parameters:

  • The measured distance
  • The channel being used to send/receive the ranging messages
  • The PRF setting (16 MHz or 64 MHz)

Channels are grouped into two groups:

  • 1, 2, 3, and 5 are narrow-band channels.
  • 4 and 7 are wide-band channels.

The base part values are:

  • -23 cm for 16 MHz PRF, narrow-band channel
  • -28 cm for 16 MHz PRF, wide-band channel
  • -17 cm for 64 MHz PRF, narrow-band channel
  • -30 cm for 64 MHz PRF, wide-band channel

The following lists provide the distance-dependent part. There is one list for each combination of channel and PRF setting. Each list item provides the distance-dependent part of the range bias for an interval of measure distances.

Since all of this would be extremely tedious to write manually, I've also prepared a TOML file to aid code generation: range-tables.zip

Distance-dependent part values for channel 1, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 1 cm for 25 cm < d <= 75 cm
  • 2 cm for 75 cm < d <= 100 cm
  • 3 cm for 100 cm < d <= 125 cm
  • 4 cm for 125 cm < d <= 175 cm
  • 5 cm for 175 cm < d <= 225 cm
  • 6 cm for 225 cm < d <= 275 cm
  • 7 cm for 275 cm < d <= 300 cm
  • 8 cm for 300 cm < d <= 325 cm
  • 9 cm for 325 cm < d <= 375 cm
  • 10 cm for 375 cm < d <= 450 cm
  • 11 cm for 450 cm < d <= 500 cm
  • 12 cm for 500 cm < d <= 575 cm
  • 13 cm for 575 cm < d <= 625 cm
  • 14 cm for 625 cm < d <= 700 cm
  • 15 cm for 700 cm < d <= 750 cm
  • 16 cm for 750 cm < d <= 825 cm
  • 17 cm for 825 cm < d <= 900 cm
  • 18 cm for 900 cm < d <= 1000 cm
  • 19 cm for 1000 cm < d <= 1075 cm
  • 20 cm for 1075 cm < d <= 1175 cm
  • 21 cm for 1175 cm < d <= 1250 cm
  • 22 cm for 1250 cm < d <= 1350 cm
  • 23 cm for 1350 cm < d <= 1450 cm
  • 24 cm for 1450 cm < d <= 1575 cm
  • 25 cm for 1575 cm < d <= 1650 cm
  • 26 cm for 1650 cm < d <= 1775 cm
  • 27 cm for 1775 cm < d <= 1900 cm
  • 28 cm for 1900 cm < d <= 2050 cm
  • 29 cm for 2050 cm < d <= 2225 cm
  • 30 cm for 2225 cm < d <= 2450 cm
  • 31 cm for 2450 cm < d <= 2725 cm
  • 32 cm for 2725 cm < d <= 3175 cm
  • 33 cm for 3175 cm < d <= 3875 cm
  • 34 cm for 3875 cm < d <= 5550 cm
  • 35 cm for d > 5550 cm

Distance-dependent part values for channel 2, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 1 cm for 25 cm < d <= 50 cm
  • 2 cm for 50 cm < d <= 100 cm
  • 3 cm for 100 cm < d <= 125 cm
  • 4 cm for 125 cm < d <= 150 cm
  • 5 cm for 150 cm < d <= 200 cm
  • 6 cm for 200 cm < d <= 225 cm
  • 7 cm for 225 cm < d <= 250 cm
  • 8 cm for 250 cm < d <= 300 cm
  • 9 cm for 300 cm < d <= 325 cm
  • 10 cm for 325 cm < d <= 375 cm
  • 11 cm for 375 cm < d <= 450 cm
  • 12 cm for 450 cm < d <= 500 cm
  • 13 cm for 500 cm < d <= 550 cm
  • 14 cm for 550 cm < d <= 600 cm
  • 15 cm for 600 cm < d <= 675 cm
  • 16 cm for 675 cm < d <= 725 cm
  • 17 cm for 725 cm < d <= 800 cm
  • 18 cm for 800 cm < d <= 875 cm
  • 19 cm for 875 cm < d <= 950 cm
  • 20 cm for 950 cm < d <= 1025 cm
  • 21 cm for 1025 cm < d <= 1100 cm
  • 22 cm for 1100 cm < d <= 1175 cm
  • 23 cm for 1175 cm < d <= 1275 cm
  • 24 cm for 1275 cm < d <= 1375 cm
  • 25 cm for 1375 cm < d <= 1450 cm
  • 26 cm for 1450 cm < d <= 1550 cm
  • 27 cm for 1550 cm < d <= 1650 cm
  • 28 cm for 1650 cm < d <= 1775 cm
  • 29 cm for 1775 cm < d <= 1950 cm
  • 30 cm for 1950 cm < d <= 2125 cm
  • 31 cm for 2125 cm < d <= 2400 cm
  • 32 cm for 2400 cm < d <= 2775 cm
  • 33 cm for 2775 cm < d <= 3375 cm
  • 34 cm for 3375 cm < d <= 4850 cm
  • 35 cm for 4850 cm < d <= 6000 cm
  • 36 cm for d > 6000 cm

Distance-dependent part values for channel 3, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 1 cm for 25 cm < d <= 50 cm
  • 2 cm for 50 cm < d <= 75 cm
  • 3 cm for 75 cm < d <= 100 cm
  • 4 cm for 100 cm < d <= 125 cm
  • 5 cm for 125 cm < d <= 175 cm
  • 6 cm for 175 cm < d <= 200 cm
  • 7 cm for 200 cm < d <= 225 cm
  • 8 cm for 225 cm < d <= 250 cm
  • 9 cm for 250 cm < d <= 300 cm
  • 10 cm for 300 cm < d <= 350 cm
  • 11 cm for 350 cm < d <= 400 cm
  • 12 cm for 400 cm < d <= 450 cm
  • 13 cm for 450 cm < d <= 500 cm
  • 14 cm for 500 cm < d <= 550 cm
  • 15 cm for 550 cm < d <= 600 cm
  • 16 cm for 600 cm < d <= 650 cm
  • 17 cm for 650 cm < d <= 700 cm
  • 18 cm for 700 cm < d <= 775 cm
  • 19 cm for 775 cm < d <= 825 cm
  • 20 cm for 825 cm < d <= 900 cm
  • 21 cm for 900 cm < d <= 975 cm
  • 22 cm for 975 cm < d <= 1050 cm
  • 23 cm for 1050 cm < d <= 1125 cm
  • 24 cm for 1125 cm < d <= 1225 cm
  • 25 cm for 1225 cm < d <= 1300 cm
  • 26 cm for 1300 cm < d <= 1375 cm
  • 27 cm for 1375 cm < d <= 1475 cm
  • 28 cm for 1475 cm < d <= 1575 cm
  • 29 cm for 1575 cm < d <= 1725 cm
  • 30 cm for 1725 cm < d <= 1900 cm
  • 31 cm for 1900 cm < d <= 2125 cm
  • 32 cm for 2125 cm < d <= 2450 cm
  • 33 cm for 2450 cm < d <= 3000 cm
  • 34 cm for 3000 cm < d <= 4325 cm
  • 35 cm for 4325 cm < d <= 5325 cm
  • 36 cm for d > 5325 cm

Distance-dependent part values for channel 4, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 175 cm
  • 2 cm for 175 cm < d <= 200 cm
  • 3 cm for 200 cm < d <= 225 cm
  • 5 cm for 225 cm < d <= 250 cm
  • 6 cm for 250 cm < d <= 275 cm
  • 8 cm for 275 cm < d <= 300 cm
  • 9 cm for 300 cm < d <= 325 cm
  • 10 cm for 325 cm < d <= 350 cm
  • 11 cm for 350 cm < d <= 375 cm
  • 12 cm for 375 cm < d <= 400 cm
  • 13 cm for 400 cm < d <= 425 cm
  • 14 cm for 425 cm < d <= 450 cm
  • 15 cm for 450 cm < d <= 475 cm
  • 16 cm for 475 cm < d <= 500 cm
  • 17 cm for 500 cm < d <= 525 cm
  • 18 cm for 525 cm < d <= 550 cm
  • 19 cm for 550 cm < d <= 575 cm
  • 20 cm for 575 cm < d <= 600 cm
  • 21 cm for 600 cm < d <= 650 cm
  • 22 cm for 650 cm < d <= 675 cm
  • 23 cm for 675 cm < d <= 700 cm
  • 24 cm for 700 cm < d <= 750 cm
  • 25 cm for 750 cm < d <= 775 cm
  • 26 cm for 775 cm < d <= 800 cm
  • 27 cm for 800 cm < d <= 850 cm
  • 28 cm for 850 cm < d <= 900 cm
  • 29 cm for 900 cm < d <= 950 cm
  • 30 cm for 950 cm < d <= 1000 cm
  • 31 cm for 1000 cm < d <= 1050 cm
  • 32 cm for 1050 cm < d <= 1100 cm
  • 33 cm for 1100 cm < d <= 1150 cm
  • 34 cm for 1150 cm < d <= 1200 cm
  • 35 cm for 1200 cm < d <= 1250 cm
  • 36 cm for 1250 cm < d <= 1300 cm
  • 37 cm for 1300 cm < d <= 1375 cm
  • 38 cm for 1375 cm < d <= 1425 cm
  • 39 cm for 1425 cm < d <= 1475 cm
  • 40 cm for 1475 cm < d <= 1525 cm
  • 41 cm for 1525 cm < d <= 1575 cm
  • 42 cm for 1575 cm < d <= 1650 cm
  • 43 cm for 1650 cm < d <= 1700 cm
  • 44 cm for 1700 cm < d <= 1775 cm
  • 45 cm for 1775 cm < d <= 1850 cm
  • 46 cm for 1850 cm < d <= 1950 cm
  • 47 cm for 1950 cm < d <= 2025 cm
  • 48 cm for 2025 cm < d <= 2125 cm
  • 49 cm for 2125 cm < d <= 2225 cm
  • 50 cm for 2225 cm < d <= 2350 cm
  • 51 cm for 2350 cm < d <= 2475 cm
  • 52 cm for 2475 cm < d <= 2600 cm
  • 53 cm for 2600 cm < d <= 2750 cm
  • 54 cm for 2750 cm < d <= 2900 cm
  • 55 cm for 2900 cm < d <= 3075 cm
  • 56 cm for 3075 cm < d <= 3250 cm
  • 57 cm for 3250 cm < d <= 3475 cm
  • 58 cm for 3475 cm < d <= 3750 cm
  • 59 cm for 3750 cm < d <= 4100 cm
  • 60 cm for 4100 cm < d <= 4550 cm
  • 61 cm for 4550 cm < d <= 5175 cm
  • 62 cm for 5175 cm < d <= 5950 cm
  • 63 cm for d > 5950 cm

Distance-dependent part values for channel 5, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 2 cm for 25 cm < d <= 50 cm
  • 3 cm for 50 cm < d <= 75 cm
  • 4 cm for 75 cm < d <= 100 cm
  • 5 cm for 100 cm < d <= 125 cm
  • 6 cm for 125 cm < d <= 150 cm
  • 8 cm for 150 cm < d <= 175 cm
  • 9 cm for 175 cm < d <= 200 cm
  • 10 cm for 200 cm < d <= 225 cm
  • 11 cm for 225 cm < d <= 275 cm
  • 12 cm for 275 cm < d <= 300 cm
  • 13 cm for 300 cm < d <= 350 cm
  • 14 cm for 350 cm < d <= 375 cm
  • 15 cm for 375 cm < d <= 400 cm
  • 16 cm for 400 cm < d <= 450 cm
  • 17 cm for 450 cm < d <= 500 cm
  • 18 cm for 500 cm < d <= 525 cm
  • 19 cm for 525 cm < d <= 575 cm
  • 20 cm for 575 cm < d <= 625 cm
  • 21 cm for 625 cm < d <= 675 cm
  • 22 cm for 675 cm < d <= 725 cm
  • 23 cm for 725 cm < d <= 775 cm
  • 24 cm for 775 cm < d <= 850 cm
  • 25 cm for 850 cm < d <= 900 cm
  • 26 cm for 900 cm < d <= 950 cm
  • 27 cm for 950 cm < d <= 1025 cm
  • 28 cm for 1025 cm < d <= 1100 cm
  • 29 cm for 1100 cm < d <= 1200 cm
  • 30 cm for 1200 cm < d <= 1325 cm
  • 31 cm for 1325 cm < d <= 1475 cm
  • 32 cm for 1475 cm < d <= 1700 cm
  • 33 cm for 1700 cm < d <= 2075 cm
  • 34 cm for 2075 cm < d <= 3000 cm
  • 35 cm for 3000 cm < d <= 3700 cm
  • 36 cm for d > 3700 cm

Distance-dependent part values for channel 7, 16 MHz PRF:

  • 0 cm for 0 cm <= d <= 100 cm
  • 1 cm for 100 cm < d <= 125 cm
  • 4 cm for 125 cm < d <= 150 cm
  • 6 cm for 150 cm < d <= 175 cm
  • 9 cm for 175 cm < d <= 200 cm
  • 10 cm for 200 cm < d <= 225 cm
  • 12 cm for 225 cm < d <= 250 cm
  • 14 cm for 250 cm < d <= 275 cm
  • 16 cm for 275 cm < d <= 300 cm
  • 17 cm for 300 cm < d <= 325 cm
  • 19 cm for 325 cm < d <= 350 cm
  • 20 cm for 350 cm < d <= 375 cm
  • 21 cm for 375 cm < d <= 400 cm
  • 22 cm for 400 cm < d <= 425 cm
  • 24 cm for 425 cm < d <= 450 cm
  • 25 cm for 450 cm < d <= 475 cm
  • 26 cm for 475 cm < d <= 500 cm
  • 27 cm for 500 cm < d <= 525 cm
  • 28 cm for 525 cm < d <= 550 cm
  • 29 cm for 550 cm < d <= 575 cm
  • 30 cm for 575 cm < d <= 625 cm
  • 31 cm for 625 cm < d <= 650 cm
  • 32 cm for 650 cm < d <= 675 cm
  • 33 cm for 675 cm < d <= 725 cm
  • 34 cm for 725 cm < d <= 750 cm
  • 35 cm for 750 cm < d <= 775 cm
  • 36 cm for 775 cm < d <= 800 cm
  • 37 cm for 800 cm < d <= 850 cm
  • 38 cm for 850 cm < d <= 875 cm
  • 39 cm for 875 cm < d <= 900 cm
  • 40 cm for 900 cm < d <= 950 cm
  • 41 cm for 950 cm < d <= 975 cm
  • 42 cm for 975 cm < d <= 1000 cm
  • 43 cm for 1000 cm < d <= 1050 cm
  • 44 cm for 1050 cm < d <= 1100 cm
  • 45 cm for 1100 cm < d <= 1150 cm
  • 46 cm for 1150 cm < d <= 1200 cm
  • 47 cm for 1200 cm < d <= 1250 cm
  • 48 cm for 1250 cm < d <= 1300 cm
  • 49 cm for 1300 cm < d <= 1375 cm
  • 50 cm for 1375 cm < d <= 1450 cm
  • 51 cm for 1450 cm < d <= 1525 cm
  • 52 cm for 1525 cm < d <= 1600 cm
  • 53 cm for 1600 cm < d <= 1700 cm
  • 54 cm for 1700 cm < d <= 1800 cm
  • 55 cm for 1800 cm < d <= 1875 cm
  • 56 cm for 1875 cm < d <= 2000 cm
  • 57 cm for 2000 cm < d <= 2125 cm
  • 58 cm for 2125 cm < d <= 2300 cm
  • 59 cm for 2300 cm < d <= 2525 cm
  • 60 cm for 2525 cm < d <= 2800 cm
  • 61 cm for 2800 cm < d <= 3175 cm
  • 62 cm for 3175 cm < d <= 3675 cm
  • 63 cm for 3675 cm < d <= 4200 cm
  • 64 cm for 4200 cm < d <= 4550 cm
  • 65 cm for 4550 cm < d <= 4850 cm
  • 66 cm for 4850 cm < d <= 5125 cm
  • 67 cm for d > 5125 cm

Distance-dependent part values for channel 1, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 1 cm for 25 cm < d <= 50 cm
  • 3 cm for 50 cm < d <= 75 cm
  • 4 cm for 75 cm < d <= 100 cm
  • 5 cm for 100 cm < d <= 125 cm
  • 6 cm for 125 cm < d <= 175 cm
  • 7 cm for 175 cm < d <= 250 cm
  • 8 cm for 250 cm < d <= 325 cm
  • 9 cm for 325 cm < d <= 400 cm
  • 10 cm for 400 cm < d <= 475 cm
  • 11 cm for 475 cm < d <= 550 cm
  • 12 cm for 550 cm < d <= 600 cm
  • 13 cm for 600 cm < d <= 675 cm
  • 14 cm for 675 cm < d <= 750 cm
  • 15 cm for 750 cm < d <= 800 cm
  • 16 cm for 800 cm < d <= 875 cm
  • 17 cm for 875 cm < d <= 950 cm
  • 18 cm for 950 cm < d <= 1075 cm
  • 19 cm for 1075 cm < d <= 1200 cm
  • 20 cm for 1200 cm < d <= 1400 cm
  • 21 cm for 1400 cm < d <= 1950 cm
  • 22 cm for 1950 cm < d <= 2525 cm
  • 23 cm for 2525 cm < d <= 3000 cm
  • 24 cm for 3000 cm < d <= 3925 cm
  • 25 cm for d > 3925 cm

Distance-dependent part values for channel 2, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 1 cm for 25 cm < d <= 50 cm
  • 3 cm for 50 cm < d <= 75 cm
  • 4 cm for 75 cm < d <= 100 cm
  • 6 cm for 100 cm < d <= 150 cm
  • 7 cm for 150 cm < d <= 225 cm
  • 8 cm for 225 cm < d <= 300 cm
  • 9 cm for 300 cm < d <= 350 cm
  • 10 cm for 350 cm < d <= 425 cm
  • 11 cm for 425 cm < d <= 475 cm
  • 12 cm for 475 cm < d <= 525 cm
  • 13 cm for 525 cm < d <= 600 cm
  • 14 cm for 600 cm < d <= 650 cm
  • 15 cm for 650 cm < d <= 700 cm
  • 16 cm for 700 cm < d <= 775 cm
  • 17 cm for 775 cm < d <= 825 cm
  • 18 cm for 825 cm < d <= 925 cm
  • 19 cm for 925 cm < d <= 1050 cm
  • 20 cm for 1050 cm < d <= 1225 cm
  • 21 cm for 1225 cm < d <= 1700 cm
  • 22 cm for 1700 cm < d <= 2225 cm
  • 23 cm for 2225 cm < d <= 2625 cm
  • 24 cm for 2625 cm < d <= 3450 cm
  • 25 cm for d > 3450 cm

Distance-dependent part values for channel 3, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 2 cm for 25 cm < d <= 50 cm
  • 3 cm for 50 cm < d <= 75 cm
  • 5 cm for 75 cm < d <= 100 cm
  • 6 cm for 100 cm < d <= 125 cm
  • 7 cm for 125 cm < d <= 200 cm
  • 8 cm for 200 cm < d <= 250 cm
  • 9 cm for 250 cm < d <= 325 cm
  • 10 cm for 325 cm < d <= 375 cm
  • 11 cm for 375 cm < d <= 425 cm
  • 12 cm for 425 cm < d <= 475 cm
  • 13 cm for 475 cm < d <= 525 cm
  • 14 cm for 525 cm < d <= 575 cm
  • 15 cm for 575 cm < d <= 625 cm
  • 16 cm for 625 cm < d <= 675 cm
  • 17 cm for 675 cm < d <= 750 cm
  • 18 cm for 750 cm < d <= 825 cm
  • 19 cm for 825 cm < d <= 925 cm
  • 20 cm for 925 cm < d <= 1100 cm
  • 21 cm for 1100 cm < d <= 1500 cm
  • 22 cm for 1500 cm < d <= 1975 cm
  • 23 cm for 1975 cm < d <= 2325 cm
  • 24 cm for 2325 cm < d <= 3050 cm
  • 25 cm for d > 3050 cm

Distance-dependent part values for channel 4, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 175 cm
  • 1 cm for 175 cm < d <= 200 cm
  • 3 cm for 200 cm < d <= 225 cm
  • 5 cm for 225 cm < d <= 250 cm
  • 6 cm for 250 cm < d <= 275 cm
  • 7 cm for 275 cm < d <= 300 cm
  • 8 cm for 300 cm < d <= 325 cm
  • 10 cm for 325 cm < d <= 350 cm
  • 11 cm for 350 cm < d <= 375 cm
  • 12 cm for 375 cm < d <= 400 cm
  • 14 cm for 400 cm < d <= 425 cm
  • 15 cm for 425 cm < d <= 450 cm
  • 16 cm for 450 cm < d <= 475 cm
  • 18 cm for 475 cm < d <= 500 cm
  • 19 cm for 500 cm < d <= 525 cm
  • 20 cm for 525 cm < d <= 550 cm
  • 21 cm for 550 cm < d <= 600 cm
  • 22 cm for 600 cm < d <= 625 cm
  • 23 cm for 625 cm < d <= 675 cm
  • 24 cm for 675 cm < d <= 700 cm
  • 25 cm for 700 cm < d <= 725 cm
  • 26 cm for 725 cm < d <= 750 cm
  • 27 cm for 750 cm < d <= 800 cm
  • 28 cm for 800 cm < d <= 825 cm
  • 29 cm for 825 cm < d <= 850 cm
  • 30 cm for 850 cm < d <= 875 cm
  • 31 cm for 875 cm < d <= 925 cm
  • 32 cm for 925 cm < d <= 975 cm
  • 33 cm for 975 cm < d <= 1025 cm
  • 34 cm for 1025 cm < d <= 1075 cm
  • 35 cm for 1075 cm < d <= 1125 cm
  • 36 cm for 1125 cm < d <= 1200 cm
  • 37 cm for 1200 cm < d <= 1250 cm
  • 38 cm for 1250 cm < d <= 1325 cm
  • 39 cm for 1325 cm < d <= 1400 cm
  • 40 cm for 1400 cm < d <= 1500 cm
  • 41 cm for 1500 cm < d <= 1600 cm
  • 42 cm for 1600 cm < d <= 1700 cm
  • 43 cm for 1700 cm < d <= 1850 cm
  • 44 cm for 1850 cm < d <= 2025 cm
  • 45 cm for 2025 cm < d <= 2225 cm
  • 46 cm for 2225 cm < d <= 2450 cm
  • 47 cm for 2450 cm < d <= 2725 cm
  • 48 cm for 2725 cm < d <= 3050 cm
  • 49 cm for 3050 cm < d <= 3400 cm
  • 50 cm for 3400 cm < d <= 3650 cm
  • 51 cm for 3650 cm < d <= 3850 cm
  • 52 cm for 3850 cm < d <= 4050 cm
  • 53 cm for 4050 cm < d <= 4450 cm
  • 54 cm for 4450 cm < d <= 5500 cm
  • 55 cm for 5500 cm < d <= 6225 cm
  • 56 cm for d > 6225 cm

Distance-dependent part values for channel 5, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 25 cm
  • 3 cm for 25 cm < d <= 50 cm
  • 5 cm for 50 cm < d <= 75 cm
  • 6 cm for 75 cm < d <= 100 cm
  • 7 cm for 100 cm < d <= 150 cm
  • 8 cm for 150 cm < d <= 175 cm
  • 9 cm for 175 cm < d <= 225 cm
  • 10 cm for 225 cm < d <= 250 cm
  • 11 cm for 250 cm < d <= 300 cm
  • 12 cm for 300 cm < d <= 325 cm
  • 13 cm for 325 cm < d <= 375 cm
  • 14 cm for 375 cm < d <= 400 cm
  • 15 cm for 400 cm < d <= 425 cm
  • 16 cm for 425 cm < d <= 475 cm
  • 17 cm for 475 cm < d <= 525 cm
  • 18 cm for 525 cm < d <= 575 cm
  • 19 cm for 575 cm < d <= 650 cm
  • 20 cm for 650 cm < d <= 750 cm
  • 21 cm for 750 cm < d <= 1050 cm
  • 22 cm for 1050 cm < d <= 1375 cm
  • 23 cm for 1375 cm < d <= 1625 cm
  • 24 cm for 1625 cm < d <= 2125 cm
  • 25 cm for d > 2125 cm

Distance-dependent part values for channel 7, 64 MHz PRF:

  • 0 cm for 0 cm <= d <= 100 cm
  • 1 cm for 100 cm < d <= 125 cm
  • 4 cm for 125 cm < d <= 150 cm
  • 6 cm for 150 cm < d <= 175 cm
  • 8 cm for 175 cm < d <= 200 cm
  • 10 cm for 200 cm < d <= 225 cm
  • 12 cm for 225 cm < d <= 250 cm
  • 15 cm for 250 cm < d <= 275 cm
  • 17 cm for 275 cm < d <= 300 cm
  • 18 cm for 300 cm < d <= 325 cm
  • 20 cm for 325 cm < d <= 350 cm
  • 21 cm for 350 cm < d <= 375 cm
  • 22 cm for 375 cm < d <= 400 cm
  • 24 cm for 400 cm < d <= 425 cm
  • 25 cm for 425 cm < d <= 450 cm
  • 26 cm for 450 cm < d <= 475 cm
  • 28 cm for 475 cm < d <= 500 cm
  • 29 cm for 500 cm < d <= 525 cm
  • 30 cm for 525 cm < d <= 550 cm
  • 31 cm for 550 cm < d <= 575 cm
  • 32 cm for 575 cm < d <= 600 cm
  • 33 cm for 600 cm < d <= 625 cm
  • 34 cm for 625 cm < d <= 650 cm
  • 35 cm for 650 cm < d <= 700 cm
  • 36 cm for 700 cm < d <= 725 cm
  • 37 cm for 725 cm < d <= 775 cm
  • 38 cm for 775 cm < d <= 825 cm
  • 39 cm for 825 cm < d <= 875 cm
  • 40 cm for 875 cm < d <= 925 cm
  • 41 cm for 925 cm < d <= 975 cm
  • 42 cm for 975 cm < d <= 1050 cm
  • 43 cm for 1050 cm < d <= 1150 cm
  • 44 cm for 1150 cm < d <= 1250 cm
  • 45 cm for 1250 cm < d <= 1350 cm
  • 46 cm for 1350 cm < d <= 1500 cm
  • 47 cm for 1500 cm < d <= 1675 cm
  • 48 cm for 1675 cm < d <= 1875 cm
  • 49 cm for 1875 cm < d <= 2075 cm
  • 50 cm for 2075 cm < d <= 2250 cm
  • 51 cm for 2250 cm < d <= 2375 cm
  • 52 cm for 2375 cm < d <= 2500 cm
  • 53 cm for 2500 cm < d <= 2750 cm
  • 54 cm for 2750 cm < d <= 3375 cm
  • 55 cm for 3375 cm < d <= 3825 cm
  • 56 cm for 3825 cm < d <= 4300 cm
  • 57 cm for 4300 cm < d <= 4800 cm
  • 58 cm for d > 4800 cm

Bug: ranging on battery panics in compute_distance

I haven't figured out why, but when I pull my tag off USB and leave it on its own power, the calculations in compute_distance fail and panic.

The error happens on this line:

    let time_of_flight = (rtt_product - rt_product) / sum;

Apparently, the rt_product becomes larger than rtt_product (not sure how) and the subtraction fails.

On USB. (rtt-rt) = 4875522386940746496 - 4875520436757001728 = 1,950,183,744,768

INFO
        Ping reply time: 2179770156
        Ping round trip time: 2179753344
        Request reply time: 2236713088
        Request round trip time: 2236731234

โ””โ”€ dw1000_ranging_basestation::__cortex_m_rt_main @ examples/dw1000_ranging_basestation.rs:230
INFO
            rtt_product: 4875522386940746496
            rt_product: 4875520436757001728
            rt_sum: 4416483244
            rtt_sum: 4416484578
            sum: 8832967822

โ””โ”€ dw1000_ranging_basestation::__cortex_m_rt_main @ examples/dw1000_ranging_basestation.rs:256

On battery: ( 4811215469605391972 - 4811217180826287836) = -1,711,220,895,864

INFO
        Ping reply time: 2174124223
        Ping round trip time: 2174103004
        Request reply time: 2212944932
        Request round trip time: 2212965743

โ””โ”€ dw1000_ranging_basestation::__cortex_m_rt_main @ examples/dw1000_ranging_basestation.rs:230
INFO
            rtt_product: 4811215469605391972
            rt_product: 4811217180826287836
            rt_sum: 4387069155
            rtt_sum: 4387068747
            sum: 8774137902

My guess is that my batteries are really old and the tag briefly browns out leading to unusual numbers.

Add support for antenna delay calibration

Since timing is very important for the range measurement, the TX/RX delay cause by the antenna and any components between it and the DW1000, need to be taken into account.

There's a section about antenna delay calibration in the DW1000 user manual, and I think I've seen application notes about it. I think it would be good to somehow implement the calibration procedure, to help users figure out their antenna delay values.

This does not affect use of the DWM1001, as there are known antenna delay values that can be used for that (see ranging examples in the dwm1001 crate).

Investigate whether register interface can be autogenerated

Manually implementing the low-level register interface is pretty tedious. Maybe the register description in the user manual was generated from a structured data format. If that were the case, and if we could get our hands on this data, we could generate the whole interface.

I don't know if this is practical. I couldn't find anything in my initial search. But maybe Decawave would be willing to give out this information, if it exists.

Code Size in Debug Mode

It seems that the LL registers generate a lot of code:

Compiling ...
Analyzing target/thumbv7em-none-eabihf/debug/examples/dw1000_only_rx

File  .text     Size                Crate Name
0.0%   0.0%       0B                      [0 Others]
0.1%   1.6%   2.3KiB               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.1%   1.5%   2.1KiB               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait
0.1%   1.2%   1.7KiB           ieee802154 ieee802154::mac::Header::read
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::rf_txctrl::W::txmq
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::pmsc_ctrl0::W::softreset
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxprej
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxsfdto
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::clkpll_ll
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxpto
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxovrr
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::ldeerr
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxrfto
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_ctrl::W::trxoff
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::rf_txctrl::W::txmtune
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::ec_ctrl::W::pllldt
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_cfg::W::ffam
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_cfg::W::ffaa
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_cfg::W::ffad
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_cfg::W::ffab
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::otp_ctrl::W::ldeload
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::otp_ctrl::W::otpread
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxrscs
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxrfsl
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxfce
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxfcg
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxdfr
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxphe
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxphd
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::ldedone
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxsfdd
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::cplock
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_ctrl::W::rxenab
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::lde_cfg1::W::ntm
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::lde_cfg2::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::pmsc_ctrl0::W::sysclks
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_cfg::W::ffen
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::otp_addr::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::agc_tune1::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::otp_ctrl::W::otprden
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::sys_status::W::rxprd
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::fs_plltune::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::tc_pgdelay::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::ldotune::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::agc_tune2::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::tx_power::W::value
0.0%   0.7%   1.0KiB               dw1000 dw1000::ll::drx_tune2::W::value
0.0%   0.6%     890B                  std core::fmt::Formatter::pad_integral
0.0%   0.6%     888B                  std core::fmt::Formatter::pad
0.0%   0.6%     870B            [Unknown] main
0.0%   0.6%     844B cortex_m_semihosting core::char::methods::<impl char>::encode_utf8
0.0%   0.6%     806B                  std core::str::slice_error_fail
0.0%   0.5%     748B                  std <str as core::fmt::Debug>::fmt
0.0%   0.5%     716B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.4%     638B               dw1000 <dw1000::hl::Error as core::fmt::Debug>::fmt
0.0%   0.4%     632B               dw1000 dw1000::ll::rx_time::R::rx_stamp
0.0%   0.4%     624B               dw1000 dw1000::ll::otp_rdat::R::value
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_ctrl::R::trxoff
0.0%   0.4%     606B               dw1000 dw1000::ll::otp_ctrl::R::ldeload
0.0%   0.4%     606B               dw1000 dw1000::ll::otp_ctrl::R::otpread
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxsfdto
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxpto
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxovrr
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxrfto
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxfce
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxdfr
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::rxphe
0.0%   0.4%     606B               dw1000 dw1000::ll::sys_status::R::ldedone
0.0%   0.4%     602B               dw1000 dw1000::ll::rx_finfo::R::rxflen
0.0%   0.4%     602B               dw1000 dw1000::ll::sys_status::R::rxrfsl
0.0%   0.4%     576B                  std core::fmt::write
0.0%   0.4%     560B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read
0.0%   0.3%     478B              dwm1001 dwm1001::DWM1001::new
0.0%   0.3%     466B                  std core::slice::memchr::memchr
0.0%   0.3%     448B           ieee802154 ieee802154::mac::Frame::read
0.0%   0.3%     418B           ieee802154 <ieee802154::mac::Header as core::fmt::Debug>...
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     402B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     394B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write
0.0%   0.3%     390B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     390B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     390B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     390B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::modify
0.0%   0.3%     374B               dw1000 <u64 as dw1000::ll::ToBytes>::to_bytes
0.0%   0.3%     366B                  std core::fmt::num::<impl core::fmt::Debug for us...
0.0%   0.2%     348B           ieee802154 <ieee802154::mac::ReadError as core::fmt::Deb...
0.0%   0.2%     344B                  std <core::fmt::builders::PadAdapter<'_> as core:...
0.0%   0.2%     342B           ieee802154 core::slice::<impl [T]>::copy_from_slice
0.0%   0.2%     326B                  std <char as core::fmt::Debug>::fmt
0.0%   0.2%     322B            ssmarshal <ssmarshal::Error as core::fmt::Debug>::fmt
0.0%   0.2%     318B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new
0.0%   0.2%     314B                  std core::fmt::builders::DebugStruct::field
0.0%   0.2%     302B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new
0.0%   0.2%     300B cortex_m_semihosting cortex_m_semihosting::hio::write_all
0.0%   0.2%     292B               dw1000 <u64 as dw1000::ll::FromBytes>::from_bytes
0.0%   0.2%     290B           ieee802154 ieee802154::mac::Address::read
0.0%   0.2%     284B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     282B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     282B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     280B               dw1000 <u8 as dw1000::ll::ToBytes>::to_bytes
0.0%   0.2%     278B               dw1000 <u16 as dw1000::ll::ToBytes>::to_bytes
0.0%   0.2%     274B                  std core::ptr::swap_nonoverlapping_bytes
0.0%   0.2%     266B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.2%     264B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     262B                  std core::fmt::builders::DebugTuple::field
0.0%   0.2%     260B               dw1000 <u32 as dw1000::ll::ToBytes>::to_bytes
0.0%   0.2%     260B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     260B               dw1000 dw1000::ll::init_header
0.0%   0.2%     258B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     258B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     256B               dw1000 dw1000::ll::init_header
0.0%   0.2%     252B                  std core::fmt::num::<impl core::fmt::Display for ...
0.0%   0.2%     252B                  std core::fmt::num::<impl core::fmt::Display for ...
0.0%   0.2%     252B                  std core::unicode::bool_trie::BoolTrie::lookup
0.0%   0.2%     252B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     252B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     250B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     244B                  std core::unicode::printable::is_printable
0.0%   0.2%     240B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     240B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::read
0.0%   0.2%     236B                  std <core::result::Result<T, E>>::map_err
0.0%   0.2%     234B               dw1000 <u8 as dw1000::ll::FromBytes>::from_bytes
0.0%   0.2%     232B                  std core::unicode::printable::check
0.0%   0.2%     232B                  std <core::panic::PanicInfo<'_> as core::fmt::Dis...
0.0%   0.2%     226B               dw1000 <u32 as dw1000::ll::FromBytes>::from_bytes
0.0%   0.2%     220B         nrf52832_pac nrf52832_pac::uarte0::baudrate::BAUDRATEW::_bits
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     214B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     214B     nrf52_hal_common <nrf52_hal_common::delay::Delay as embedded_h...
0.0%   0.1%     212B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     212B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     210B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new
0.0%   0.1%     210B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.1%     208B           ieee802154 <core::option::Option<T>>::ok_or
0.0%   0.1%     206B                  std core::fmt::num::<impl core::fmt::Display for ...
0.0%   0.1%     206B       dw1000_only_rx dw1000_only_rx::f02886639q908n7u::{{closure}}
0.0%   0.1%     204B       dw1000_only_rx dw1000_only_rx::f02886639q908n7u::{{closure}}
0.0%   0.1%     202B                  std core::fmt::builders::DebugInner::entry
0.0%   0.1%     202B           ieee802154 <ieee802154::mac::Frame<'p> as core::fmt::Deb...
0.0%   0.1%     198B                  std core::fmt::Formatter::pad_integral::{{closure}}
0.0%   0.1%     196B cortex_m_semihosting cortex_m_semihosting::hio::open
0.0%   0.1%     196B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     192B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     192B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     192B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     190B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     190B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%     190B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     190B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%     190B cortex_m_semihosting <core::result::Result<T, E>>::map
0.0%   0.1%     188B     nrf52_hal_common <nrf52_hal_common::spim::Error as core::fmt::...
0.0%   0.1%     188B           ieee802154 <ieee802154::mac::FrameType as core::fmt::Deb...
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     188B               dw1000 <dw1000::ll::RegAccessor<'s, R, SPI>>::write
0.0%   0.1%     184B           ieee802154 <core::option::Option<T>>::ok_or
0.0%   0.1%     184B           ieee802154 <core::option::Option<T>>::ok_or
0.0%   0.1%     180B cortex_m_semihosting <core::result::Result<T, E>>::map_err
0.0%   0.1%     174B            ssmarshal <core::option::Option<T>>::map
0.0%   0.1%     174B               dw1000 <core::option::Option<T>>::map
0.0%   0.1%     166B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.1%     166B                  std <core::cell::RefCell<T>>::try_borrow_mut
0.0%   0.1%     164B              dwm1001 dwm1001::DWM1001::take
0.0%   0.1%     160B                  std <core::slice::IterMut<'a, T> as core::iter::i...
0.0%   0.1%     160B                  std <core::slice::Iter<'a, T> as core::iter::iter...
0.0%   0.1%     160B                  std <core::slice::Iter<'a, T> as core::iter::iter...
0.0%   0.1%     160B                  std <core::slice::Iter<'a, T> as core::iter::iter...
0.0%   0.1%     158B           ieee802154 <ieee802154::mac::Address as core::fmt::Debug...
0.0%   0.1%     156B              dw1000? <dw1000::util::TimeoutError<T> as core::fmt::...
0.0%   0.1%     154B                  std core::result::unwrap_failed
0.0%   0.1%     154B                  std core::iter::range::<impl core::iter::iterator...
0.0%   0.1%     150B            [Unknown] __aeabi_memcpy4
0.0%   0.1%     150B    panic_semihosting rust_begin_unwind
0.0%   0.1%     150B                  std core::fmt::Write::write_char
0.0%   0.1%     150B                  std <core::result::Result<T, E>>::expect
0.0%   0.1%     148B                  std core::result::unwrap_failed
0.0%   0.1%     148B                  std core::result::unwrap_failed
0.0%   0.1%     144B     nrf52_hal_common core::slice::<impl [T]>::iter_mut
0.0%   0.1%     144B     nrf52_hal_common core::slice::<impl [T]>::iter
0.0%   0.1%     144B           ieee802154 core::fmt::builders::DebugList::entries
0.0%   0.1%     144B           ieee802154 core::slice::<impl [T]>::iter
0.0%   0.1%     142B              dwm1001 <core::option::Option<T>>::ok_or
0.0%   0.1%     142B              dwm1001 <core::option::Option<T>>::ok_or
0.0%   0.1%     142B              dwm1001 <nrf52_hal_common::gpio::p0::P0_Pin<MODE>>::i...
0.0%   0.1%     140B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.1%     138B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%     138B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%     138B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%     132B            cortex_m? <cortex_m::register::primask::Primask as core...
0.0%   0.1%     130B                  std <core::result::Result<T, E>>::expect
0.0%   0.1%     128B                  std core::fmt::num::<impl core::fmt::Display for ...
0.0%   0.1%     128B       encode_unicode core::cmp::Ord::min
0.0%   0.1%     126B            byteorder <byteorder::LittleEndian as byteorder::ByteOr...
0.0%   0.1%     120B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.1%     120B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.1%     118B           ieee802154 ieee802154::mac::FrameType::from_bits
0.0%   0.1%     116B                  std memcmp
0.0%   0.1%     116B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new::{{clo...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_Pin<MODE>>::i...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_29<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_28<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_20<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_19<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_18<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_17<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_16<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_11<MODE>>::in...
0.0%   0.1%     116B              dwm1001 <nrf52_hal_common::gpio::p0::P0_05<MODE>>::in...
0.0%   0.1%     116B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.1%     114B                  std core::fmt::builders::DebugTuple::finish
0.0%   0.1%     114B           ieee802154 core::fmt::num::<impl core::fmt::Debug for us...
0.0%   0.1%     114B           ieee802154 core::fmt::num::<impl core::fmt::Debug for u1...
0.0%   0.1%     114B           ieee802154 core::fmt::num::<impl core::fmt::Debug for u8...
0.0%   0.1%     114B                  std <i32 as core::iter::range::Step>::add_usize
0.0%   0.1%     110B             cortex_m <core::result::Result<T, E>>::ok
0.0%   0.1%     108B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DRIVEW::_bits
0.0%   0.1%     108B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DRIVEW::_bits
0.0%   0.1%     108B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DRIVEW::_bits
0.0%   0.1%     106B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.1%     102B          cortex_m_rt r0::init_data
0.0%   0.1%     102B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::wait
0.0%   0.1%     102B                  std <core::result::Result<T, E>>::expect
0.0%   0.1%     100B                  std <core::option::Option<T>>::unwrap
0.0%   0.1%     100B              dwm1001 dwm1001::DW_RST::reset_dw1000
0.0%   0.1%      98B         nrf52832_pac nrf52832_pac::spim0::frequency::FREQUENCYW::_...
0.0%   0.1%      96B    panic_semihosting core::fmt::Arguments::new_v1_formatted
0.0%   0.1%      96B cortex_m_semihosting core::fmt::Arguments::new_v1_formatted
0.0%   0.1%      96B           ieee802154 core::fmt::Arguments::new_v1_formatted
0.0%   0.1%      96B                  std core::fmt::Arguments::new_v1_formatted
0.0%   0.1%      94B            [Unknown] __aeabi_memcpy
0.0%   0.1%      94B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%      94B                  std core::fmt::num::<impl core::fmt::UpperHex for...
0.0%   0.1%      94B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%      94B                  std core::fmt::num::<impl core::fmt::LowerHex for...
0.0%   0.1%      94B cortex_m_semihosting <cortex_m_semihosting::hio::HStdout as core::...
0.0%   0.1%      92B                  std core::fmt::builders::DebugList::finish
0.0%   0.1%      88B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::start
0.0%   0.1%      86B                  std core::ptr::swap_nonoverlapping_one
0.0%   0.1%      84B          cortex_m_rt Reset
0.0%   0.1%      84B                  std <[T] as core::fmt::Debug>::fmt
0.0%   0.1%      82B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%      82B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.1%      82B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_Pin<nrf52_hal...
0.0%   0.1%      82B     nrf52_hal_common nrf52832_pac::uarte0::config::<impl nrf52832_...
0.0%   0.1%      82B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%      82B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%      82B                  std <core::ops::range::Range<usize> as core::slic...
0.0%   0.1%      82B              dwm1001 <nrf52_hal_common::gpio::p0::P0_20<MODE>>::in...
0.0%   0.1%      82B              dwm1001 <nrf52_hal_common::gpio::p0::P0_17<MODE>>::in...
0.0%   0.1%      82B              dwm1001 <nrf52_hal_common::gpio::p0::P0_16<MODE>>::in...
0.0%   0.1%      82B              dwm1001 <nrf52_hal_common::gpio::p0::P0_11<MODE>>::in...
0.0%   0.1%      82B              dwm1001 <nrf52_hal_common::gpio::p0::P0_05<MODE>>::in...
0.0%   0.1%      82B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_Pin<nrf52_hal...
0.0%   0.1%      82B             cortex_m cortex_m::interrupt::free
0.0%   0.1%      82B             cortex_m cortex_m::interrupt::free
0.0%   0.1%      82B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.1%      82B                  std core::ptr::swap_nonoverlapping_one
0.0%   0.1%      82B                  std core::ptr::swap_nonoverlapping_one
0.0%   0.1%      80B                  std <core::ops::range::RangeFrom<usize> as core::...
0.0%   0.1%      80B               dw1000 dw1000::hl::<impl core::convert::From<dw1000:...
0.0%   0.1%      80B                  std <core::result::Result<T, E>>::expect
0.0%   0.1%      80B                  std core::ptr::read
0.0%   0.1%      78B            [Unknown] __aeabi_memset
0.0%   0.1%      78B cortex_m_semihosting core::fmt::Write::write_char
0.0%   0.1%      78B              dwm1001 cortex_m::interrupt::free
0.0%   0.1%      78B              dwm1001 cortex_m::interrupt::free
0.0%   0.1%      76B                  std core::char::methods::<impl char>::len_utf8
0.0%   0.1%      76B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.1%      76B           ieee802154 <ieee802154::mac::PanIdCompress as core::fmt:...
0.0%   0.1%      76B           ieee802154 <ieee802154::mac::Security as core::fmt::Debu...
0.0%   0.1%      76B           ieee802154 core::fmt::Arguments::new_v1
0.0%   0.1%      74B                  std core::slice::slice_index_order_fail
0.0%   0.1%      74B                  std core::slice::slice_index_len_fail
0.0%   0.1%      74B cortex_m_semihosting core::fmt::Write::write_fmt
0.0%   0.1%      74B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::new
0.0%   0.1%      74B     nrf52_hal_common nrf52_hal_common::gpio::p0::OpenDrainConfig::...
0.0%   0.1%      74B               dw1000 dw1000::ll::rx_buffer::R::data
0.0%   0.0%      72B          cortex_m_rt r0::zero_bss
0.0%   0.0%      72B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      72B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::SENSEW::_bits
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::PULLW::_bits
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::timer0::bitmode::BITMODEW::_bits
0.0%   0.0%      72B     nrf52_hal_common <nrf52832_pac::SPIM2 as nrf52_hal_common::spi...
0.0%   0.0%      72B               dw1000 core::num::<impl u8>::count_ones
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::SENSEW::_bits
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::PULLW::_bits
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::SENSEW::_bits
0.0%   0.0%      72B         nrf52832_pac nrf52832_pac::p0::pin_cnf::PULLW::_bits
0.0%   0.0%      70B                  std core::panicking::panic_bounds_check
0.0%   0.0%      70B                  std <core::ops::range::RangeTo<usize> as core::sl...
0.0%   0.0%      70B     nrf52_hal_common nrf52832_pac::twim0::frequency::<impl nrf5283...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new::{{clo...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new::{{clo...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.0%      70B         nrf52832_pac nrf52832_pac::twim0::frequency::FREQUENCYW::_...
0.0%   0.0%      70B     nrf52_hal_common nrf52832_pac::uarte0::baudrate::<impl nrf5283...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      70B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      70B                  std <core::ops::range::RangeTo<usize> as core::sl...
0.0%   0.0%      70B                  std <core::ops::range::RangeTo<usize> as core::sl...
0.0%   0.0%      70B         nrf52832_pac nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      68B     nrf52_hal_common <nrf52_hal_common::delay::Delay as embedded_h...
0.0%   0.0%      68B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      68B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      68B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      66B                  std <core::ops::range::Range<Idx> as core::fmt::D...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::<impl nrf528...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::<impl nrf5283...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::<impl nrf5283...
0.0%   0.0%      66B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::<impl nrf5283...
0.0%   0.0%      66B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::txd::maxcnt::<impl nrf52...
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::txd::maxcnt::<impl nrf52...
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::txd::ptr::<impl nrf52832...
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::txd::ptr::<impl nrf52832...
0.0%   0.0%      66B                  std <core::option::Option<T>>::unwrap
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::rxd::maxcnt::<impl nrf52...
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::spim0::rxd::ptr::<impl nrf52832...
0.0%   0.0%      66B                  std core::ptr::swap_nonoverlapping
0.0%   0.0%      66B                  std core::ptr::swap_nonoverlapping
0.0%   0.0%      66B                  std core::ptr::swap_nonoverlapping
0.0%   0.0%      66B         nrf52832_pac nrf52832_pac::timer0::cc::<impl nrf52832_pac:...
0.0%   0.0%      64B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      64B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write::{{c...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write::{{c...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      64B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      62B                  std core::fmt::builders::DebugStruct::finish
0.0%   0.0%      62B          cortex_m_rt core::sync::atomic::compiler_fence
0.0%   0.0%      62B          cortex_m_rt core::ptr::read
0.0%   0.0%      62B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      62B                  std core::sync::atomic::compiler_fence
0.0%   0.0%      62B                  std core::cell::BorrowRefMut::new
0.0%   0.0%      62B                  std core::ptr::read
0.0%   0.0%      62B                  std core::ptr::read
0.0%   0.0%      60B                  std core::fmt::Formatter::debug_list
0.0%   0.0%      60B           ieee802154 core::array::<impl core::fmt::Debug for [T; _...
0.0%   0.0%      60B              dwm1001 cortex_m::register::primask::read
0.0%   0.0%      60B             cortex_m cortex_m::register::primask::read
0.0%   0.0%      58B                  std core::panicking::panic
0.0%   0.0%      58B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::timer0::prescaler::<impl nrf528...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::timer0::bitmode::<impl nrf52832...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::timer0::shorts::<impl nrf52832_...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::uarte0::config::_PARITYW::bits
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::twim0::enable::<impl nrf52832_p...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::config::_ORDERW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::config::_CPOLW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::config::_CPHAW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::uarte0::psel::rxd::_CONNECTW::v...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::psel::sck::_CONNECTW::va...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::uarte0::psel::txd::_CONNECTW::v...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::twim0::psel::sda::_CONNECTW::va...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::twim0::psel::scl::_CONNECTW::va...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::psel::miso::_CONNECTW::v...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::uarte0::psel::rts::_CONNECTW::v...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::uarte0::psel::cts::_CONNECTW::v...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::psel::mosi::_CONNECTW::v...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::uarte0::enable::<impl nrf52832_...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::spim0::frequency::<impl nrf5283...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::spim0::enable::<impl nrf52832_p...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::spim0::config::<impl nrf52832_p...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::spim0::orc::<impl nrf52832_pac:...
0.0%   0.0%      58B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::timer0::shorts::_COMPARE0_CLEAR...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::timer0::shorts::_COMPARE0_STOPW...
0.0%   0.0%      58B     nrf52_hal_common <nrf52832_pac::UARTE0 as nrf52_hal_common::ua...
0.0%   0.0%      58B           ieee802154 core::slice::<impl core::ops::index::Index<I>...
0.0%   0.0%      58B              dwm1001 cortex_m::peripheral::Peripherals::take::{{cl...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B              dwm1001 nrf52832_pac::Peripherals::take::{{closure}}
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::<impl nrf52832_pac...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::outset::<impl nrf52832_pac:...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::outclr::<impl nrf52832_pac:...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::tasks_start::<impl nrf52...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::tasks_start::<impl nrf52...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::events_end::<impl nrf528...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::events_end::<impl nrf528...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::spim0::rxd::maxcnt::<impl nrf52...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::timer0::events_compare::<impl n...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::timer0::tasks_start::<impl nrf5...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::timer0::tasks_clear::<impl nrf5...
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::variant
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::bits
0.0%   0.0%      58B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::variant
0.0%   0.0%      56B                  std <usize as core::slice::SliceIndex<[T]>>::get_...
0.0%   0.0%      56B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::INPUTW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DIRW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::config::PARITYW::_bits
0.0%   0.0%      56B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::new::{{c...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::config::ORDERW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::config::CPOLW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::config::CPHAW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::psel::rxd::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::psel::sck::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::psel::txd::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::twim0::psel::sda::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::twim0::psel::scl::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::psel::miso::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::psel::rts::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::psel::cts::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::_PINW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::psel::mosi::CONNECTW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::_PINW::bits
0.0%   0.0%      56B     nrf52_hal_common <core::option::Option<T>>::is_some
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::enable::_ENABLEW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::uarte0::enable::ENABLEW::_bits
0.0%   0.0%      56B     nrf52_hal_common nrf52832_pac::timer0::prescaler::_PRESCALERW:...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::timer0::bitmode::_BITMODEW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::timer0::shorts::COMPARE0_CLEARW...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::timer0::shorts::COMPARE0_STOPW:...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::twim0::enable::_ENABLEW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::twim0::enable::ENABLEW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::enable::_ENABLEW::bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::spim0::enable::ENABLEW::_bits
0.0%   0.0%      56B              dwm1001 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::INPUTW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DIRW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::INPUTW::_bits
0.0%   0.0%      56B         nrf52832_pac nrf52832_pac::p0::pin_cnf::DIRW::_bits
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::Peripherals::steal
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::variant
0.0%   0.0%      54B     nrf52_hal_common nrf52832_pac::uarte0::config::_PARITYW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::config::_CPOLW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::config::_CPHAW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::uarte0::psel::rxd::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::psel::sck::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::uarte0::psel::txd::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::twim0::psel::sda::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::twim0::psel::scl::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::psel::miso::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::uarte0::psel::rts::_CONNECTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::uarte0::psel::cts::_CONNECTW::bit
0.0%   0.0%      54B     nrf52_hal_common nrf52832_pac::twim0::frequency::_FREQUENCYW::...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::psel::mosi::_CONNECTW::bit
0.0%   0.0%      54B     nrf52_hal_common nrf52832_pac::uarte0::baudrate::_BAUDRATEW::v...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::uarte0::enable::_ENABLEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::timer0::bitmode::_BITMODEW::var...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::timer0::shorts::_COMPARE0_STOPW...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::twim0::enable::_ENABLEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::enable::_ENABLEW::variant
0.0%   0.0%      54B     nrf52_hal_common <nrf52832_pac::TWIM1 as nrf52_hal_common::twi...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::spim0::frequency::_FREQUENCYW::...
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::variant
0.0%   0.0%      54B                  std <core::cell::RefCell<T>>::borrow_mut
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::bit
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::variant
0.0%   0.0%      54B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::variant
0.0%   0.0%      52B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      52B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%      52B cortex_m_semihosting cortex_m_semihosting::hio::HStdout::write_all
0.0%   0.0%      52B                  std <&T as core::fmt::Display>::fmt
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::bit
0.0%   0.0%      52B     nrf52_hal_common nrf52832_pac::uarte0::config::_HWFCW::bit
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::spim0::config::_ORDERW::bit
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::timer0::shorts::_COMPARE0_CLEAR...
0.0%   0.0%      52B     nrf52_hal_common nrf52832_pac::spim0::orc::_ORCW::bits
0.0%   0.0%      52B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      52B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::bit
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::spim0::rxd::maxcnt::_MAXCNTW::bits
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::spim0::txd::maxcnt::_MAXCNTW::bits
0.0%   0.0%      52B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::bit
0.0%   0.0%      50B    panic_semihosting core::fmt::ArgumentV1::new
0.0%   0.0%      50B             cortex_m core::slice::<impl [T]>::get_unchecked_mut
0.0%   0.0%      50B             cortex_m core::fmt::ArgumentV1::new
0.0%   0.0%      50B             cortex_m core::fmt::ArgumentV1::new
0.0%   0.0%      50B             cortex_m cortex_m::peripheral::Peripherals::steal
0.0%   0.0%      50B cortex_m_semihosting cortex_m_semihosting::hio::hstdout
0.0%   0.0%      50B                 cast core::fmt::ArgumentV1::new
0.0%   0.0%      50B     nrf52_hal_common nrf52_hal_common::delay::Delay::new
0.0%   0.0%      50B       encode_unicode core::slice::<impl core::ops::index::IndexMut...
0.0%   0.0%      50B       encode_unicode core::slice::<impl core::ops::index::Index<I>...
0.0%   0.0%      50B           ieee802154 core::slice::<impl core::ops::index::Index<I>...
0.0%   0.0%      50B           ieee802154 core::fmt::ArgumentV1::new
0.0%   0.0%      50B           ieee802154 core::fmt::ArgumentV1::new
0.0%   0.0%      50B              dwm1001 dwm1001::Led::new
0.0%   0.0%      50B                  std core::fmt::ArgumentV1::new
0.0%   0.0%      50B                  std core::fmt::ArgumentV1::new
0.0%   0.0%      50B                  std core::fmt::ArgumentV1::new
0.0%   0.0%      50B                  std core::fmt::ArgumentV1::new
0.0%   0.0%      50B                  std core::fmt::ArgumentV1::new
0.0%   0.0%      48B                  std core::panicking::panic_fmt
0.0%   0.0%      48B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new::{{clo...
0.0%   0.0%      48B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.0%      48B     nrf52_hal_common nrf52_hal_common::clocks::ClocksCfg::freeze
0.0%   0.0%      48B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      48B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      48B                  std <T as core::convert::Into<U>>::into
0.0%   0.0%      48B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      46B             cortex_m core::slice::<impl [T]>::get_unchecked_mut
0.0%   0.0%      46B                  std <core::iter::Enumerate<I> as core::iter::iter...
0.0%   0.0%      46B                  std <core::iter::Enumerate<I> as core::iter::iter...
0.0%   0.0%      46B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::start::{...
0.0%   0.0%      46B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      46B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      46B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::twim0::frequency::_FREQUENCYW::...
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::uarte0::baudrate::_BAUDRATEW::bits
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::spim0::frequency::_FREQUENCYW::...
0.0%   0.0%      44B                  std <core::iter::Enumerate<I> as core::iter::iter...
0.0%   0.0%      44B           ieee802154 ieee802154::mac::PanIdCompress::from_bits
0.0%   0.0%      44B           ieee802154 ieee802154::mac::Security::from_bits
0.0%   0.0%      44B               dw1000 <dw1000::ll::FS_PLLTUNE as dw1000::ll::Writab...
0.0%   0.0%      44B               dw1000 <dw1000::ll::TC_PGDELAY as dw1000::ll::Writab...
0.0%   0.0%      44B                  std <core::iter::Enumerate<I> as core::iter::iter...
0.0%   0.0%      44B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::spim0::txd::ptr::_PTRW::bits
0.0%   0.0%      44B                  std <core::cell::Cell<T>>::replace
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::timer0::cc::_CCW::bits
0.0%   0.0%      44B         nrf52832_pac nrf52832_pac::spim0::rxd::ptr::_PTRW::bits
0.0%   0.0%      42B               dw1000 <dw1000::ll::RX_TIME as dw1000::ll::Readable>...
0.0%   0.0%      42B               dw1000 <dw1000::ll::RX_BUFFER as dw1000::ll::Readabl...
0.0%   0.0%      42B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      42B                  std <core::option::Option<T>>::take
0.0%   0.0%      40B                  std <&T as core::fmt::Display>::fmt
0.0%   0.0%      40B                  std <bool as core::fmt::Display>::fmt
0.0%   0.0%      40B             cortex_m cortex_m::register::primask::Primask::is_active
0.0%   0.0%      40B             cortex_m core::slice::<impl [T]>::is_empty
0.0%   0.0%      40B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%      40B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_Pin<nrf52_hal...
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std core::cmp::impls::<impl core::cmp::PartialOrd...
0.0%   0.0%      40B            ssmarshal core::iter::iterator::Iterator::enumerate
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <T as core::convert::From<T>>::from
0.0%   0.0%      40B               dw1000 core::iter::iterator::Iterator::enumerate
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_Pin<nrf52_hal...
0.0%   0.0%      40B                  std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      40B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      40B                  std core::cmp::impls::<impl core::cmp::PartialOrd...
0.0%   0.0%      40B                  std <core::cell::Cell<T>>::set
0.0%   0.0%      40B                  std <core::cell::BorrowRefMut<'_> as core::ops::d...
0.0%   0.0%      38B                  std <&T as core::fmt::Display>::fmt
0.0%   0.0%      38B                  std core::fmt::Formatter::debug_tuple
0.0%   0.0%      38B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%      38B             cortex_m core::slice::from_raw_parts_mut
0.0%   0.0%      38B             cortex_m core::slice::from_raw_parts
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::_SENSEW::disabled
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::_INPUTW::connect
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::_DRIVEW::s0d1
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::_PULLW::pullup
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::_DIRW::input
0.0%   0.0%      38B     nrf52_hal_common core::ptr::<impl *const T>::is_null
0.0%   0.0%      38B     nrf52_hal_common core::ptr::<impl *mut T>::is_null
0.0%   0.0%      38B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::new::{{c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::config::_ORDERW::msb_first
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::config::_CPOLW::active_high
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::config::_CPHAW::leading
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::_CONNECTW::co...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::_CONNECTW::co...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::_CONNECTW::co...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::_CONNECTW::d...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::_CONNECTW::d...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::_CONNECTW::c...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::uarte0::enable::_ENABLEW::enabled
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::timer0::bitmode::_BITMODEW::_32bit
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::timer0::shorts::_COMPARE0_CLEAR...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::timer0::shorts::_COMPARE0_STOPW...
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::twim0::enable::_ENABLEW::enabled
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::enable::_ENABLEW::enabled
0.0%   0.0%      38B     nrf52_hal_common nrf52832_pac::spim0::frequency::_FREQUENCYW::...
0.0%   0.0%      38B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      38B       encode_unicode core::ptr::<impl *const T>::is_null
0.0%   0.0%      38B       encode_unicode core::slice::from_raw_parts_mut
0.0%   0.0%      38B       encode_unicode core::slice::from_raw_parts
0.0%   0.0%      38B           ieee802154 core::ptr::<impl *const T>::is_null
0.0%   0.0%      38B           ieee802154 core::slice::<impl core::ops::index::Index<I>...
0.0%   0.0%      38B           ieee802154 core::slice::from_raw_parts
0.0%   0.0%      38B                  std <bool as core::fmt::Debug>::fmt
0.0%   0.0%      38B               dw1000 <dw1000::ll::LDOTUNE as dw1000::ll::Writable>...
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_SENSEW::disabled
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_INPUTW::connect
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_INPUTW::disconnect
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_DRIVEW::s0s1
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_PULLW::disabled
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_DIRW::output
0.0%   0.0%      38B              dwm1001 nrf52832_pac::p0::pin_cnf::_DIRW::input
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::spim0::txd::amount::<impl nrf52...
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::spim0::events_end::<impl nrf528...
0.0%   0.0%      38B                  std core::mem::replace
0.0%   0.0%      38B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write::{{c...
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::timer0::events_compare::<impl n...
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_SENSEW::disabled
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::connect
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_INPUTW::disconnect
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DRIVEW::s0s1
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_PULLW::disabled
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::output
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::p0::pin_cnf::_DIRW::input
0.0%   0.0%      38B         nrf52832_pac nrf52832_pac::spim0::rxd::amount::<impl nrf52...
0.0%   0.0%      36B                  std core::fmt::Write::write_fmt
0.0%   0.0%      36B          cortex_m_rt core::ptr::<impl *const T>::offset
0.0%   0.0%      36B          cortex_m_rt core::ptr::<impl *mut T>::offset
0.0%   0.0%      36B     nrf52_hal_common <nrf52_hal_common::twim::Twim<T>>::new::{{clo...
0.0%   0.0%      36B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::new::{{c...
0.0%   0.0%      36B     nrf52_hal_common <nrf52_hal_common::uarte::Uarte<T>>::new::{{c...
0.0%   0.0%      36B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      36B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::new::{{clo...
0.0%   0.0%      36B                  std <I as core::iter::traits::IntoIterator>::into...
0.0%   0.0%      36B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      36B                  std <I as core::iter::traits::IntoIterator>::into...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_20<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_20<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_17<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_17<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_16<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_16<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_11<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_11<nrf52_hal_...
0.0%   0.0%      36B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      36B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_24<nrf52_hal_...
0.0%   0.0%      36B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_24<nrf52_hal_...
0.0%   0.0%      34B                  std <core::fmt::Arguments<'_> as core::fmt::Displ...
0.0%   0.0%      34B                   r0 core::ptr::<impl *const T>::wrapping_offset
0.0%   0.0%      34B                   r0 core::ptr::<impl *const T>::wrapping_add
0.0%   0.0%      34B             cortex_m core::ptr::<impl *const T>::offset
0.0%   0.0%      34B             cortex_m core::ptr::<impl *mut T>::offset
0.0%   0.0%      34B             cortex_m core::ptr::<impl *mut T>::add
0.0%   0.0%      34B     nrf52_hal_common core::ptr::<impl *const T>::add
0.0%   0.0%      34B     nrf52_hal_common core::ptr::<impl *mut T>::wrapping_offset
0.0%   0.0%      34B     nrf52_hal_common core::ptr::<impl *mut T>::wrapping_add
0.0%   0.0%      34B     nrf52_hal_common core::array::<impl core::iter::traits::IntoIt...
0.0%   0.0%      34B       encode_unicode core::ptr::<impl *const T>::offset
0.0%   0.0%      34B       encode_unicode core::ptr::<impl *const T>::add
0.0%   0.0%      34B       encode_unicode core::ptr::<impl *const T>::wrapping_offset
0.0%   0.0%      34B       encode_unicode core::ptr::<impl *mut T>::offset
0.0%   0.0%      34B       encode_unicode core::ptr::<impl *mut T>::add
0.0%   0.0%      34B               hash32 core::ptr::<impl *const T>::offset
0.0%   0.0%      34B               hash32 core::ptr::<impl *const T>::add
0.0%   0.0%      34B           ieee802154 core::ptr::<impl *const T>::wrapping_offset
0.0%   0.0%      34B           ieee802154 core::ptr::<impl *const T>::wrapping_add
0.0%   0.0%      34B                  std <core::option::Option<T> as core::ops::try::T...
0.0%   0.0%      34B                  std <core::option::Option<T> as core::ops::try::T...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_20<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_20<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_17<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_17<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_16<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_16<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_11<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_11<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_05<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_05<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_05<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_05<nrf52_hal_...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      34B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      34B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_24<nrf52_hal_...
0.0%   0.0%      34B    nrf52_hal_common? <nrf52_hal_common::gpio::p0::P0_24<nrf52_hal_...
0.0%   0.0%      34B                  std core::num::<impl u32>::wrapping_add
0.0%   0.0%      32B              dwm1001 dwm1001::DW_RST::new
0.0%   0.0%      32B                  std core::ptr::real_drop_in_place
0.0%   0.0%      32B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      32B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      32B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      32B           bare_metal <bare_metal::Mutex<T>>::borrow
0.0%   0.0%      32B                  std core::mem::replace
0.0%   0.0%      30B                  std core::fmt::Formatter::debug_struct
0.0%   0.0%      30B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      30B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      30B                  std <T as core::convert::From<T>>::from
0.0%   0.0%      30B              dwm1001 <nrf52_hal_common::gpio::p0::P0_29<MODE>>::in...
0.0%   0.0%      30B              dwm1001 <nrf52_hal_common::gpio::p0::P0_28<MODE>>::in...
0.0%   0.0%      30B              dwm1001 <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.0%      30B              dwm1001 <nrf52_hal_common::gpio::p0::P0_19<MODE>>::in...
0.0%   0.0%      30B              dwm1001 <nrf52_hal_common::gpio::p0::P0_18<MODE>>::in...
0.0%   0.0%      30B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::start::{...
0.0%   0.0%      30B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::start::{...
0.0%   0.0%      30B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      30B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      30B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      30B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Uninitia...
0.0%   0.0%      30B               dw1000 <dw1000::hl::DW1000<SPI, dw1000::hl::Ready>>:...
0.0%   0.0%      30B     nrf52_hal_common <nrf52_hal_common::gpio::p0::P0_24<MODE>>::in...
0.0%   0.0%      30B                  std core::mem::swap
0.0%   0.0%      30B                  std core::mem::swap
0.0%   0.0%      30B                  std core::mem::swap
0.0%   0.0%      30B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write::{{c...
0.0%   0.0%      30B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      28B          cortex_m_rt HardFault_
0.0%   0.0%      28B             cortex_m core::slice::<impl [T]>::len
0.0%   0.0%      28B       encode_unicode core::slice::<impl [T]>::len
0.0%   0.0%      28B               hash32 core::slice::<impl [T]>::len
0.0%   0.0%      28B               dw1000 <dw1000::hl::Error as core::convert::From<nrf...
0.0%   0.0%      28B               dw1000 <dw1000::ll::PMSC_CTRL0 as dw1000::ll::Writab...
0.0%   0.0%      28B               dw1000 <dw1000::ll::PMSC_CTRL0 as dw1000::ll::Readab...
0.0%   0.0%      28B               dw1000 <dw1000::ll::LDE_CFG2 as dw1000::ll::Writable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::OTP_RDAT as dw1000::ll::Readable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::RF_TXCTRL as dw1000::ll::Writabl...
0.0%   0.0%      28B               dw1000 <dw1000::ll::RF_TXCTRL as dw1000::ll::Readabl...
0.0%   0.0%      28B               dw1000 <dw1000::ll::DRX_TUNE2 as dw1000::ll::Writabl...
0.0%   0.0%      28B               dw1000 <dw1000::ll::EC_CTRL as dw1000::ll::Writable>...
0.0%   0.0%      28B               dw1000 <dw1000::ll::EC_CTRL as dw1000::ll::Readable>...
0.0%   0.0%      28B               dw1000 <dw1000::ll::AGC_TUNE2 as dw1000::ll::Writabl...
0.0%   0.0%      28B               dw1000 <dw1000::ll::TX_POWER as dw1000::ll::Writable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::RX_FINFO as dw1000::ll::Readable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_STATUS as dw1000::ll::Writab...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_STATUS as dw1000::ll::Readab...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_CTRL as dw1000::ll::Writable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_CTRL as dw1000::ll::Readable...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_CFG as dw1000::ll::Writable>...
0.0%   0.0%      28B               dw1000 <dw1000::ll::SYS_CFG as dw1000::ll::Readable>...
0.0%   0.0%      28B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      28B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      28B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      28B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      28B               dw1000 <dw1000::hl::RxFuture<'r, SPI>>::wait::{{clos...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      28B                  std <core::cell::Cell<T>>::get
0.0%   0.0%      28B                  std core::ptr::write
0.0%   0.0%      26B          cortex_m_rt core::ptr::write_volatile
0.0%   0.0%      26B             cortex_m core::ptr::write_volatile
0.0%   0.0%      26B             cortex_m core::ptr::read_volatile
0.0%   0.0%      26B     nrf52_hal_common nrf52832_pac::p0::outset::W::bits
0.0%   0.0%      26B              dwm1001 nrf52832_pac::p0::outset::W::bits
0.0%   0.0%      26B              dwm1001 <dw1000::ll::DW1000<SPI>>::new
0.0%   0.0%      26B              dwm1001 nrf52832_pac::p0::outclr::W::bits
0.0%   0.0%      26B         nrf52832_pac nrf52832_pac::timer0::tasks_start::W::bits
0.0%   0.0%      26B         nrf52832_pac nrf52832_pac::p0::outclr::W::bits
0.0%   0.0%      26B         nrf52832_pac nrf52832_pac::timer0::tasks_clear::W::bits
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      26B                  std core::num::ptr_try_from_impls::<impl core::co...
0.0%   0.0%      26B         nrf52832_pac nrf52832_pac::p0::outset::W::bits
0.0%   0.0%      26B         nrf52832_pac nrf52832_pac::spim0::tasks_start::W::bits
0.0%   0.0%      24B          cortex_m_rt core::ptr::write
0.0%   0.0%      24B             cortex_m <cortex_m::peripheral::SYST as core::ops::der...
0.0%   0.0%      24B cortex_m_semihosting core::char::convert::from_u32_unchecked
0.0%   0.0%      24B         nrf52832_pac <nrf52832_pac::SPIM2 as core::ops::deref::Der...
0.0%   0.0%      24B         nrf52832_pac <nrf52832_pac::TIMER0 as core::ops::deref::De...
0.0%   0.0%      24B         nrf52832_pac <nrf52832_pac::TWIM1 as core::ops::deref::Der...
0.0%   0.0%      24B         nrf52832_pac <nrf52832_pac::UARTE0 as core::ops::deref::De...
0.0%   0.0%      24B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      24B           ieee802154 core::mem::size_of_val
0.0%   0.0%      24B                  std core::ptr::real_drop_in_place
0.0%   0.0%      24B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      24B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      24B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      24B                  std core::ptr::write
0.0%   0.0%      24B                  std core::ptr::write
0.0%   0.0%      22B          cortex_m_rt DefaultHandler_
0.0%   0.0%      22B cortex_m_semihosting core::str::from_utf8_unchecked_mut
0.0%   0.0%      22B                  std <core::ops::range::RangeFull as core::slice::...
0.0%   0.0%      22B                  std <I as core::iter::traits::IntoIterator>::into...
0.0%   0.0%      22B                  std <core::option::Option<T> as core::ops::try::T...
0.0%   0.0%      22B              dwm1001 cortex_m::peripheral::Peripherals::take
0.0%   0.0%      22B              dwm1001 nrf52832_pac::Peripherals::take
0.0%   0.0%      22B              dwm1001 dwm1001::Led::disable
0.0%   0.0%      22B              dwm1001 dwm1001::Led::enable
0.0%   0.0%      22B                  std core::ptr::real_drop_in_place
0.0%   0.0%      22B                  std <I as core::iter::traits::IntoIterator>::into...
0.0%   0.0%      20B             cortex_m core::slice::<impl [T]>::as_ptr
0.0%   0.0%      20B             cortex_m core::slice::<impl [T]>::as_mut_ptr
0.0%   0.0%      20B       encode_unicode core::slice::<impl [T]>::as_ptr
0.0%   0.0%      20B       encode_unicode core::slice::<impl [T]>::as_mut_ptr
0.0%   0.0%      20B               hash32 core::slice::<impl [T]>::as_ptr
0.0%   0.0%      20B               hash32 core::slice::<impl [T]>::as_mut_ptr
0.0%   0.0%      18B                  std <core::fmt::Error as core::fmt::Debug>::fmt
0.0%   0.0%      18B                  std core::str::traits::<impl core::slice::SliceIn...
0.0%   0.0%      18B                  std <core::cell::BorrowMutError as core::fmt::Deb...
0.0%   0.0%      18B                  std <T as core::any::Any>::get_type_id
0.0%   0.0%      18B          cortex_m_rt core::mem::zeroed
0.0%   0.0%      18B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      18B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      18B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      18B             cortex_m cortex_m::peripheral::syst::<impl cortex_m::p...
0.0%   0.0%      18B             cortex_m core::mem::size_of
0.0%   0.0%      18B cortex_m_semihosting cortex_m_semihosting::hio::hstdout::{{closure}}
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::sense
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::input
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::drive
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::pull
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::dir
0.0%   0.0%      18B     nrf52_hal_common <u32 as nrf52_hal_common::time::U32Ext>::hz
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::config::W::parity
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::config::W::hwfc
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::config::W::order
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::config::W::cpol
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::config::W::cpha
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::W::pin
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::frequency::W::frequency
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::W::connect
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::W::pin
0.0%   0.0%      18B     nrf52_hal_common core::mem::size_of
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::baudrate::W::baudrate
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::uarte0::enable::W::enable
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::timer0::prescaler::W::prescaler
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::timer0::bitmode::W::bitmode
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::timer0::shorts::W::compare0_clear
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::timer0::shorts::W::compare0_stop
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::twim0::enable::W::enable
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::enable::W::enable
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::frequency::W::frequency
0.0%   0.0%      18B     nrf52_hal_common nrf52832_pac::spim0::orc::W::orc
0.0%   0.0%      18B       encode_unicode core::mem::size_of
0.0%   0.0%      18B               hash32 core::mem::size_of
0.0%   0.0%      18B           ieee802154 core::num::<impl u16>::to_le
0.0%   0.0%      18B           ieee802154 core::mem::size_of
0.0%   0.0%      18B           ieee802154 core::mem::size_of
0.0%   0.0%      18B               dw1000 <dw1000::ll::PMSC_CTRL0 as dw1000::ll::Writab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::PMSC_CTRL0 as dw1000::ll::Readab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::LDE_CFG2 as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::LDE_CFG1 as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::LDE_CFG1 as dw1000::ll::Readable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::OTP_RDAT as dw1000::ll::Readable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::OTP_CTRL as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::OTP_CTRL as dw1000::ll::Readable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::OTP_ADDR as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::FS_PLLTUNE as dw1000::ll::Writab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::TC_PGDELAY as dw1000::ll::Writab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::LDOTUNE as dw1000::ll::Writable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::RF_TXCTRL as dw1000::ll::Writabl...
0.0%   0.0%      18B               dw1000 <dw1000::ll::RF_TXCTRL as dw1000::ll::Readabl...
0.0%   0.0%      18B               dw1000 <dw1000::ll::DRX_TUNE2 as dw1000::ll::Writabl...
0.0%   0.0%      18B               dw1000 <dw1000::ll::EC_CTRL as dw1000::ll::Writable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::EC_CTRL as dw1000::ll::Readable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::AGC_TUNE2 as dw1000::ll::Writabl...
0.0%   0.0%      18B               dw1000 <dw1000::ll::AGC_TUNE1 as dw1000::ll::Writabl...
0.0%   0.0%      18B               dw1000 <dw1000::ll::TX_POWER as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::RX_TIME as dw1000::ll::Readable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::RX_FINFO as dw1000::ll::Readable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_STATUS as dw1000::ll::Writab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_STATUS as dw1000::ll::Readab...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_CTRL as dw1000::ll::Writable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_CTRL as dw1000::ll::Readable...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_CFG as dw1000::ll::Writable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::SYS_CFG as dw1000::ll::Readable>...
0.0%   0.0%      18B               dw1000 <dw1000::ll::RX_BUFFER as dw1000::ll::Readabl...
0.0%   0.0%      18B               dw1000 core::mem::size_of
0.0%   0.0%      18B              dwm1001 nrf52832_pac::p0::pin_cnf::W::sense
0.0%   0.0%      18B              dwm1001 nrf52832_pac::p0::pin_cnf::W::input
0.0%   0.0%      18B              dwm1001 nrf52832_pac::p0::pin_cnf::W::drive
0.0%   0.0%      18B              dwm1001 nrf52832_pac::p0::pin_cnf::W::pull
0.0%   0.0%      18B              dwm1001 nrf52832_pac::p0::pin_cnf::W::dir
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::spim0::rxd::maxcnt::W::maxcnt
0.0%   0.0%      18B                  std <core::result::Result<T, E> as core::ops::try...
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::spim0::txd::ptr::W::ptr
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::spim0::txd::maxcnt::W::maxcnt
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::timer0::cc::W::cc
0.0%   0.0%      18B                  std core::mem::size_of
0.0%   0.0%      18B                  std core::mem::size_of
0.0%   0.0%      18B                  std core::mem::size_of
0.0%   0.0%      18B                  std <T as core::convert::From<T>>::from
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::rx_buffer
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::rf_txctrl
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::drx_tune2
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::agc_tune2
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::agc_tune1
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::tx_power
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::sys_ctrl
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::rx_finfo
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::otp_rdat
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::otp_ctrl
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::otp_addr
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::lde_cfg2
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::lde_cfg1
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::sys_cfg
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::rx_time
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::ldotune
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::ec_ctrl
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::tc_pgdelay
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::sys_status
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::pmsc_ctrl0
0.0%   0.0%      18B               dw1000 <dw1000::ll::DW1000<SPI>>::fs_plltune
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::spim0::rxd::ptr::W::ptr
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::sense
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::input
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::drive
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::pull
0.0%   0.0%      18B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::dir
0.0%   0.0%      16B     nrf52_hal_common nrf52_hal_common::clocks::Clocks::hfclk
0.0%   0.0%      16B               dw1000 <dw1000::ll::LDE_CFG1 as dw1000::ll::Writable...
0.0%   0.0%      16B               dw1000 <dw1000::ll::LDE_CFG1 as dw1000::ll::Readable...
0.0%   0.0%      16B               dw1000 <dw1000::ll::OTP_CTRL as dw1000::ll::Writable...
0.0%   0.0%      16B               dw1000 <dw1000::ll::OTP_CTRL as dw1000::ll::Readable...
0.0%   0.0%      16B               dw1000 <dw1000::ll::OTP_ADDR as dw1000::ll::Writable...
0.0%   0.0%      16B               dw1000 <dw1000::ll::AGC_TUNE1 as dw1000::ll::Writabl...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_31<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_30<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_29<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_28<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_22<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_20<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_18<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_17<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_16<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_14<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_11<MODE>>::de...
0.0%   0.0%      16B              dwm1001 <nrf52_hal_common::gpio::p0::P0_05<MODE>>::de...
0.0%   0.0%      16B         nrf52832_pac nrf52832_pac::spim0::events_end::R::bits
0.0%   0.0%      16B         nrf52832_pac nrf52832_pac::spim0::rxd::amount::R::bits
0.0%   0.0%      16B                  std <core::cell::RefMut<'_, T> as core::ops::dere...
0.0%   0.0%      16B         nrf52832_pac nrf52832_pac::timer0::events_compare::R::bits
0.0%   0.0%      16B         nrf52832_pac nrf52832_pac::spim0::txd::amount::R::bits
0.0%   0.0%      14B                  std <&T as core::fmt::Display>::fmt
0.0%   0.0%      14B             cortex_m <core::cell::UnsafeCell<T>>::get
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::uarte0::psel::rxd::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::spim0::psel::sck::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::uarte0::psel::txd::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::twim0::psel::sda::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::twim0::psel::scl::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::spim0::psel::miso::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::uarte0::psel::rts::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::uarte0::psel::cts::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::twim0::frequency::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::spim0::psel::mosi::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::uarte0::baudrate::W::reset_value
0.0%   0.0%      14B     nrf52_hal_common <nrf52832_pac::TIMER0 as nrf52_hal_common::ti...
0.0%   0.0%      14B     nrf52_hal_common nrf52832_pac::spim0::frequency::W::reset_value
0.0%   0.0%      14B              dwm1001 dwm1001::DW_IRQ::new
0.0%   0.0%      14B     nrf52_hal_common <nrf52_hal_common::timer::Timer<T>>::wait::{{...
0.0%   0.0%      14B               dw1000 <dw1000::hl::DW1000<SPI, State>>::ll
0.0%   0.0%      14B                  std <core::cell::UnsafeCell<T>>::get
0.0%   0.0%      14B                  std <core::cell::UnsafeCell<T>>::get
0.0%   0.0%      14B                  std <core::cell::UnsafeCell<T>>::get
0.0%   0.0%      14B                  std core::mem::drop
0.0%   0.0%      14B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::write::{{c...
0.0%   0.0%      14B     nrf52_hal_common <nrf52_hal_common::spim::Spim<T>>::read::{{cl...
0.0%   0.0%      12B                  std <&T as core::fmt::Display>::fmt
0.0%   0.0%      12B                  std <str as core::fmt::Display>::fmt
0.0%   0.0%      12B                  std core::fmt::builders::DebugSet::entry
0.0%   0.0%      12B                  std core::fmt::builders::DebugList::entry
0.0%   0.0%      12B cortex_m_semihosting core::ptr::real_drop_in_place
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::p0::pin_cnf::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::uarte0::config::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::spim0::config::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::uarte0::enable::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::timer0::prescaler::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::timer0::bitmode::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::timer0::shorts::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::twim0::enable::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::spim0::enable::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::spim0::orc::W::reset_value
0.0%   0.0%      12B     nrf52_hal_common nrf52832_pac::p0::outset::W::reset_value
0.0%   0.0%      12B            ssmarshal core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B           ieee802154 core::ptr::real_drop_in_place
0.0%   0.0%      12B               dw1000 core::ptr::real_drop_in_place
0.0%   0.0%      12B               dw1000 core::ptr::real_drop_in_place
0.0%   0.0%      12B               dw1000 core::ptr::real_drop_in_place
0.0%   0.0%      12B               dw1000 core::ptr::real_drop_in_place
0.0%   0.0%      12B              dwm1001 nrf52832_pac::p0::outset::W::reset_value
0.0%   0.0%      12B              dwm1001 nrf52832_pac::p0::outclr::W::reset_value
0.0%   0.0%      12B              dwm1001 nrf52832_pac::p0::pin_cnf::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::rxd::maxcnt::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::timer0::tasks_start::W::reset_v...
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::events_end::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::p0::outclr::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::timer0::tasks_clear::W::reset_v...
0.0%   0.0%      12B                  std core::ptr::real_drop_in_place
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::txd::ptr::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::txd::maxcnt::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::timer0::cc::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::timer0::events_compare::W::rese...
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::p0::outset::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::tasks_start::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::spim0::rxd::ptr::W::reset_value
0.0%   0.0%      12B         nrf52832_pac nrf52832_pac::p0::pin_cnf::W::reset_value
0.0%   0.0%      10B    panic_semihosting cortex_m::interrupt::disable
0.0%   0.0%      10B             cortex_m cortex_m::peripheral::SYST::ptr
0.0%   0.0%      10B         nrf52832_pac nrf52832_pac::SPIM2::ptr
0.0%   0.0%      10B         nrf52832_pac nrf52832_pac::TIMER0::ptr
0.0%   0.0%      10B         nrf52832_pac nrf52832_pac::UARTE0::ptr
0.0%   0.0%      10B              dwm1001 cortex_m::interrupt::disable
0.0%   0.0%      10B              dwm1001 cortex_m::interrupt::enable
0.0%   0.0%      10B             cortex_m cortex_m::interrupt::disable
0.0%   0.0%      10B             cortex_m cortex_m::interrupt::enable
0.0%   0.0%       8B                  std core::fmt::Formatter::debug_upper_hex
0.0%   0.0%       8B                  std core::fmt::Formatter::debug_lower_hex
0.0%   0.0%       6B            [Unknown] __aeabi_memclr
0.0%   0.0%       6B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%       6B                  std <core::fmt::Write::write_fmt::Adapter<'_, T> ...
0.0%   0.0%       6B          cortex_m_rt ResetTrampoline
0.0%   0.0%       6B           bare_metal bare_metal::CriticalSection::new
0.0%   0.0%       6B cortex_m_semihosting <cortex_m_semihosting::hio::HStdout as core::...
0.0%   0.0%       6B         nrf52832_pac nrf52832_pac::P0::ptr
0.0%   0.0%       6B         nrf52832_pac nrf52832_pac::TWIM1::ptr
0.0%   0.0%       6B     nrf52_hal_common nrf52_hal_common::gpio::p0::<impl nrf52_hal_c...
0.0%   0.0%       6B     nrf52_hal_common <nrf52832_pac::CLOCK as nrf52_hal_common::clo...
0.0%   0.0%       6B                  std <T as core::convert::From<T>>::from
0.0%   0.0%       4B                  std core::fmt::ArgumentV1::show_usize
0.0%   0.0%       4B                   r0 core::ptr::null
0.0%   0.0%       4B     nrf52_hal_common core::ptr::null_mut
0.0%   0.0%       4B       encode_unicode core::ptr::null
0.0%   0.0%       4B           ieee802154 core::ptr::null
0.0%   0.0%       4B                  std core::num::<impl u8>::max_value
0.0%   0.0%       2B                  std core::ptr::real_drop_in_place
0.0%   0.0%       2B                  std core::ptr::real_drop_in_place
0.0%   0.0%       2B                  std core::ptr::real_drop_in_place
0.0%   0.0%       2B          cortex_m_rt DefaultPreInit
0.0%   0.0%       2B              dwm1001 dwm1001::debug::init
6.0% 100.0% 141.3KiB                      .text section size, the file size is 2.3MiB

This disappears in release:

Compiling ...
Analyzing target/thumbv7em-none-eabihf/release/examples/dw1000_only_rx

File  .text    Size             Crate Name
0.0%   0.0%      0B                   [0 Others]
3.7%  42.1% 11.2KiB         [Unknown] main
0.3%   3.7%    996B               std <&T as core::fmt::Debug>::fmt
0.3%   3.5%    964B               std core::fmt::Formatter::pad
0.3%   3.4%    914B               std core::fmt::Formatter::pad_integral
0.3%   3.2%    860B               std core::str::slice_error_fail
0.2%   2.2%    610B       cortex_m_rt Reset
0.2%   2.2%    606B               std core::fmt::num::<impl core::fmt::Debug for usize>...
0.2%   2.2%    600B            dw1000 <dw1000::hl::Error as core::fmt::Debug>::fmt
0.2%   2.0%    550B               std <char as core::fmt::Debug>::fmt
0.2%   1.9%    528B               std core::fmt::write
0.2%   1.8%    496B               std <&T as core::fmt::Debug>::fmt
0.2%   1.8%    490B               std core::slice::memchr::memchr
0.1%   1.4%    368B               std <core::fmt::builders::PadAdapter<'_> as core::fmt...
0.1%   1.2%    332B               std <&T as core::fmt::Debug>::fmt
0.1%   1.2%    314B               std core::fmt::builders::DebugStruct::field
0.1%   1.1%    306B               std <&T as core::fmt::Debug>::fmt
0.1%   1.1%    304B               std <&T as core::fmt::Debug>::fmt
0.1%   1.1%    290B               std <&T as core::fmt::Debug>::fmt
0.1%   1.1%    288B               std core::unicode::bool_trie::BoolTrie::lookup
0.1%   1.0%    278B               std <&T as core::fmt::Debug>::fmt
0.1%   1.0%    262B               std core::fmt::builders::DebugTuple::field
0.1%   0.9%    256B               std core::fmt::ArgumentV1::show_usize
0.1%   0.9%    256B               std core::fmt::num::<impl core::fmt::Display for u32>...
0.1%   0.9%    254B               std core::unicode::printable::check
0.1%   0.9%    234B               std <&T as core::fmt::Display>::fmt
0.1%   0.8%    216B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.1%   0.8%    214B               std <&T as core::fmt::Debug>::fmt
0.1%   0.8%    212B               std <&T as core::fmt::Debug>::fmt
0.1%   0.8%    208B               std core::fmt::num::<impl core::fmt::UpperHex for i32...
0.1%   0.8%    208B               std core::fmt::num::<impl core::fmt::LowerHex for i32...
0.1%   0.7%    204B               std core::fmt::builders::DebugSet::entry
0.1%   0.7%    204B           dw1000? <dw1000::util::TimeoutError<T> as core::fmt::Debu...
0.1%   0.7%    198B               std core::fmt::Formatter::pad_integral::{{closure}}
0.1%   0.7%    198B        ieee802154 <ieee802154::mac::Frame<'p> as core::fmt::Debug>:...
0.1%   0.6%    176B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.1%   0.6%    174B               std core::fmt::Write::write_char
0.1%   0.6%    156B               std <&T as core::fmt::Debug>::fmt
0.0%   0.6%    150B         [Unknown] __aeabi_memcpy4
0.0%   0.5%    136B         [Unknown] __aeabi_memset4
0.0%   0.4%    116B               std memcmp
0.0%   0.4%    114B panic_semihosting rust_begin_unwind
0.0%   0.4%     98B               std <&T as core::fmt::Debug>::fmt
0.0%   0.4%     98B               std <&T as core::fmt::Debug>::fmt
0.0%   0.4%     96B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.0%   0.3%     94B         [Unknown] __aeabi_memcpy
0.0%   0.3%     92B               std core::result::unwrap_failed
0.0%   0.3%     92B               std core::result::unwrap_failed
0.0%   0.3%     80B               std core::result::unwrap_failed
0.0%   0.3%     78B         [Unknown] __aeabi_memset
0.0%   0.3%     74B               std core::slice::slice_index_order_fail
0.0%   0.3%     74B               std core::slice::slice_index_len_fail
0.0%   0.3%     70B               std core::panicking::panic_bounds_check
0.0%   0.2%     66B               std <core::ops::range::Range<Idx> as core::fmt::Debug...
0.0%   0.2%     58B               std core::panicking::panic
0.0%   0.2%     48B               std core::panicking::panic_fmt
0.0%   0.2%     42B               std <&T as core::fmt::Debug>::fmt
0.0%   0.1%     38B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.0%   0.1%     38B               std <&T as core::fmt::Display>::fmt
0.0%   0.1%     38B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.0%   0.1%     38B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.0%   0.1%     36B               std core::fmt::Write::write_fmt
0.0%   0.1%     22B               std <&T as core::fmt::Debug>::fmt
0.0%   0.1%     22B               std <&T as core::fmt::Debug>::fmt
0.0%   0.1%     18B               std <core::fmt::Error as core::fmt::Debug>::fmt
0.0%   0.1%     18B               std core::str::traits::<impl core::slice::SliceIndex<...
0.0%   0.1%     18B               std <core::cell::BorrowMutError as core::fmt::Debug>:...
0.0%   0.1%     18B               std <T as core::any::Any>::get_type_id
0.0%   0.1%     14B               std <&T as core::fmt::Display>::fmt
0.0%   0.0%     12B               std <&T as core::fmt::Display>::fmt
0.0%   0.0%      6B         [Unknown] __aeabi_memclr4
0.0%   0.0%      6B         [Unknown] __aeabi_memclr8
0.0%   0.0%      6B               std <core::fmt::Write::write_fmt::Adapter<'_, T> as c...
0.0%   0.0%      6B       cortex_m_rt ResetTrampoline
0.0%   0.0%      6B               std <&T as core::fmt::Debug>::fmt
0.0%   0.0%      2B       cortex_m_rt HardFault_
0.0%   0.0%      2B               std core::ptr::real_drop_in_place
0.0%   0.0%      2B               std core::ptr::real_drop_in_place
0.0%   0.0%      2B       cortex_m_rt DefaultPreInit
0.0%   0.0%      2B       cortex_m_rt DefaultHandler_
0.0%   0.0%      2B               std core::ptr::real_drop_in_place
8.8% 100.0% 26.6KiB                   .text section size, the file size is 301.8KiB

Publish new cargo crate version?

After getting set up with this crate - downloading the most recent version published to crates.io (0.4.0), I got an application set up, and tried to copy the "blinky" LED example as a basic check that things worked.

Unfortunately, the compiler complained - even the simple rust blinky example broke, because of a version mismatch: the version on crates.io still depends on nrf52832-hal version 0.8.1, even though that's been fixed on master to point to a more recent revision.

Would it be possible to publish a version 0.5.0 of this crate? That would make the crates.io documentation stay in sync with the repo. I've also seen folks using git tags to identify "which revision of the source code + examples are consistent with what can be downloaded from crates.io"

Timeout error in ranging tag example

This happens from time to time:

panicked at 'Failed to send ranging request: Timeout', examples/dw1000_ranging_tag.rs:136:13

I've observed this in both release and debug mode.

RX/TX examples don't seem to work

When running dw1000_only_rx on one board, and another one that should be sending on the other (I tried dw1000_only_tx, dw1000_delayed_tx, and dw1000_ranging_anchor), I'm not seeing any activity on the receiving side.

I haven't looked into it yet more deeper than that.

Documentation errors in re-exported `mac` module

This crate re-exports ieee802154::mac. When running cargo doc, this produces errors that don't occur in the original, and when checking the documentation, indeed there are intra-doc links that don't work anymore.

Not sure if there's something I'm doing wrong, or if this is a cargo doc problem.

Ranging examples don't seem to work in release mode

With a fairly recent nightly:

active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (default)
rustc 1.32.0-nightly (6e9b84296 2018-11-10)

I am unable to get the examples working in --release builds. Normal builds work correctly, and I see the output.

I have a sneaking suspicion that nrf-rs/nrf-hal#33 is related, however I have tried this using the beta.4 release of nrf52832-hal, which contains fixes for this.

I also sometimes get errors that look like this via semihosting on the tag side: panicked at 'Failed to initialize DW1000: Spi(Transmit)', libcore/result.rs:1009:5

How to flash for DWM1001?

Just curious - how are you flashing the DWM1001? Are you using an external debugger/probe, or the onboard stm32? When I try to list-probes with the DWM1001 plugged in over USB, it doesn't see the ST-Link probe that I should.

Review field access code regarding endianness

I didn't put much thought into endianness while implementing the field access code. I think it would be a good idea to review the code with that in mind, to make sure it's robust.

Stuck in block!

During the workshop, we saw that when lots of packets were being sent (by another user drawing to the screen in https://github.com/ferrous-systems/embedded-trainings/blob/master/beginner/docs/segment-4.md), we saw several instances of programs locking up inside the block! macro.

One of the attendees expanded out the block macro and it seems the rx_future.wait() call just returns nb::WouldBlock forever (or at least, for several minutes). This seems like a bug? Is it possible it's missing some edge trigger from the radio? I haven't looked in to what the comms looks like so I'm just guessing here.

Looking for new maintainer

Hey folks!

I'm embarking on new adventures and am currently in the process of reducing my involvement in the Embedded Rust community, so I can focus on that. As part of this process, I'm stepping down as maintainer of this repository.

I am willing to transfer this repository (and the crates on crates.io) to a new maintainer. If anyone is interested in that, please let me know by posting here or contacting me privately.

cc @jamesmunns (who has write access to this repository)
cc @jkelleyrtp (who has been contributing recently)

CI not working

CI is not running for me on #124. This might have something to do with Travis. It's probably best to just switch to GitHub Actions.

Raspberry pi integration

I was really happy to see that there are results on crates.io for dwm1001. Then I realized, that those crates are meant for flashing the module itself if not mistaken. I am totally new in rust embedded, so this is not really working for me. And I need to build a solution on Raspberry Pi, because data will be sent further for UI drawing, etc.

Can I "reuse" this crate with minimal reconfiguration to move it from "embedded" to a normal "std" enabled crate? Is there perhaps any example/blog post of that?

I would really like to use Rust on RPi for that, but I am currently stuck.

I would appreciate any tip/help/link

BR,
Tomaz

Version bump?

Would it be possible to bump the published version so that the GitHub repo and published crates version are in sync?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.