- Up/Down: Browse recipes
- OK: Select recipe
- Back: Exit app
- OK: Start brewing
- Back: Return to menu
- OK: Pause/Resume timer (timed steps) or Advance (manual/completed steps)
- Right: Skip to next step
- Left: Go back one step
- Back: Abort brew, return to menu
- OK: Return to menu
- Back: Exit app
- Step-by-step guided brewing with clear instructions
- Automatic countdown timers with progress bars
- Manual advance for prep steps (no arbitrary timing)
- Vibration alerts when steps complete
- Total brew time tracking
- Pause/resume support
- Step navigation (skip ahead or go back)
coffee_timer/
├── application.fam # App manifest
├── coffee_timer.h # Types, structs, recipe definitions
├── coffee_timer.c # Main app logic, UI, input handling
├── recipes.c # Recipe data
├── coffee_timer.png # 10x10 FAP icon
├── images/ # In-app image assets
│ └── CoffeeCup_20x20.png
└── README.md
Edit recipes.c to add new recipes. Each recipe has a name, description, parameters (coffee, water, temp, grind), and an array of steps. Steps can be:
StepTypeAdd- Add coffee or waterStepTypeStir- StirStepTypeWait- Wait/steepStepTypePress- Press plungerStepTypeFlip- Flip inverted AeroPressStepTypePreheat- Setup/preheat
Steps with duration_sec = 0 are manual advance (press OK). Steps with a duration auto-start a countdown timer.
MIT