Skip to content

mihaigalos/osi-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSI Stack

codecov license LoC

Last Logs

OSI communication stack, initially written for AVR UART communication.

This implementation intentionally uses raw pointers instead of smart pointers.

The reasoning is that it will be ported to small 8-bit hardware architectures such as AVR/Arduino, with limited support for modern C++.

Layers

ISO/OSI Layers (Rough Model).

Build and Test

First, get the sources:

git clone https://github.com/mihaigalos/osi-stack.git && cd osi-stack

Baremetal

Building and testing is managed by bazel, including dependencies to other repos such as containers (transparent to the end-user).

bazel build //...
bazel test //...

Using Docker

docker run -it --rm --cap-add SYS_PTRACE -v $(pwd):/src -v /tmp:/tmp/bazel docker.pkg.github.com/mihaigalos/docker/bazel /bin/zsh -c "cd /src && bazel --output_base=/tmp/bazel test //..."

Session Layer Authentification

The Session handshake is described in the following diagram:

ISO/OSI Layers (Rough Model).

Matter of principles

This code respects many of the Clean Code & Architecture Principles:

  • Composition over Inheritance
  • Dependency Injection
  • DMT
  • Docs as Code
  • DRY
  • FIRST
  • GRASP
  • KISS
  • Single Source of Truth
  • SoC
  • SOLID
  • TDD
  • Testing Pyramid

Releases

No releases published

Packages

No packages published

Languages