From 75f953cc96f09a5693672552b0ba0f53173b0262 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Fri, 19 Apr 2024 16:14:31 +0200 Subject: finish requirements document --- docs/img/requirements/hardware-example.png | Bin 0 -> 94788 bytes docs/img/requirements/neotrellis-hardware.png | Bin 0 -> 71544 bytes docs/img/requirements/neotrellis-start.png | Bin 0 -> 3078 bytes docs/img/requirements/neotrellis-toggle.png | Bin 0 -> 22898 bytes docs/img/requirements/software-cable.png | Bin 0 -> 33947 bytes docs/img/requirements/software-codes.png | Bin 0 -> 34224 bytes docs/img/requirements/software-example.png | Bin 0 -> 25814 bytes docs/img/requirements/vault-disp.png | Bin 0 -> 27965 bytes docs/img/requirements/vault-keypad.png | Bin 0 -> 75409 bytes docs/readme.md | 6 +- docs/requirements.adoc | 637 +++++++++++++++----------- 11 files changed, 370 insertions(+), 273 deletions(-) create mode 100644 docs/img/requirements/hardware-example.png create mode 100644 docs/img/requirements/neotrellis-hardware.png create mode 100644 docs/img/requirements/neotrellis-start.png create mode 100644 docs/img/requirements/neotrellis-toggle.png create mode 100644 docs/img/requirements/software-cable.png create mode 100644 docs/img/requirements/software-codes.png create mode 100644 docs/img/requirements/software-example.png create mode 100644 docs/img/requirements/vault-disp.png create mode 100644 docs/img/requirements/vault-keypad.png diff --git a/docs/img/requirements/hardware-example.png b/docs/img/requirements/hardware-example.png new file mode 100644 index 0000000..e6ba035 Binary files /dev/null and b/docs/img/requirements/hardware-example.png differ diff --git a/docs/img/requirements/neotrellis-hardware.png b/docs/img/requirements/neotrellis-hardware.png new file mode 100644 index 0000000..692cd91 Binary files /dev/null and b/docs/img/requirements/neotrellis-hardware.png differ diff --git a/docs/img/requirements/neotrellis-start.png b/docs/img/requirements/neotrellis-start.png new file mode 100644 index 0000000..64fc328 Binary files /dev/null and b/docs/img/requirements/neotrellis-start.png differ diff --git a/docs/img/requirements/neotrellis-toggle.png b/docs/img/requirements/neotrellis-toggle.png new file mode 100644 index 0000000..b83b8cf Binary files /dev/null and b/docs/img/requirements/neotrellis-toggle.png differ diff --git a/docs/img/requirements/software-cable.png b/docs/img/requirements/software-cable.png new file mode 100644 index 0000000..36efbda Binary files /dev/null and b/docs/img/requirements/software-cable.png differ diff --git a/docs/img/requirements/software-codes.png b/docs/img/requirements/software-codes.png new file mode 100644 index 0000000..3d6f946 Binary files /dev/null and b/docs/img/requirements/software-codes.png differ diff --git a/docs/img/requirements/software-example.png b/docs/img/requirements/software-example.png new file mode 100644 index 0000000..7e4e6a9 Binary files /dev/null and b/docs/img/requirements/software-example.png differ diff --git a/docs/img/requirements/vault-disp.png b/docs/img/requirements/vault-disp.png new file mode 100644 index 0000000..95ac43a Binary files /dev/null and b/docs/img/requirements/vault-disp.png differ diff --git a/docs/img/requirements/vault-keypad.png b/docs/img/requirements/vault-keypad.png new file mode 100644 index 0000000..43ed5fd Binary files /dev/null and b/docs/img/requirements/vault-keypad.png differ diff --git a/docs/readme.md b/docs/readme.md index efcf30d..bf7eafe 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -8,15 +8,15 @@ makefile is provided for convenience. ## TODO - transfer documents - - [ ] project plan - - [ ] requirements + - [x] project plan + - [x] requirements - [ ] research - [ ] software design - xrefs for-- - [x] tables - [x] figures - [x] section numbers (headings) - - [ ] requirements + - [x] requirements - [x] figures - [x] citations - [ ] glossary diff --git a/docs/requirements.adoc b/docs/requirements.adoc index 2170484..d678ad7 100644 --- a/docs/requirements.adoc +++ b/docs/requirements.adoc @@ -110,366 +110,399 @@ describes all functional requirements of the puzzle box. .Puzzle box specifications [cols="1,1,10"] |=== -| ID | Pri. | Specification +| ID | <> | Specification -| 001 | <> | -The dimensions of the puzzle box are 30×30×30cm ± 5% (Length × Width × Height). +| <> | <> | +[[req:001,R-001]] The dimensions of the puzzle box are 30×30×30cm ± 5% (Length × Width × Height). -| 002 | <> | -The puzzle box extends a maximum of 5cm on the sides and the top. +| <> | <> | +[[req:002,R-002]] The puzzle box extends a maximum of 5cm on the sides and the top. -| 003 | <> | -The puzzle box is flat at the bottom. +| <> | <> | +[[req:003,R-003]] The puzzle box is flat at the bottom. -| <> | <> | -[[req:4,R-04]] The puzzle box has a key switch at the bottom of the NeoTrellis puzzle. +| <> | <> | +[[req:004,R-004]] The puzzle box has a key switch at the bottom of the NeoTrellis puzzle. -| <> | <> | -[[req:5,R-05]] The puzzle box has an indicator LED at the bottom of the NeoTrellis puzzle. +| <> | <> | +[[req:005,R-005]] The puzzle box has an indicator LED at the bottom of the NeoTrellis puzzle. -| 006 | <> | -The indicator LED turns green when the system is on and not charging. +| <> | <> | +[[req:006,R-006]] The indicator LED turns green when the system is on and not charging. -| 007 | <> | -The indicator LED turns blue when the battery is charging. +| <> | <> | +[[req:007,R-007]] The indicator LED turns blue when the battery is charging. -| 008 | <> | -The indicator LED turns red when the battery does not have enough capacity for the duration of one game and is not charging. +| <> | <> | +[[req:008,R-008]] The indicator LED turns red when the battery does not have enough capacity for the duration of one game and is not charging. -| 009 | <> | -The puzzle box has a USB-C port at the bottom of the NeoTrellis puzzle for battery charging. +| <> | <> | +[[req:009,R-009]] The puzzle box has a USB-C port at the bottom of the NeoTrellis puzzle for battery charging. -| 010 | <> | -The puzzle box has a distance sensor at the bottom to detect if it is lifted. +| <> | <> | +[[req:010,R-010]] The puzzle box has a distance sensor at the bottom to detect if it is lifted. -| 011 | <> | -The puzzle box main board (PCB on the bottom plate) includes a speaker. +| <> | <> | +[[req:011,R-011]] The puzzle box main board (PCB on the bottom plate) includes a speaker. -| 012 | <> | -When the puzzle box is lifted, the mainboard speaker emits an alarm sound for at least 10 seconds. It stops only when it has been on a table for another 10 seconds (detected by the distance sensor). +| <> | <> | +[[req:012,R-012]] When the puzzle box is lifted, the mainboard speaker emits an alarm sound for at least 10 seconds. It stops only when it has been on a table for another 10 seconds (detected by the distance sensor). -| 013 | <> | -When the game is completed, the puzzle box produces a victory sound. +| <> | <> | +[[req:013,R-013]] When the game is completed, the puzzle box produces a victory sound. -| 014 | <> | -Pressing the "identify" button on the web panel causes the indicator LED to blink. +| <> | <> | +[[req:014,R-014]] Pressing the "identify" button on the web panel causes the indicator LED to blink. -| 015 | <> | -Pressing the "identify" button on the web panel triggers a sound from the speaker. +| <> | <> | +[[req:015,R-015]] Pressing the "identify" button on the web panel triggers a sound from the speaker. -| 016 | <> | -The game starts once the scheduler time is reached (refer to section 3.7 - [2]). +| <> | <> | +// section 3.7 is inside the citation, and does not refer to section 3.7 in this document +[[req:016,R-016]] The game starts once the scheduler time is reached (refer to cite:[Bek23] section 3.7). |=== === The bomb -.Puzzle box specifications +.Bomb specifications [cols="1,1,10"] |=== -| ID | Pri. | Specification +| ID | <> | Specification -| 017 | <> | -The bomb includes a 6-digit 7-segment display for showing the remaining playtime. +| <> | <> | +[[req:017,R-017]] The bomb includes a 6-digit 7-segment display for showing the remaining playtime. -| 018 | <> | -The bomb contains a keypad for entering the disarm code. +| <> | <> | +[[req:018,R-018]] The bomb contains a keypad for entering the disarm code. -| 019 | <> | -The 6-digit 7-segment display turns off when no game is in progress. +| <> | <> | +[[req:019,R-019]] The 6-digit 7-segment display turns off when no game is in progress. -| 020 | <> | -Once the disarm code is entered on the bomb keypad, the game is complete. +| <> | <> | +[[req:020,R-020]] Once the disarm code is entered on the bomb keypad, the game is complete. -| 021 | <> | -When the game is finished, the bomb emits a victory sound. +| <> | <> | +[[req:021,R-021]] When the game is finished, the bomb emits a victory sound. -| 022 | <> | -The timer on the bomb counts down from 60:00:00 to 00:00:00. +| <> | <> | +[[req:022,R-022]] The timer on the bomb counts down from 60:00:00 to 00:00:00. -| 023 | <> | -Pressing the "identify" button on the web panel causes the indicator LED to blink. +| <> | <> | +[[req:023,R-023]] Pressing the "identify" button on the web panel causes the indicator LED to blink. -| 024 | <> | -Pressing the "identify" button on the web panel triggers a sound from the speaker. +| <> | <> | +[[req:024,R-024]] Pressing the "identify" button on the web panel triggers a sound from the speaker. |=== === The game +.General game specifications [cols="1,1,10"] |=== -| 025 | <> | -The game lasts for 1 hour. +| ID | <> | Specification + +| <> | <> | +[[req:025,R-025]] The game lasts for 1 hour. -| 026 | <> | -The game should be solvable within the given playtime, without the player having prior knowledge of the game or its mechanics. +| <> | <> | +[[req:026,R-026]] The game should be solvable within the given playtime, without the player having prior knowledge of the game or its mechanics. -| 027 | <> | -The puzzles should be easy enough to solve without any prior knowledge of the game or its mechanics. +| <> | <> | +[[req:027,R-027]] The puzzles should be easy enough to solve without any prior knowledge of the game or its mechanics. -| 167 | <> | -A puzzle module can manually be reset at the discretion of the game operator +| <> | <> | +[[req:167,R-167]] A puzzle module can manually be reset at the discretion of the game operator -| 168 | <> | -A puzzle module can manually be set as solved at the discretion of the game operator +| <> | <> | +[[req:168,R-168]] A puzzle module can manually be set as solved at the discretion of the game operator -| 028 | <> | -The disarm code for the bomb consists of 4 digits. +| <> | <> | +[[req:028,R-028]] The disarm code for the bomb consists of 4 digits. -| 029 | <> | -Once all games are solved, the mainboard PCB displays the disarm code on a red 7-segment 4-digit screen. +| <> | <> | +[[req:029,R-029]] Once all games are solved, the mainboard PCB displays the disarm code on a red 7-segment 4-digit screen. -| 030 | <> | -The puzzle box records the playtime of each game. +| <> | <> | +[[req:030,R-030]] The puzzle box records the playtime of each game. -| 031 | <> | -The puzzle box features 5 playable puzzles. +| <> | <> | +[[req:031,R-031]] The puzzle box features 5 playable puzzles. -| 032 | <> | -Only one game is active at a time; the other games do not respond to buttons. +| <> | <> | +[[req:032,R-032]] Only one game is active at a time; the other games do not respond to buttons. -| 033 | <> | -The game always starts with the NeoTrellis puzzle. +| <> | <> | +[[req:033,R-033]] The game always starts with the NeoTrellis puzzle. |=== ==== NeoTrellis puzzle +.NeoTrellis puzzle requirements [cols="1,1,10"] |=== -| 034 | <> | -There is an 8x8 LED matrix where each LED can display different colors. +| ID | <> | Specification -| 035 | <> | -At the start of the puzzle, a pattern is displayed as shown in Figure 4. +| <> | <> | +[[req:034,R-034]] There is an 8x8 LED matrix where each LED can display different colors. -| 036 | <> | -When a button is pressed, the adjacent LEDs and the pressed LED toggle (If an LED is off, it turns on. If an LED is on, it turns off). +| <> | <> | +[[req:035,R-035]] At the start of the puzzle, a pattern is displayed as shown in <>. -| 037 | <> | -All LEDs in the Neotrellis that are turned on are blue. +| <> | <> | +[[req:036,R-036]] When a button is pressed, the adjacent LEDs and the pressed LED toggle (If an LED is off, it turns on. If an LED is on, it turns off). -| 038 | <> | -The puzzle is considered solved when all LEDs are turned off, and then the software puzzle starts. +| <> | <> | +[[req:037,R-037]] All LEDs in the Neotrellis that are turned on are blue. + +| <> | <> | +[[req:038,R-038]] The puzzle is considered solved when all LEDs are turned off, and then the software puzzle starts. |=== ==== Software puzzle +.Software puzzle requirements [cols="1,1,10"] |=== -| 039 | <> | -The software puzzle board has 6 banana plug connectors with different logic gates displayed next to them (Refer to Figure 5 for a sketch and Figure 7 for a banana plug example). +| ID | <> | Specification + +| <> | <> | +[[req:039,R-039]] The software puzzle board has 6 banana plug connectors with different logic gates displayed next to them (Refer to <> for a sketch and <> for a banana plug example). -| 040 | <> | -The software puzzle board has 6 banana plug connectors labeled with the letters A through F (Refer to Figure 5 for a sketch). +| <> | <> | +[[req:040,R-040]] The software puzzle board has 6 banana plug connectors labeled with the letters A through F (Refer to <> for a sketch). -| 041 | <> | -At the start of the puzzle box game, the preparer must connect all cables in parallel (horizontally) to the connectors. +| <> | <> | +[[req:041,R-041]] At the start of the puzzle box game, the preparer must connect all cables in parallel (horizontally) to the connectors. -| 042 | <> | -There are C code blocks visible only to the players on the bomb side, corresponding to the letters A through F (Refer to Figure 6 for the codes). +| <> | <> | +[[req:042,R-042]] There are C code blocks visible only to the players on the bomb side, corresponding to the letters A through F (Refer to <> for the codes). -| 043 | <> | -The combinations of logic gates to letters are always the same. +| <> | <> | +[[req:043,R-043]] The combinations of logic gates to letters are always the same. -| 044 | <> | -The puzzle is considered solved when the cables from the logic gates match the code blocks (Refer to Figure 5 and Figure 6 for the combinations). +| <> | <> | +[[req:044,R-044]] The puzzle is considered solved when the cables from the logic gates match the code blocks (Refer to <> and <> for the combinations). -| 045 | <> | -Once the puzzle is solved, the green indicator LED will light up (Refer to Figure 5 and Figure 6). +| <> | <> | +[[req:045,R-045]] Once the puzzle is solved, the green indicator LED will light up (Refer to <> and <>). -| 046 | <> | -After the puzzle is solved, the automation puzzle begins. +| <> | <> | +[[req:046,R-046]] After the puzzle is solved, the automation puzzle begins. |=== ==== Automation puzzle +The specific details for this puzzle are not present in the previous +documentation. Due to time constraints, the section will be left empty. + +.Automation puzzle requirements [cols="1,1,10"] |=== -| 047 | <> | -After the puzzle is solved, the hardware puzzle begins. +| ID | <> | Specification + +| <> | <> | +[[req:047,R-047]] After the puzzle is solved, the hardware puzzle begins. |=== ==== Hardware puzzle +.Hardware puzzle requirements [cols="1,1,10"] |=== -| 048 | <> | -There are eight switches on the hardware puzzle board. +| ID | <> | Specification -| 049 | <> | -The hardware puzzle board features a diagram of a combinatorial circuit with 8 inputs (linked to the switches) and 1 output (Refer to Figure 8 for a sketch). +| <> | <> | +[[req:048,R-048]] There are eight switches on the hardware puzzle board. -| 050 | <> | -The hardware puzzle board includes a red 7-segment 4-digit display (Refer to Figure 8 for a sketch). +| <> | <> | +[[req:049,R-049]] The hardware puzzle board features a diagram of a combinatorial circuit with 8 inputs (linked to the switches) and 1 output (Refer to <> for a sketch). -| 051 | <> | -There are 4 potentiometers on the hardware puzzle board (Refer to Figure 8 for a sketch). +| <> | <> | +[[req:050,R-050]] The hardware puzzle board includes a red 7-segment 4-digit display (Refer to <> for a sketch). -| 052 | <> | -A blue LED on the hardware puzzle board displays the morse code. +| <> | <> | +[[req:051,R-051]] There are 4 potentiometers on the hardware puzzle board (Refer to <> for a sketch). -| 053 | <> | -A green LED on the hardware puzzle board indicates whether the combinatorial circuit is solved. +| <> | <> | +[[req:052,R-052]] A blue LED on the hardware puzzle board displays the morse code. -| 054 | <> | -At the start of the puzzle, the potentiometers are inactive. +| <> | <> | +[[req:053,R-053]] A green LED on the hardware puzzle board indicates whether the combinatorial circuit is solved. -| 055 | <> | -The 7-segment display is off at the beginning of the puzzle. +| <> | <> | +[[req:054,R-054]] At the start of the puzzle, the potentiometers are inactive. -| 056 | <> | -The LED for the combinatorial puzzle is off initially. +| <> | <> | +[[req:055,R-055]] The 7-segment display is off at the beginning of the puzzle. -| 057 | <> | -The morse code LED is off at the puzzle's outset. +| <> | <> | +[[req:056,R-056]] The LED for the combinatorial puzzle is off initially. -| 058 | <> | -The preparer must set all switches to the down position at the start of the puzzle box game. +| <> | <> | +[[req:057,R-057]] The morse code LED is off at the puzzle's outset. -| 059 | <> | -The preparer must turn all potentiometers to the left (value '0') at the beginning of the puzzle box game. +| <> | <> | +[[req:058,R-058]] The preparer must set all switches to the down position at the start of the puzzle box game. -| 060 | <> | -The puzzle consists of two phases. +| <> | <> | +[[req:059,R-059]] The preparer must turn all potentiometers to the left (value '0') at the beginning of the puzzle box game. -| 061 | <> | -The puzzle begins in phase 1. +| <> | <> | +[[req:060,R-060]] The puzzle consists of two phases. -| 062 | <> | -During the puzzle, the switches must be toggled to obtain a logical '1' at the output of the combinatorial circuit. +| <> | <> | +[[req:061,R-061]] The puzzle begins in phase 1. -| 063 | <> | -When the output of the combinatorial circuit equals '1', the green indicator LED turns on (Refer to Figure 8 for a sketch). +| <> | <> | +[[req:062,R-062]] During the puzzle, the switches must be toggled to obtain a logical '1' at the output of the combinatorial circuit. -| 064 | <> | -The puzzle proceeds to phase 2 when the output of the combinatorial circuit is a logical '1'. +| <> | <> | +[[req:063,R-063]] When the output of the combinatorial circuit equals '1', the green indicator LED turns on (Refer to <> for a sketch). -| 065 | <> | -The switches no longer respond once the puzzle enters phase 2. +| <> | <> | +[[req:064,R-064]] The puzzle proceeds to phase 2 when the output of the combinatorial circuit is a logical '1'. -| 066 | <> | -The indicator LED from phase 1 remains green during phase 2. +| <> | <> | +[[req:065,R-065]] The switches no longer respond once the puzzle enters phase 2. -| 067 | <> | -In phase 2, a morse code is displayed using an LED. This morse code represents 4 numbers from 0 to 9 and repeats every second. +| <> | <> | +[[req:066,R-066]] The indicator LED from phase 1 remains green during phase 2. -| 068 | <> | -The morse code is randomly generated. +| <> | <> | +[[req:067,R-067]] In phase 2, a morse code is displayed using an LED. This morse code represents 4 numbers from 0 to 9 and repeats every second. -| 069 | <> | -Each potentiometer can be rotated to display a value from 0 to 9 on the corresponding 4-digit 7-segment display. The order of the potentiometers matches the order of the segments on the display (Refer to Figure 8 for a sketch). +| <> | <> | +[[req:068,R-068]] The morse code is randomly generated. -| 070 | <> | -The puzzle is considered solved when the code displayed on the 7-segment 4-digit screen matches the 4 numbers from the morse code. +| <> | <> | +[[req:069,R-069]] Each potentiometer can be rotated to display a value from 0 to 9 on the corresponding 4-digit 7-segment display. The order of the potentiometers matches the order of the segments on the display (Refer to <> for a sketch). -| 071 | <> | -Once the puzzle is solved, the value shown on the 7-segment 4-digit display cannot be changed. +| <> | <> | +[[req:070,R-070]] The puzzle is considered solved when the code displayed on the 7-segment 4-digit screen matches the 4 numbers from the morse code. -| 072 | <> | -A 2-second victory sound is produced by the speaker upon solving the puzzle. +| <> | <> | +[[req:071,R-071]] Once the puzzle is solved, the value shown on the 7-segment 4-digit display cannot be changed. -| 073 | <> | -During the victory sound, the 7-segment display blinks twice per second. +| <> | <> | +[[req:072,R-072]] A 2-second victory sound is produced by the speaker upon solving the puzzle. -| 074 | <> | -After the victory sound, the puzzle has been solved and the vault puzzle begins. +| <> | <> | +[[req:073,R-073]] During the victory sound, the 7-segment display blinks twice per second. + +| <> | <> | +[[req:074,R-074]] After the victory sound, the puzzle has been solved and the vault puzzle begins. |=== ==== Vault puzzle +.Vault puzzle requirements [cols="1,1,10"] |=== -| 075 | <> | -The vault puzzle board features a red 7-segment 4-digit display. +| ID | <> | Specification + +| <> | <> | +[[req:075,R-075]] The vault puzzle board features a red 7-segment 4-digit display. -| 076 | <> | -On the vault puzzle board, there is a 4x4 grid of holes for ventilation and sound. +| <> | <> | +[[req:076,R-076]] On the vault puzzle board, there is a 4x4 grid of holes for ventilation and sound. -| 077 | <> | -The vault puzzle board includes a vault door, and the inside of the vault is transparent, allowing you to see inside the puzzle box. +| <> | <> | +[[req:077,R-077]] The vault puzzle board includes a vault door, and the inside of the vault is transparent, allowing you to see inside the puzzle box. -| 078 | <> | -A sensor is integrated with the vault to detect when the vault is closed. +| <> | <> | +[[req:078,R-078]] A sensor is integrated with the vault to detect when the vault is closed. -| 079 | <> | -At the beginning of the puzzle box game, the preparer must close the vault. +| <> | <> | +[[req:079,R-079]] At the beginning of the puzzle box game, the preparer must close the vault. -| 080 | <> | -The puzzle starts at level 1. +| <> | <> | +[[req:080,R-080]] The puzzle starts at level 1. -| 081 | <> | -Initially, the 7-segment display shows a code consisting of a letter and a digit. This code represents a valid key combination for level 1 (Refer to Figure 9 for all combinations). +| <> | <> | +[[req:081,R-081]] Initially, the 7-segment display shows a code consisting of a letter and a digit. This code represents a valid key combination for level 1 (Refer to <> for all combinations). -| 082 | <> | -There are a total of 5 levels. After each level, a key combination is displayed, starting with a letter followed by a digit, which is valid for that level (Refer to Figure 9). +| <> | <> | +[[req:082,R-082]] There are a total of 5 levels. After each level, a key combination is displayed, starting with a letter followed by a digit, which is valid for that level (Refer to <>). -| 083 | <> | -Each level has unique key combinations for the button locations (Refer to Figure 9). +| <> | <> | +[[req:083,R-083]] Each level has unique key combinations for the button locations (Refer to <>). -| 084 | <> | -Pressing the button corresponding to the letter-digit combinations advances the puzzle to the next level. +| <> | <> | +[[req:084,R-084]] Pressing the button corresponding to the letter-digit combinations advances the puzzle to the next level. -| 085 | <> | -If an incorrect button is pressed, the game resets to level 1. +| <> | <> | +[[req:085,R-085]] If an incorrect button is pressed, the game resets to level 1. -| 086 | <> | -An error sound is produced by the speaker when an incorrect button is pressed. +| <> | <> | +[[req:086,R-086]] An error sound is produced by the speaker when an incorrect button is pressed. -| 087 | <> | -The 7-segment display blinks when an incorrect button is pressed. +| <> | <> | +[[req:087,R-087]] The 7-segment display blinks when an incorrect button is pressed. -| 088 | <> | -After completing 5 levels, the puzzle is solved, and the vault opens. +| <> | <> | +[[req:088,R-088]] After completing 5 levels, the puzzle is solved, and the vault opens. |=== === Battery +.Battery requirements [cols="1,1,10"] |=== -| 089 | <> | -The puzzle box is powered by a rechargeable battery. +| ID | <> | Specification -| 090 | <> | -The battery lasts for a minimum of 4 hours. +| <> | <> | +[[req:089,R-089]] The puzzle box is powered by a rechargeable battery. -| 091 | <> | -The battery in the puzzle box can be replaced. +| <> | <> | +[[req:090,R-090]] The battery lasts for a minimum of 4 hours. + +| <> | <> | +[[req:091,R-091]] The battery in the puzzle box can be replaced. |=== === Network Communication +.Communication requirements [cols="1,1,10"] |=== -| 092 | <> | -The puzzle boxes, bombs, and the puzzle box hub must all be able to communicate with each other. +| ID | <> | Specification + +| <> | <> | +[[req:092,R-092]] The puzzle boxes, bombs, and the puzzle box hub must all be able to communicate with each other. -| 093 | <> | -Communication between two devices in the network must have a range of at least 20 meters in an open field. +| <> | <> | +[[req:093,R-093]] Communication between two devices in the network must have a range of at least 20 meters in an open field. |=== === Framework [cols="1,1,10"] |=== -| 130 | <> | -The main controller and its software do not need to be modified to implement a new puzzle module +| ID | <> | Specification -| 131 | <> | -Puzzle modules can be added and removed while the main controller is powered on +| <> | <> | +[[req:130,R-130]] The main controller and its software do not need to be modified to implement a new puzzle module -| 132 | <> | -Puzzle modules can be added and removed while the main controller is powered off +| <> | <> | +[[req:131,R-131]] Puzzle modules can be added and removed while the main controller is powered on -| 133 | <> | -The puzzle box provides a single external interface for accessing and controlling game state variables +| <> | <> | +[[req:132,R-132]] Puzzle modules can be added and removed while the main controller is powered off + +| <> | <> | +[[req:133,R-133]] The puzzle box provides a single external interface for accessing and controlling game state variables |=== === Puzzle box hub +.Puzzle box hub general requirements [cols="1,1,10"] |=== -| 094 | <> | -The puzzle box hub hosts a website that can be accessed by a device connected to the network. +| ID | <> | Specification + +| <> | <> | +[[req:094,R-094]] The puzzle box hub hosts a website that can be accessed by a device connected to the network. |=== [[sec:technical]] @@ -482,145 +515,209 @@ technical specifications of the puzzle box. === Wireless communication +.Wireless communication requirements [cols="1,1,10"] |=== -| 127 | <> | -The wireless communication between the system controller, bomb, and puzzle box operates over a WiFi mesh or WiFi network. +| ID | <> | Specification + +| <> | <> | +[[req:127,R-127]] The wireless communication between the system controller, bomb, and puzzle box operates over a WiFi mesh or WiFi network. |=== === Framework +.Development framework requirements [cols="1,1,10"] |=== -| 128 | <> | -A framework has been created to assist future groups in the development of the puzzle box. +| ID | <> | Specification + +| <> | <> | +[[req:128,R-128]] A framework has been created to assist future groups in the development of the puzzle box. -| 129 | <> | -The framework runs on the main puzzle box controller. +| <> | <> | +[[req:129,R-129]] The framework runs on the main puzzle box controller. -| 134 | <> | -Puzzle modules are detected by the main controller module. +| <> | <> | +[[req:134,R-134]] Puzzle modules are detected by the main controller module. -| 135 | <> | -Puzzle modules are initialized by the main controller module. +| <> | <> | +[[req:135,R-135]] Puzzle modules are initialized by the main controller module. -| 165 | <> | -Puzzle modules repeatedly send 'update' messages to the main controller while their global state is 'uninitialized' +| <> | <> | +[[req:165,R-165]] Puzzle modules repeatedly send 'update' messages to the main controller while their global state is 'uninitialized' |=== === Main controller +.Main controller requirements [cols="1,1,10"] |=== -| 136 | <> | -The main controller has at least 1 I2C peripheral. +| ID | <> | Specification -| 137 | <> | -The main controller can connect to a standard 802.11b/g/n access point. +| <> | <> | +[[req:136,R-136]] The main controller has at least 1 I2C peripheral. -| 138 | <> | -The main controller can serve TCP socket connection(s). +| <> | <> | +[[req:137,R-137]] The main controller can connect to a standard 802.11b/g/n access point. -| 139 | <> | -The main controller is available as a development kit from Farnell. +| <> | <> | +[[req:138,R-138]] The main controller can serve TCP socket connection(s). -| 140 | <> | -The main controller can communicate over I²C with a speed of 400kb/s +| <> | <> | +[[req:139,R-139]] The main controller is available as a development kit from Farnell. -| 166 | <> | -The main controller is power efficient. +| <> | <> | +[[req:140,R-140]] The main controller can communicate over I²C with a speed of 400kb/s + +| <> | <> | +[[req:166,R-166]] The main controller is power efficient. |=== === Puzzle module controller [cols="1,1,10"] |=== -| 141 | <> | -The puzzle module controller has at least 1 I2C peripheral. +| ID | <> | Specification + +| <> | <> | +[[req:141,R-141]] The puzzle module controller has at least 1 I2C peripheral. -| 142 | <> | -The puzzle module controller has enough I/O ports to control a puzzle. +| <> | <> | +[[req:142,R-142]] The puzzle module controller has enough I/O ports to control a puzzle. -| 143 | <> | -The puzzle module is power efficient. +| <> | <> | +[[req:143,R-143]] The puzzle module is power efficient. -| 144 | <> | -The puzzle module has a configurable clock speed. +| <> | <> | +[[req:144,R-144]] The puzzle module has a configurable clock speed. -| 145 | <> | -The puzzle module controller is available as a development kit from Farnell. +| <> | <> | +[[req:145,R-145]] The puzzle module controller is available as a development kit from Farnell. -| 146 | <> | -The puzzle module can communicate over I²C with a speed of 400kb/s +| <> | <> | +[[req:146,R-146]] The puzzle module can communicate over I²C with a speed of 400kb/s |=== === Vault puzzle +.Vault puzzle requirements [cols="1,1,10"] |=== -| 147 | <> | -The vault puzzle can communicate with the main controller using I²C +| ID | <> | Specification -| 148 | <> | -The vault puzzle can produce a sound signal for the buzzer +| <> | <> | +[[req:147,R-147]] The vault puzzle can communicate with the main controller using I²C -| 149 | <> | -The vault puzzle can lock & unlock a solenoid lock +| <> | <> | +[[req:148,R-148]] The vault puzzle can produce a sound signal for the buzzer -| 150 | <> | -The vault puzzle can translate and obtain a button press from the 3x4 keypad using 5 inputs +| <> | <> | +[[req:149,R-149]] The vault puzzle can lock & unlock a solenoid lock -| 151 | <> | -The vault puzzle can communicate with a 4x 7 SEG. Display using 2 lines (clock & data) +| <> | <> | +[[req:150,R-150]] The vault puzzle can translate and obtain a button press from the 3x4 keypad using 5 inputs -| 152 | <> | -The vault puzzle can read a sensor's value to detect if the vault door is open or closed. +| <> | <> | +[[req:151,R-151]] The vault puzzle can communicate with a 4x 7 SEG. Display using 2 lines (clock & data) + +| <> | <> | +[[req:152,R-152]] The vault puzzle can read a sensor's value to detect if the vault door is open or closed. |=== === Bomb +.Bomb requirements [cols="1,1,10"] |=== -| 153 | <> | -The bomb can communicate with the hub using a TCP socket connection +| ID | <> | Specification + +| <> | <> | +[[req:153,R-153]] The bomb can communicate with the hub using a TCP socket connection -| 154 | <> | -The bomb can sync. time using the WiFi connection +| <> | <> | +[[req:154,R-154]] The bomb can sync. time using the WiFi connection -| 155 | <> | -The bomb can retrieve, and store a given code in order to verify it later on input +| <> | <> | +[[req:155,R-155]] The bomb can retrieve, and store a given code in order to verify it later on input -| 156 | <> | -The bomb can be paired to a puzzlebox using the hub's interface +| <> | <> | +[[req:156,R-156]] The bomb can be paired to a puzzlebox using the hub's interface |=== == Preconditions +This section describes the aspects of the project which have been set as +preconditions and cannot be changed. + +.Preconditions [cols="1,11"] |=== -| 160 | The delivery of components cannot take longer than two weeks. -| 161 | The price of a single puzzle box is not higher than €150. -| 162 | The existing games are used in the puzzle box. -| 163 | The puzzle box is not allowed to make a connection with the Avans network (Eduroam). -| 164 | The bomb hardware cannot be changed. +| ID | Precondition + +| <> | [[req:160,R-160]] The delivery of components cannot take longer than two weeks. +| <> | [[req:161,R-161]] The price of a single puzzle box is not higher than €150. +| <> | [[req:162,R-162]] The existing games are used in the puzzle box. +| <> | [[req:163,R-163]] The puzzle box is not allowed to make a connection with the Avans network (Eduroam). +| <> | [[req:164,R-164]] The bomb hardware cannot be changed. |=== == Documentation +This section lists requirements that apply to documentation produced during +this project. + [cols="1,1,10"] |=== -| 157 | <> | -All documentation is written according to the style guide [3] +| ID | <> | Specification + +| <> | <> | +[[req:157,R-157]] All documentation is written according to the style guide cite:[styleguide] -| 158 | <> | -All documentation is manually checked for spelling and grammar mistakes before being published +| <> | <> | +[[req:158,R-158]] All documentation is manually checked for spelling and grammar mistakes before being published -| 159 | <> | -All project documents are examined once by Jonathan Overes from Avans +| <> | <> | +[[req:159,R-159]] All project documents are examined once by Jonathan Overes from Avans |=== [appendix] == Explanatory Images +[[fig:vault-disp]] +.7 Segment 4 digit screen (sketch) +image::img/requirements/vault-disp.png[] + +[[fig:neotrellis-hardware]] +.NeoTrellis example (sketch) +image::img/requirements/neotrellis-hardware.png[] + +[[fig:neotrellis-toggle]] +.Toggling LEDs after the user pressed on the button (purple dot) +image::img/requirements/neotrellis-toggle.png[width=45%] + +[[fig:neotrellis-start]] +.Starting pattern of the NeoTrellis puzzle +image::img/requirements/neotrellis-start.png[width=45%] + +[[fig:software-example]] +.Software puzzle example with logical ports (left) and letters A through F (right) +image::img/requirements/software-example.png[] + +[[fig:software-codes]] +.The different code fragments corresponding with the letter A through F +image::img/requirements/software-codes.png[height=35%] + +[[fig:software-cable]] +.Software puzzle cable example +image::img/requirements/software-cable.png[] + +[[fig:hardware-example]] +.Hardware puzzle on the puzzle box +image::img/requirements/hardware-example.png[] + +[[fig:vault-keypad]] +.Buttons combinations with level numbers in the top left +image::img/requirements/vault-keypad.png[width=45%] + include::share/footer.adoc[] -- cgit v1.2.3