ham_cats/
error.rs

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}