diff --git a/pkg/interfaces/kiss.go b/pkg/interfaces/kiss.go new file mode 100644 index 0000000..6f6a5bd --- /dev/null +++ b/pkg/interfaces/kiss.go @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: 0BSD +// Copyright (c) 2024-2026 Sudo-Ivan / Quad4.io +package interfaces + +const ( + KISS_FEND = 0xC0 + KISS_FESC = 0xDB + KISS_TFEND = 0xDC + KISS_TFESC = 0xDD +) + +func escapeKISS(data []byte) []byte { + escaped := make([]byte, 0, len(data)*2) + for _, b := range data { + if b == KISS_FEND { + escaped = append(escaped, KISS_FESC, KISS_TFEND) + } else if b == KISS_FESC { + escaped = append(escaped, KISS_FESC, KISS_TFESC) + } else { + escaped = append(escaped, b) + } + } + return escaped +} +