1use snafu::prelude::*;
2
3#[derive(Debug, Snafu)]
4pub enum DecodeError {
5 #[snafu(display("Unexpected end of input"))]
6 UnexpectedEndOfInput,
7
8 #[snafu(display("Malformed whisker at position `{}`", position))]
9 MalformedWhisker { position: usize },
10
11 #[snafu(display("Duplicate whisker at position `{}`", position))]
12 DuplicateWhisker { position: usize },
13
14 #[snafu(display("Comment data is not valid UTF-8"))]
15 InvalidComment,
16
17 #[snafu(display("CRC checksum mismatch"))]
18 CrcMismatch,
19
20 #[snafu(display("LDPC Decode error"))]
21 LdpcError,
22
23 #[snafu(display("Given data does not fit in the CATS packet"))]
24 Overflow,
25}
26
27#[derive(Debug, Snafu)]
28pub enum EncodeError {
29 #[snafu(display("New data is a duplicate of an existing data"))]
30 DuplicateData,
31
32 #[snafu(display("Given data causes CATS packet to overflow"))]
33 CatsOverflow,
34}
35
36#[derive(Debug, Snafu)]
37pub enum CommentError {
38 #[snafu(display("CATS packet does not have comment data"))]
39 NoComment,
40
41 #[snafu(display("Given buffer too small for comment data"))]
42 BufferOverflow,
43}
44
45#[derive(Debug, Snafu)]
46pub enum DigipeatError {
47 #[snafu(display("No route"))]
48 NoRoute,
49
50 #[snafu(display("Identification is us"))]
51 Us,
52
53 #[snafu(display("Max hops hit"))]
54 MaxHops,
55
56 #[snafu(display("Already digipeated by this node"))]
57 AlreadyDigipeated,
58
59 #[snafu(display("Future hop(s) are already set"))]
60 SetDestiny,
61}
62
63#[derive(Debug, Snafu, PartialEq, Eq)]
64pub enum AppendNodeError {
65 #[snafu(display("Future hop(s) already set to a different node"))]
66 SetFuture,
67
68 #[snafu(display("Max hops hit"))]
69 HopsOverflow,
70
71 #[snafu(display("Node already in route"))]
72 DuplicateNode,
73
74 #[snafu(display("Given data causes the route whisker to overflow"))]
75 RouteOverflow,
76}
77
78#[derive(Debug, Snafu, PartialEq, Eq)]
79pub enum PacketRouteAppendError {
80 #[snafu(display("No route whisker on packet"))]
81 NoRouteWhisker,
82
83 #[snafu(display("Route error: `{error}`"))]
84 Route { error: AppendNodeError },
85
86 #[snafu(display("CATS packet overflow"))]
87 PacketOverflow,
88}