# Repository Guidelines ## Project Structure & Module Organization - `main/` holds the application entry point (`main.c`) and its build file (`main/CMakeLists.txt`). - `components/stepper_motor/` contains the reusable stepper motor component. Public headers live in `components/stepper_motor/include/` and source in `components/stepper_motor/stepper_motor.c`. - `build/` is generated by ESP-IDF/CMake; do not edit or commit build artifacts. - `sdkconfig` is the project configuration used by ESP-IDF; `sdkconfig.old` is a backup after config changes. ## Build, Test, and Development Commands Run these from an ESP-IDF environment with `IDF_PATH` set: - `idf.py build` — configure and compile the firmware into `build/`. - `idf.py flash -p ` — flash to the connected device. - `idf.py monitor` — open the serial monitor. - `idf.py flash monitor -p ` — common flash + monitor workflow. - `idf.py menuconfig` — edit `sdkconfig` interactively. - `idf.py fullclean` — remove build output and cached configuration. ## Coding Style & Naming Conventions - C code uses 4-space indentation with braces on the same line. - Use `lower_snake_case` for functions/variables, `UPPER_SNAKE_CASE` for macros, and `*_t` suffixes for typedefs. - Prefer `static` for file-local helpers and use `ESP_LOGx` for logging. - Keep component APIs in `components//include/` and include with quotes (e.g., `"stepper_motor.h"`). ## Testing Guidelines - No automated test framework is configured in this repo. - Validate behavior on hardware after changes; include manual test steps and results in PR descriptions. ## Commit & Pull Request Guidelines - Commit Messages must follow the [Conventional Commits](https://www.conventionalcommits.org/) specification. - Git history shows short, imperative summaries without scopes (e.g., "Initial commit"). - PRs should include: a short description, hardware/board tested, and any notable serial output or behavior changes. Attach photos/videos when motion behavior changes. ## Configuration & Hardware Notes - GPIO assignments and motion parameters are defined in `components/stepper_motor/include/stepper_motor.h`. - Update pin mappings and timing constants there if wiring or motor characteristics change.