1use serde::Serialize;
2
3#[derive(Debug, Eq, PartialEq, thiserror::Error, Serialize, Clone)]
4pub enum AprsError {
5 #[error("Empty Callsign: {0}")]
6 EmptyCallsign(String),
7 #[error("Empty Callsign SSID: {0}")]
8 EmptySSID(String),
9 #[error("Invalid Callsign SSID: {0}")]
10 InvalidSSID(String),
11 #[error("Invalid Timestamp: {0}")]
12 InvalidTimestamp(String),
13 #[error("Unsupported Position Format: {0}")]
14 UnsupportedPositionFormat(String),
15 #[error("Invalid Position: {0}")]
16 InvalidPosition(String),
17 #[error("Invalid Latitude: {0}")]
18 InvalidLatitude(String),
19 #[error("Invalid Longitude: {0}")]
20 InvalidLongitude(String),
21 #[error("Invalid Packet: {0}")]
22 InvalidPacket(String),
23 #[error("Invalid Message Destination: {0}")]
24 InvalidMessageDestination(String),
25 #[error("Invalid Message ID: {0}")]
26 InvalidMessageId(String),
27 #[error("String contains non-ASCII characters: {0}")]
28 InvalidCoding(String),
29
30 #[error("Invalid Server comment: {0}")]
31 InvalidServerComment(String),
32
33 #[error("Timestamp out of range: {0}")]
34 TimestampOutOfRange(String),
35}
36
37#[derive(Debug, PartialEq, thiserror::Error)]
38pub enum EncodeError {
39 #[error("Invalid Latitude: {0}")]
40 InvalidLatitude(f64),
41 #[error("Invalid Longitude: {0}")]
42 InvalidLongitude(f64),
43 #[error("Invalid Aprs Data")]
44 InvalidData,
45 #[error(transparent)]
46 Format(#[from] std::fmt::Error),
47}