.
├── dsp-core (foxhunter's core functionality and digital signal processing subroutines. host-agnostic)
├── studio (DSP studio, UI rendering, block construction, etc.)
├── macros (Proc macro to make defining UI blocks easier)
├── FoxhunterJNI (kotlin library for dsp, wraps foxhunterjni-rs)
│ └── foxhunterjni-rs (rust bindings to JNI, calls into dsp/)
├── FoxhunterStandaloneAndroid (Standalone android app for Foxhunter, uses FoxhunterJNI to call into dsp/)
├── atak (Foxhunter ATAK plugin. Same idea as FoxhunterStandaloneAndroid, but for ATAK)
├── flake.lock (Lockfile for nix. Captures the versions of all dependencies so we have the same environment)
├── flake.nix (Defines which dependencies to bring in for each development platform)
├── foxhunter-profile (Proc macro to support adding `#[profile]` to a function and getting its scops on tracy)
├── scripts (Misc scripts)
- This project manages all of its dependencies through nix. To install, run:
sh <(curl -L https://nixos.org/nix/install)
- You must enter a nix develop shell for dependencies to be downloaded and brought into scope. Run:
nix develop .#desktop
For local desktop development. Or run:
nix develop .#android
If developing for android (ATAK or FoxhunterStandaloneAndroid)
- Use
cargo r --bin XXXto run a particular binary. Currently these binaries are available:
troyneubauer@Troys-Air $ cargo r --bin
error: "--bin" takes one argument.
Available binaries:
studio
Additionally, use cargo r --release --bin XXX to run in release mode (optimized code will run much faster).
Profiling is supported via tracy. To use, enter the profiling-enabled shell:
nix develop .#profile
This will bring the tracy binary into your $PATH and set $RUSTFLAGS="--cfg profile" (instrumentation is only included when this config is active to avoid overhead in production environments)
Run the tracy UI:
tracy &
Run runner with the release-with-debug profile (release mode + debug info required for profiling to be useful), and press connect in the UI:
cargo r --profile release-with-debug`
See this CppCon talk for an overview of Tracy's features and usage
