rsiot/components/cmp_esp_i2c_slave/
error.rs

1use crate::serde_utils::postcard_serde;
2use crate::{components::shared_tasks, executor::ComponentError};
3
4#[allow(missing_docs)]
5#[derive(Debug, thiserror::Error)]
6pub enum Error {
7    #[error("CmpOutput: {0}")]
8    CmpOutput(ComponentError),
9
10    #[error("FnOutput: {0}")]
11    FnInput(anyhow::Error),
12
13    #[error("FnOutput: {0}")]
14    FnOutput(anyhow::Error),
15
16    #[error("TokioTaskJoin: {0}")]
17    TokioTaskJoin(#[from] tokio::task::JoinError),
18
19    #[error(transparent)]
20    Postcard(#[from] postcard_serde::Error),
21
22    #[error("Error in fn_i2c_comm function: {0}")]
23    FnI2cComm(anyhow::Error),
24
25    #[error("Error writing to I2C buffer: {0}")]
26    WritingToI2cBuffer(esp_idf_svc::hal::sys::EspError),
27
28    #[error("Error reading from I2C buffer: {0}")]
29    ReadingFromI2cBuffer(esp_idf_svc::hal::sys::EspError),
30
31    #[error(transparent)]
32    TaskFilterIdenticalData(shared_tasks::filter_identical_data::Error),
33
34    #[error("{0}")]
35    TaskOutput(String),
36
37    #[error(transparent)]
38    TaskToMsgBus(shared_tasks::mpsc_to_msgbus::Error),
39}
40
41impl From<Error> for ComponentError {
42    fn from(value: Error) -> Self {
43        ComponentError::Execution(value.to_string())
44    }
45}