Skip to content

MerchGuardian/foxhunter

Repository files navigation

Foxhunter

Logo, a fox tail with the text Foxhunter over it

Project Map

.
├── 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)

Setup

  1. This project manages all of its dependencies through nix. To install, run:
sh <(curl -L https://nixos.org/nix/install)
  1. 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)

  1. Use cargo r --bin XXX to 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

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

About

A visual DSP framework that lets you run routines across mobile and fixed platforms

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
license-template.hbs

Stars

4 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors