# Summary

- [Preparations](./preparations.md)
    - [Checking the Hardware](./hardware.md)
    - [Installation Instructions](./installation.md)
- [Tooling check](./tooling-check.md)
- [Beginner Workbook](./beginner-workbook.md)
    - [Parts of an Embedded Program](./parts-embedded-program.md)
    - [Building an Embedded Program](./building-program.md)
    - [Binary Size](./binary-size.md)
    - [Flashing the Program](./flashing-program.md)
    - [Viewing Logs](./viewing-logs.md)
    - [Running the Program from VS Code](./running-from-vsc.md)
    - [Panicking](./panicking.md)
    - [Using a Hardware Abstraction Layer](./using-hal.md)
    - [Timers and Time](./time.md)
    - [nRF52840 Dongle](./dongle.md)
    - [Radio Out](./radio-out.md)
        - [Radio Setup](./radio-setup.md)
        - [Messages](./messages.md)
        - [Link Quality Indicator (LQI)](./link-quality.md)
    - [Radio In ](./radio-in.md)
    - [Radio Puzzle](./radio-puzzle.md)
    - [Radio Puzzle Help](./radio-puzzle-help.md)
    - [Starting a Project from Scratch](./from-scratch.md)
    - [Next Steps](./beginner-next-steps.md)
- [Advanced Workbook](./advanced-workbook.md)
    - [Code Organization](./code-organisation.md)
    - [Listing USB Devices](./listing-usb-devices.md)
    - [Hello, world!](./hello-world.md)
    - [Checking the API documentation](./api-documentation.md)
    - [RTIC hello](./rtic-hello.md)
    - [Dealing with Registers](./dealing-with-registers.md)
    - [Event Handling](./event-handling.md)
    - [Task State](./task-state.md)
    - [USB Enumeration](./usb-enumeration.md)
    - [USB-1: Dealing with USB Events](./usb-events.md)
    - [USB Endpoints](./usb-endpoints.md)
    - [Control Transfers](./control-transfers.md)
    - [USB-2: SETUP Stage](./setup-stage.md)
    - [Device Descriptor](./device-descriptor.md)
    - [USB-3: DATA Stage](./data-stage.md)
    - [DMA](./dma.md)
    - [USB-4: Supporting more Standard Requests](./supporting-standard-requests.md)
    - [Error Handling](./error-handling.md)
    - [Updating Device State](./updating-device-state.md)
    - [Dealing with Unknown Requests](./unknown-requests.md)
    - [SET_ADDRESS](./set-address.md)
    - [Handling GET_DESCRIPTOR Configuration Requests](./get-descriptor-config.md)
      - [Configuration descriptor](./configuration-descriptor.md)
      - [Interfaces](./interfaces.md)
      - [Interface descriptor](./interface-descriptor.md)
      - [Endpoint descriptor](./endpoint-descriptor.md)
      - [Response](./get-descriptor-config-response.md)
    - [SET_CONFIGURATION (Linux & Mac OS)](./set-config.md)
    - [Idle State](./idle-state.md)
    - [Inspecting the Descriptors](./inspecting-descriptors.md)
    - [Getting it Configured](./getting-device-configured.md)
    - [Next Steps](./advanced-next-steps.md)
- [References and Resources](./references-resources.md)
- [Troubleshooting](./troubleshooting.md)
    - [`cargo-size` is not working](./troubleshoot-cargo-size.md)
    - [`cargo-flash` is not working](./troubleshoot-cargo-flash.md)
    - [Rust analyzer is not working](./troubleshoot-rust-analyzer.md)
    - [`cargo-build` fails to link](./troubleshoot-cargo-build.md)
    - [`dongle-flash` is not working](./troubleshoot-dongle-flash.md)
    - [Dongle USB functionality is not working](./troubleshoot-usb-dongle.md)
    - [`cargo run` errors](./troubleshoot-cargo-run-error.md)
