diff options
author | lonkaars <loek@pipeframe.xyz> | 2022-12-14 20:50:00 +0100 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2022-12-14 20:50:00 +0100 |
commit | 706f5ab73fedd5f2cc17a849c8ccef6b4d226a8f (patch) | |
tree | 0104f9071159e7d4f3d734a61398d7f0ebe6a415 | |
parent | de08b4a3f217a9321c52c237f974a6733564504e (diff) |
add design ramblings
-rw-r--r-- | docs/design.md | 62 | ||||
-rw-r--r-- | docs/fig.drawio (renamed from fig.drawio) | 0 | ||||
-rw-r--r-- | docs/gen/doc.m4 | 1 | ||||
-rw-r--r-- | docs/gen/style.css | 1 | ||||
-rw-r--r-- | docs/img/fig-architecture.svg (renamed from assets/fig-architecture.svg) | 0 | ||||
-rw-r--r-- | docs/makefile | 2 | ||||
-rw-r--r-- | readme.md | 2 |
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 > $@ @@ -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. |