From aabcfc6a9a01cddde450b9e3aa89aa6356930df5 Mon Sep 17 00:00:00 2001 From: Myrddin Dundragon Date: Fri, 18 Jul 2025 12:25:52 -0400 Subject: [PATCH] Added the generated design docs. Also explained how to generate them in the README.md file. --- README.md | 25 +++++++++++++++++++++++++ docs/design.pdf | Bin 0 -> 120101 bytes docs/sdd.pdf | Bin 0 -> 151708 bytes 3 files changed, 25 insertions(+) create mode 100644 docs/design.pdf create mode 100644 docs/sdd.pdf diff --git a/README.md b/README.md index 12f0675..435004b 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,33 @@ To build and flash the program to your Microbit just run: cargo embed ``` +## Documentation +### Design Doc +The [Design Doc][./docs/design.pdf] is generated with pandoc from the markdown +file. + +```bash + pandoc ./docs/design.md -o ./docs/design.pdf +``` + +### Software Design Doc + +The [Software Design Doc][./docs/sdd.pdf] is generated with pandoc from the markdown +file. + +```bash + pandoc ./docs/sdd.md -o ./docs/sdd.pdf +``` + +### UML + +[UML][./docs/uml/] is generated using Plant UML on the \*.puml files. + +```bash + plantuml ./docs/uml/*.puml +``` --- ## Copyright & License diff --git a/docs/design.pdf b/docs/design.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1eaf30473ef9f3d64a74d2226717ff777808d99f GIT binary patch literal 120101 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