Skip to main content

rsiot/components/cmp_linux_can/
error.rs

1use std::io;
2
3use crate::{
4    components::shared_tasks, components_config::can_general::CanFrame, executor::ComponentError,
5};
6
7use super::COMPONENT_NAME;
8
9#[allow(missing_docs)]
10#[derive(Debug, thiserror::Error)]
11pub enum Error {
12    #[error("{COMPONENT_NAME} | FrameConversion: {0:?}")]
13    FrameConversion(CanFrame),
14
15    #[error("{COMPONENT_NAME} | InterfaceDetails: {0:?}")]
16    InterfaceDetails(String),
17
18    #[error("{COMPONENT_NAME} | InterfaceDown: {0:?}")]
19    InterfaceDown(String),
20
21    #[error("{COMPONENT_NAME} | InterfaceOpen: {0:?}")]
22    InterfaceOpen(String),
23
24    #[error("{COMPONENT_NAME} | InterfaceState: {0:?}")]
25    InterfaceState(String),
26
27    #[error("{COMPONENT_NAME} | InterfaceUp: {0:?}")]
28    InterfaceUp(String),
29
30    #[error("{COMPONENT_NAME} | InvalidId: {0}")]
31    InvalidId(u64),
32
33    #[error("{COMPONENT_NAME} | ProcessExecution: {0}")]
34    ProcessExecution(io::Error),
35
36    #[error("{COMPONENT_NAME} | ReadFrame: {0}")]
37    ReadFrame(socketcan::Error),
38
39    #[error("{COMPONENT_NAME} | ReadFrame: {0}")]
40    ReadFrame2(io::Error),
41
42    #[error("{COMPONENT_NAME} | SetFilters: {0}")]
43    SetFilters(io::Error),
44
45    #[error("{COMPONENT_NAME} | SocketOpen: {0}")]
46    SocketOpen(io::Error),
47
48    #[error("{COMPONENT_NAME} | Sudo: {0}")]
49    Sudo(String),
50
51    #[error("{COMPONENT_NAME} | TaskEnd")]
52    TaskEnd,
53
54    #[error("{COMPONENT_NAME} | TaskEndInput")]
55    TaskEndInput,
56
57    #[error("{COMPONENT_NAME} | TaskEndOutput")]
58    TaskEndOutput,
59
60    #[error("{COMPONENT_NAME} | TaskEndRecvFromCan")]
61    TaskEndRecvFromCan,
62
63    #[error("{COMPONENT_NAME} | TaskEndSendToCan")]
64    TaskEndSendToCan,
65
66    #[error("{COMPONENT_NAME} | TaskMpscToBroadcast")]
67    TaskMpscToBroadcast(#[from] shared_tasks::mpsc_to_broadcast::Error),
68
69    #[error("{COMPONENT_NAME} | TokioSyncMpscSend")]
70    TokioSyncMpscSend,
71
72    #[error("{COMPONENT_NAME} | TokioTaskJoin: {0}")]
73    TokioTaskJoin(#[from] tokio::task::JoinError),
74
75    #[error("{COMPONENT_NAME} | WriteFrame: {0}")]
76    WriteFrame(io::Error),
77
78    #[error("{COMPONENT_NAME} | WriteFrame: {0}")]
79    WriteFrame2(socketcan::Error),
80}
81
82impl From<Error> for ComponentError {
83    fn from(value: Error) -> Self {
84        ComponentError::Execution(value.to_string())
85    }
86}