aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-12-14 20:50:00 +0100
committerlonkaars <loek@pipeframe.xyz>2022-12-14 20:50:00 +0100
commit706f5ab73fedd5f2cc17a849c8ccef6b4d226a8f (patch)
tree0104f9071159e7d4f3d734a61398d7f0ebe6a415
parentde08b4a3f217a9321c52c237f974a6733564504e (diff)
add design ramblings
-rw-r--r--docs/design.md62
-rw-r--r--docs/fig.drawio (renamed from fig.drawio)0
-rw-r--r--docs/gen/doc.m41
-rw-r--r--docs/gen/style.css1
-rw-r--r--docs/img/fig-architecture.svg (renamed from assets/fig-architecture.svg)0
-rw-r--r--docs/makefile2
-rw-r--r--readme.md2
7 files changed, 63 insertions, 5 deletions
diff --git a/docs/design.md b/docs/design.md
index d2a3144..1eb7c09 100644
--- a/docs/design.md
+++ b/docs/design.md
@@ -1,6 +1,62 @@
# QT Serial port communication (joshua)
-# General system architecture (loek)
-# Custom serial protocol (loek)
+# General system architecture
+
+![System architecture](img/fig-architecture.svg)
+
+Above is a diagram that shows the component layout of the end product. Notable
+details are:
+
+- The use of bluetooth mesh to establish connections between nodes in the
+ network.
+
+ Bluetooth mesh was chosen because it provides an abstraction layer between
+ the node behaviour and low-level bluetooth protocol routines.
+- The use of a J-Link debugger for connecting the border router node to a
+ desktop computer running the configuration utility.
+
+ The use of the J-Link debugger was chosen because it requires no additional
+ USB controller setup on the node side to communicate.
+
+ Because the network should continue functioning even without the
+ configuration utility connected to the border router, all network
+ configuration (which buttons control which lights) is stored on the border
+ router. The configuration utility is only a 'viewer' for the network with
+ features to edit the configuration and node state, but all action handling is
+ happening on the nodes.
+
+# Custom serial protocol
+
+The border router node communicates with the QT application using a USART
+interface, over which our custom protocol is used to send and receive formatted
+data.
+
+The protocol itself is in a binary format to save on bandwidth and memory
+consumption on the node side. Messages consist of a single starting byte
+(0xff), and following data which is derived from packed structs (a struct of
+which each field is adjacent in memory, without padding).
+
+All data that is sent starts with an opcode to represent the message type, and
+a message id to uniquely identify each message for the purpose of replying to a
+specific message or request. Most messages are fixed-length, but messages that
+have variable-length fields have extra logic in the parser module to handle
+memory allocation. All message types implement their own handler function which
+decodes the message back into a regular struct.
+
+Exact specifications of the protocol can be found in the source tree in
+markdown format, with included client and parser libaries.
+
# Multitasking on nodes (niels)
-# Used software and library versions ()
+# Used software and library versions
+
+<figure>
+|Library|Version|
+|-------|-------|
+|Git|2.39.0|
+|GCC|12.2.0|
+|Qt|6.0.0|
+|Zephyr|3.1|
+|nRF SDK|2.1.2|
+<figcaption>Software and library functions</figcaption>
+</figure>
+
diff --git a/fig.drawio b/docs/fig.drawio
index 0c6aa41..0c6aa41 100644
--- a/fig.drawio
+++ b/docs/fig.drawio
diff --git a/docs/gen/doc.m4 b/docs/gen/doc.m4
index d25fdc9..3b1c0e4 100644
--- a/docs/gen/doc.m4
+++ b/docs/gen/doc.m4
@@ -2,6 +2,7 @@ define(`docname',
ifelse(NAME, `pva', `Plan van aanpak',
NAME, `pve', `Pakket van eisen',
NAME, `research', `Research document',
+ NAME, `design', `Design document',
`UNKNOWN???'))dnl
<!DOCTYPE html>
diff --git a/docs/gen/style.css b/docs/gen/style.css
index eb47f5e..7179ded 100644
--- a/docs/gen/style.css
+++ b/docs/gen/style.css
@@ -53,6 +53,7 @@
border-style: solid;
border-width: 0.7pt 0;
border-color: black;
+ margin: 1rem auto;
}
th, td {
diff --git a/assets/fig-architecture.svg b/docs/img/fig-architecture.svg
index 8b65f9f..8b65f9f 100644
--- a/assets/fig-architecture.svg
+++ b/docs/img/fig-architecture.svg
diff --git a/docs/makefile b/docs/makefile
index 78a931a..55aa9ab 100644
--- a/docs/makefile
+++ b/docs/makefile
@@ -11,7 +11,7 @@ PDF_T = $(SRCS:.md=.pdf)
.PRECIOUS: %.toc %.con
-all: $(PDF_T)
+all: $(HTML_T)
gen/paged.polyfill.js:
$(CURL) -Ls https://unpkg.com/pagedjs/dist/paged.polyfill.js > $@
diff --git a/readme.md b/readme.md
index 1be644f..1d40e2e 100644
--- a/readme.md
+++ b/readme.md
@@ -5,7 +5,7 @@ still WIP
## architecture
<div align="center">
- <img src="assets/fig-architecture.svg"/>
+ <img src="docs/img/fig-architecture.svg"/>
</div>
Above is a draft version of the system architecture.