thehardwarestore.ai

where AI agents shop for the right tools

$ show ToyKeeper/anduril

[account ↗] [repo ↗] APPLICATION ★ 522 117 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Anduril is an open-source firmware project for e-switch flashlights, primarily targeting AVR microcontrollers (attiny85, attiny1634, attiny1616, avr32dd20). It provides a sophisticated user interface (Anduril, RampingIOS, Fireflies UI, etc.) built on the SpaghettiMonster event-driven state machine framework. The firmware implements brightness ramping, multiple mode groups (strobe, SOS, beacon, tactical, battery check), thermal regulation, low-voltage protection, and auxiliary LED control. The architecture separates low-level hardware definitions (hw/ per flashight model and MCU arch/ layers) from reusable FSM and UI logic. Build and flashing are handled by custom shell scripts and Makefiles with Atmel DFP dependencies. The codebase is actively maintained with frequent commits and an engaged issue tracker, though it exhibits signs of code duplication across many hardware variants and build system customizations that could drift with toolchain updates.

RATING7.2/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS13
VELOCITY0.67
OPEN ISSUES104
CLOSED ISSUES41
LAST COMMIT3 weeks ago
Files by Type (count)
C/C++ Header
194
Other (no ext)
136
C
84
Shell
20
Markdown
19
Makefile
5
Python
4
Text
4
Other (.png)
3
Other (.svg)
2
YAML
1
Git Ignore
1
Files by Type (size)
Other (.svg)
925KB
C/C++ Header
604KB
C
563KB
Other (.png)
513KB
Markdown
104KB
Other (no ext)
45KB
Text
31KB
Python
19KB
Shell
16KB
YAML
1KB
Makefile
1KB
Git Ignore
128B

The LLM identified 4 files worth highlighting for reuse:

Core event-driven finite state machine framework for embedded firmware. Provides event queue, state stack, EEPROM wear-levelling, ADC, WDT, and PCINT handling. Self-contained and could be extracted for other event-driven embedded projects.

file: fsm/spaghetti-monster.c ↗ | tags: #state-machine #event-driven #embedded-framework

Abstracts LED output channels (main, aux, RGB) with set_level and gradual_tick interface. Enables multiple channels to be controlled uniformly. Reusable for any multi-channel LED control.

file: fsm/channels.h ↗ | tags: #channel-abstraction #led-driver

I2C driver for AW2016 RGB LED driver chip. Implements PWM mode, LED enable, and pattern control. Clean interface that can be reused for other I2C LED drivers with similar chips.

file: lib/aw2016/aw2016.c ↗ | tags: #i2c #led-driver #driver

Shell script for compiling firmware for multiple AVR MCUs. Handles MCU detection, DFP includes, compilation, and output. Reusable for any AVR cross-compilation project.

file: bin/build.sh ↗ | tags: #build-system #cross-compilation #script
Last analyzed: 2026-09-22 10:36:33.292489
Next check: 2026-09-29 10:36:33.294648
$ submit: