# Puzzle box
This repository contains the source code for the puzzle framework designed and
implemented during the 2023-2024 run of the Puzzlebox project. This year's run
of the project consists of only software students, and was developed using the
hardware from the 21-22 run of the project.
Improved hardware was designed but not realised during the 22-23 run of the
project. This hardware is recommended for future groups participating in the
project. The software in this repository should be easily portable to various
other microcontrollers, and a recommendation is made in the [design
document](docs/design.adoc).
## Tidyness
Please keep this repository tidy by being aware of the following conventions!
### Folder structure
|folder|contains|
|-|-|
|`/client`|Desktop PC application for controlling the puzzle box
|`/docs`|Project documentation in AsciiDoc(tor) format
|`/i2ctcp`|I2C over TCP protocol functions (used by main and client)
|`/lib`|Libraries (tracked as [submodules](#submodules))
|`/main`|Main controller (RPi pico) software
|`/puzzle/`|Puzzle sources, each puzzle has its own subdirectory
|`/shared`|Shared code
|`/test`|Unit test framework (currently unutilized)
### Code style
An `.editorconfig` file is provided in this repository. Please install the
[EditorConfig](https://editorconfig.org/) plugin for your text editor of choice
to automatically use these.
Currently, no linter/formatter is configured for maintaining consistent code
style.
## Submodules
This repository tracks (most) dependencies via git submodules.
If something is complaining about missing files
```
git submodule update --init --recursive --depth 1
```
until your problems go away.
## ESP SDK setup
1. Install ESP-IDF extension in Visual Studio Code
2. Install using 'express' option
3. Install ESP-IDF v5.2.1 (release version)
Additional help:
- [For windows](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/windows-setup.html#get-started-windows-first-steps)
- [For Linux](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/linux-macos-setup.html#get-started-linux-macos-first-steps)