# CodeTalk Catalog

This directory defines boards, hardware modules, and USB drivers used by the local client.

## Files

- `boards.json`: board profiles shown in the client and used by compilation/upload.
- `hardware-modules.json`: add-on modules shown in the hardware panel.
- `drivers.json`: USB serial driver metadata for future driver guidance.

## Board Fields

- `id`: stable board id. Do not rename after projects are created.
- `label`: display name.
- `fqbn`: Arduino CLI board FQBN.
- `allowedPins`, `pwmPins`, `analogInputOnlyPins`: pin capability lists.
- `uploadTool`: current supported value is `native-stk500v1`.
- `uploadBaudRate`: default upload baud rate.
- `uploadBaudRates`: retry baud candidates, in preferred order.
- `resetModes`: retry reset modes. Current values: `open`, `dtr-rts`, `dtr-only`.
- `requiredCores`: Arduino CLI cores that must be installed, such as `arduino:avr`.
- `requiredLibraries`: libraries required whenever this board is selected.
- `additionalPackageUrls`: board manager package URLs required by third-party boards.
- `recommendedDrivers`: ids from `drivers.json`.

## Module Fields

- `type`: stable module id. Do not rename after projects are created.
- `label`: display name.
- `defaultPins`: default wiring.
- `pinFields`: pin selectors shown in the UI.
- `defaultConfig`: module default config saved into projects.
- `requiredLibraries`: Arduino libraries needed when this module is enabled.

## Notes

Adding AVR boards usually only requires editing `boards.json`.
Adding non-AVR boards such as ESP32 also needs a matching upload implementation if `native-stk500v1` is not suitable.
RC522 is modeled as a hardware module, not a USB driver. It uses SPI pins and declares the `MFRC522` Arduino library dependency.
