From 922d2a0cbd1406c0b437c0a062a8c04129d7dda4 Mon Sep 17 00:00:00 2001 From: xengineering Date: Thu, 30 May 2024 20:00:44 +0200 Subject: software: communication: Implement unslip() This implements to decode the Serial Line Internet Protocol (SLIP). It splits the continuous byte stream into frames. Based on these frames the rest of the data link layer and upper layers can be implemented. --- software/communication/data_link_test.go | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 software/communication/data_link_test.go (limited to 'software/communication/data_link_test.go') diff --git a/software/communication/data_link_test.go b/software/communication/data_link_test.go new file mode 100644 index 0000000..91b941d --- /dev/null +++ b/software/communication/data_link_test.go @@ -0,0 +1,33 @@ +package communication + +import ( + "reflect" + "testing" +) + +func TestUnslip(t *testing.T) { + input := []byte{ + 0xFF, 0x12, SLIP_END, + } + + bytes := make(chan byte) + frames := make(chan []byte) + + go func() { + for _, v := range input { + bytes <- v + } + }() + + go func() { + for { + frames <- unslip(bytes) + } + }() + + frame := <-frames + expected := []byte{0xFF, 0x12} + if !reflect.DeepEqual(frame, expected) { + t.Fatalf("Frame '%v' does not match expected '%v'\n", frame, expected) + } +} -- cgit v1.2.3-70-g09d2