aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2024-04-22 17:07:44 +0200
committerlonkaars <loek@pipeframe.xyz>2024-04-22 17:07:44 +0200
commitdd8379e545b4beb6611a8152bca87e9276dde797 (patch)
treecc465d54177dcb834dc018ab9964dc3e607a1cf0
parentacea0828b8638764fa698aae54ba403912354bb8 (diff)
finish TODOs
-rw-r--r--docs/design.adoc23
-rw-r--r--docs/readme.md24
-rw-r--r--docs/reqs.adoc24
-rw-r--r--docs/research.adoc36
-rw-r--r--docs/theme.yml2
5 files changed, 46 insertions, 63 deletions
diff --git a/docs/design.adoc b/docs/design.adoc
index 533c02a..5ebbb15 100644
--- a/docs/design.adoc
+++ b/docs/design.adoc
@@ -175,11 +175,11 @@ Address definitions and protocol specifications are further detailed in
=== Power supply
One of the user requirements is that the puzzle box runs on battery power
-(<<reqs.adoc#req:89>>). Due to the team composition of this year's (23-24) run
-of the puzzle box project, a new power supply was not chosen, even though the
-current power supply was determined insufficient by the 21-22 group. This year,
-additional requirements were specified for the power supply, which were used
-when selecting MCUs suitable for battery-powered applications.
+(<<reqs.adoc#req:pwr-battery>>). Due to the team composition of this year's
+(23-24) run of the puzzle box project, a new power supply was not chosen, even
+though the current power supply was determined insufficient by the 21-22 group.
+This year, additional requirements were specified for the power supply, which
+were used when selecting MCUs suitable for battery-powered applications.
[[fig:power-supply-top]]
.Power supply module top-level block diagram
@@ -216,11 +216,11 @@ The puzzle framework is the foundation of the puzzle box software, and is
designed to facilitate the following:
* Allow puzzle modules to be swapped with minimal downtime or maintenance
- (<<reqs.adoc#req:132>>).
+ (<<reqs.adoc#req:pm-swap>>).
* Simplify the development process and integration of new puzzle modules
- (<<reqs.adoc#req:130>>).
+ (<<reqs.adoc#req:main-static>>).
* Provide abstracted interfaces to allow for easy integration of the puzzle box
- as part of a larger whole (<<reqs.adoc#req:133>>).
+ as part of a larger whole (<<reqs.adoc#req:main-interface>>).
[[sec:framework-state]]
==== State
@@ -230,8 +230,8 @@ All puzzle modules implement the same state machine shown in
transitions that a puzzle module may take on its own. The main controller also
allows the game operator to manually set the current state as one of the states
on the right half of <<fig:puzzle-module-common-state>>, which can be used to
-skip a puzzle if a player is stuck (<<reqs.adoc#req:168>>) or reset a game if
-it is malfunctioning (<<reqs.adoc#req:167>>).
+skip a puzzle if a player is stuck (<<reqs.adoc#req:edge-skip-puzzle>>) or
+reset a game if it is malfunctioning (<<reqs.adoc#req:edge-manual-reset>>).
Puzzle modules start in the 'uninitialized' state, where they repeatedly send
messages to the main controller (see <<sec:main-bridge>>). The state transition
@@ -332,7 +332,8 @@ The bridge is used to remotely access and control the puzzle box.
The Raspberry Pi 3B+ used as main controller during the 21-22 run of the
project set up a Wi-Fi Mesh network cite:[2122_design] to communicate with the
puzzle box. This year's main controller (Raspberry Pi Pico W cite:[research])
-uses a standard 802.11b/g/n access point instead (<<reqs.adoc#req:137>>).
+uses a standard 802.11b/g/n access point instead
+(<<reqs.adoc#req:main-802-11-ap>>).
On this network, the main controller hosts a server that serves TCP socket
connections. These sockets directly forward all internal messages sent to the
diff --git a/docs/readme.md b/docs/readme.md
index 215df50..99cbb24 100644
--- a/docs/readme.md
+++ b/docs/readme.md
@@ -12,27 +12,9 @@ makefile is provided for convenience.
- please give cross references, links, image files, figure ids, etc. meaningful
names
-## TODO
-
-- transfer documents
- - [x] project plan
- - [x] requirements
- - [x] research
- - [ ] footnotes
- - [ ] software design
- - [ ] footnotes
-- xrefs for--
- - [x] tables
- - [x] figures
- - [x] section numbers (headings)
- - [x] requirements
-- [x] figures
-- [x] citations
-- [x] table of tables
-- [x] table of figures
-- [ ] glossary (w/ cross-references)
-- [x] PDF style
-- [ ] give used requirements more meaningful id's
+## todo (low priority)
+
+- cross-references to glossary
## for later reference
diff --git a/docs/reqs.adoc b/docs/reqs.adoc
index edddbdd..8ad24a8 100644
--- a/docs/reqs.adoc
+++ b/docs/reqs.adoc
@@ -211,11 +211,11 @@ describes all functional requirements of the puzzle box.
| <<req:27>> | <<must>> |
[[req:27,R-027]] The puzzles should be easy enough to solve without any prior knowledge of the game or its mechanics.
-| <<req:167>> | <<must>> |
-[[req:167,R-167]] A puzzle module can manually be reset at the discretion of the game operator
+| <<req:edge-manual-reset>> | <<must>> |
+[[req:edge-manual-reset,R-167]] A puzzle module can manually be reset at the discretion of the game operator
-| <<req:168>> | <<must>> |
-[[req:168,R-168]] A puzzle module can manually be set as solved at the discretion of the game operator
+| <<req:edge-skip-puzzle>> | <<must>> |
+[[req:edge-skip-puzzle,R-168]] A puzzle module can manually be set as solved at the discretion of the game operator
| <<req:28>> | <<wont>> |
[[req:28,R-028]] The disarm code for the bomb consists of 4 digits.
@@ -451,8 +451,8 @@ documentation. Due to time constraints, the section will be left empty.
|===
| ID | <<tab:moscow,Pri.>> | Specification
-| <<req:89>> | <<must>> |
-[[req:89,R-089]] The puzzle box is powered by a rechargeable battery.
+| <<req:pwr-battery>> | <<must>> |
+[[req:pwr-battery,R-089]] The puzzle box is powered by a rechargeable battery.
| <<req:90>> | <<must>> |
[[req:90,R-090]] The battery lasts for a minimum of 4 hours.
@@ -481,17 +481,17 @@ documentation. Due to time constraints, the section will be left empty.
|===
| ID | <<tab:moscow,Pri.>> | Specification
-| <<req:130>> | <<must>> |
-[[req:130,R-130]] The main controller and its software do not need to be modified to implement a new puzzle module
+| <<req:main-static>> | <<must>> |
+[[req:main-static,R-130]] The main controller and its software do not need to be modified to implement a new puzzle module
| <<req:131>> | <<could>> |
[[req:131,R-131]] Puzzle modules can be added and removed while the main controller is powered on
-| <<req:132>> | <<must>> |
-[[req:132,R-132]] Puzzle modules can be added and removed while the main controller is powered off
+| <<req:pm-swap>> | <<must>> |
+[[req:pm-swap,R-132]] Puzzle modules can be added and removed while the main controller is powered off
-| <<req:133>> | <<must>> |
-[[req:133,R-133]] The puzzle box provides a single external interface for accessing and controlling game state variables
+| <<req:main-interface>> | <<must>> |
+[[req:main-interface,R-133]] The puzzle box provides a single external interface for accessing and controlling game state variables
|===
=== Puzzle box hub
diff --git a/docs/research.adoc b/docs/research.adoc
index 5d4f381..a6ef255 100644
--- a/docs/research.adoc
+++ b/docs/research.adoc
@@ -133,8 +133,8 @@ as main controller unit:
* Is available as a development kit from Farnell
(<<reqs.adoc#req:main-devkit-supplier>>).
-<<tab:1>> lists the considered MCU options matching the above criteria. This
-list is a compilation of microcontroller offerings from the following
+<<tab:main-mcu>> lists the considered MCU options matching the above criteria.
+This list is a compilation of microcontroller offerings from the following
manufacturers: Atmel, Espressif, Raspberry Pi.
Of these controllers, the Raspberry Pi RP2040 has the lowest clock speed and
@@ -143,7 +143,7 @@ than the other options. It also happens to be less expensive than all other
options. Due to these reasons, the RP2040 was chosen as main controller MCU.
The Raspberry Pi Pico W board is utilized during development.
-[[tab:1]]
+[[tab:main-mcu]]
.Main controller MCU candidates
[%autowidth]
|===
@@ -151,7 +151,7 @@ The Raspberry Pi Pico W board is utilized during development.
| WFI32E01PC | 1 | 256 KB | 1 MB | 200 MHz
| ESP8266 | 1 | 50 KB | 16 MB | 160 MHz
-| RP2040 | 2 | 264 KB | 2 MB | 133 MHz
+| RP2040 | 2 | 264 KB | 2 MB | 133 MHz{empty}footnote:[Adjusting the clock speed for the main controller is not necessary, even though the RP2040 supports clock speed configuration (see <<tab:pm-mcu>>)]
|===
=== Puzzle module controller
@@ -167,12 +167,12 @@ for controlling the puzzle modules:
(<<reqs.adoc#req:pm-devkit-supplier>>).
* Has a configurable clock speed (<<reqs.adoc#req:pm-clk-ctrl>>).
-<<tab:2>> lists the considered MCU options matching the above criteria. This
-list is a compilation of microcontroller offerings from the following
+<<tab:pm-mcu>> lists the considered MCU options matching the above criteria.
+This list is a compilation of microcontroller offerings from the following
manufacturers: Atmel, STMicroelectronics, Raspberry Pi.
-All the MCUs listed in <<tab:2>> support some version of a low-power mode. The
-RP2040 is again included and appears here because it supports clock speed
+All the MCUs listed in <<tab:pm-mcu>> support some version of a low-power mode.
+The RP2040 is again included and appears here because it supports clock speed
configuration and has a clock gate for each peripheral [2], which may make it a
feasible option with regards to power consumption. Choosing the RP2040 may also
simplify the development process as only a single MCU toolchain needs to be
@@ -187,7 +187,7 @@ Because this year's run of this project was carried out by a team consisting
only of software students, this choice remains as a recommendation. The puzzle
box hardware may still use the ESP32 development kits from the 21-22 group.
-[[tab:2]]
+[[tab:pm-mcu]]
.Puzzle module controller MCU candidates
[%autowidth]
|===
@@ -255,10 +255,10 @@ distributions of Debian are, so this OS is be considered familiar.
=== Conclusions
-<<tab:3>> summarizes the considered operating systems based on the criteria
-outlined at the start of this section.
+<<tab:main-os>> summarizes the considered operating systems based on the
+criteria outlined at the start of this section.
-[[tab:3]]
+[[tab:main-os]]
.Main controller OS comparison
[%autowidth]
|===
@@ -279,13 +279,13 @@ keeping in mind RTOS-specific frameworks, and what features do they have?
=== General framework comparison
-In <<tab:4>> is a general comparison shown of multiple different frameworks.
-These are either a header-only testing framework, a testing framework
-specifically designed for embedded systems, a general-purpose {cpp} library, or a
-specialized {cpp} unit testing framework. The following subsections will give
-more information about each framework and their features.
+In <<tab:test-framework>> is a general comparison shown of multiple different
+frameworks. These are either a header-only testing framework, a testing
+framework specifically designed for embedded systems, a general-purpose {cpp}
+library, or a specialized {cpp} unit testing framework. The following
+subsections will give more information about each framework and their features.
-[[tab:4]]
+[[tab:test-framework]]
.General testing framework comparison cite:[Ali24,Joh21]
[%autowidth]
|===
diff --git a/docs/theme.yml b/docs/theme.yml
index 5844a86..b26ad75 100644
--- a/docs/theme.yml
+++ b/docs/theme.yml
@@ -74,7 +74,7 @@ description-list:
table:
align: center
border-color: transparent
- cell-padding: [0.2pt, 2pt]
+ cell-padding: [0.2pt, 5pt]
border-color: '#000000'
border-width: [ 0.5pt, 0pt, 0.5pt, 0pt ]
head: