Skip to content

Commit af56cb6

Browse files
committed
partial refactor
1 parent 9d7cf4b commit af56cb6

File tree

3 files changed

+262
-85
lines changed

3 files changed

+262
-85
lines changed

Cargo.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ version = "0.1.0"
44
edition = "2021"
55
authors = ["Nick Brown <nick@altonimb.us>"]
66
categories = ["embedded", "no-std"]
7-
description = "Driver for HCMS-29XX and HCMS-39XX display ICs"
7+
description = "Platform agnostic driver for HCMS-29XX and HCMS-39XX display ICs"
8+
keywords = ["embedded-hal-driver", "no-std"]
89
license = "MIT"
910
repository = "https://github.com/nonik0/hcms-29xx"
1011
readme = "README.md"
@@ -22,6 +23,6 @@ version = "=1.0.79"
2223
#[[example]]
2324
#name = "arduino-uno"
2425

25-
#[dependencies.arduino-hal]
26+
#[dev-dependencies.arduino-hal]
2627
#path = "../../arduino-hal/"
2728
#features = ["arduino-uno"]

src/error.rs

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
use embedded_hal::digital::{self, ErrorType};
2+
3+
pub type Hcms29xxErr<DataPin, RsPin, ClkPin, CePin, BlankPin, OscSelPin, ResetPin> = Hcms29xxError<
4+
<DataPin as ErrorType>::Error,
5+
<RsPin as ErrorType>::Error,
6+
<ClkPin as ErrorType>::Error,
7+
<CePin as ErrorType>::Error,
8+
<BlankPin as ErrorType>::Error,
9+
<OscSelPin as ErrorType>::Error,
10+
<ResetPin as ErrorType>::Error,
11+
>;
12+
13+
#[derive(Debug)]
14+
pub enum Hcms29xxError<
15+
DataPinErr,
16+
RsPinErr,
17+
ClkPinErr,
18+
CePinErr,
19+
BlankPinErr,
20+
OscSelPinErr,
21+
ResetPinErr,
22+
> {
23+
PinNotConfigured,
24+
DataPinError(DataPinErr),
25+
RsPinError(RsPinErr),
26+
ClkPinError(ClkPinErr),
27+
CePinError(CePinErr),
28+
BlankPinError(BlankPinErr),
29+
OscSelPinError(OscSelPinErr),
30+
ResetPinError(ResetPinErr),
31+
}
32+
33+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
34+
Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
35+
where
36+
DataPinErr: core::fmt::Debug,
37+
RsPinErr: core::fmt::Debug,
38+
ClkPinErr: core::fmt::Debug,
39+
CePinErr: core::fmt::Debug,
40+
BlankPinErr: core::fmt::Debug,
41+
OscSelPinErr: core::fmt::Debug,
42+
ResetPinErr: core::fmt::Debug,
43+
{
44+
fn kind(&self) -> digital::ErrorKind {
45+
digital::ErrorKind::Other
46+
}
47+
}
48+
49+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<DataPinErr>
50+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
51+
where
52+
DataPinErr: core::fmt::Debug,
53+
{
54+
fn from(err: DataPinErr) -> Self {
55+
Hcms29xxError::DataPinError(err)
56+
}
57+
}
58+
59+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<RsPinErr>
60+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
61+
where
62+
RsPinErr: core::fmt::Debug,
63+
{
64+
fn from(err: RsPinErr) -> Self {
65+
Hcms29xxError::RsPinError(err)
66+
}
67+
}
68+
69+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<ClkPinErr>
70+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
71+
where
72+
ClkPinErr: core::fmt::Debug,
73+
{
74+
fn from(err: ClkPinErr) -> Self {
75+
Hcms29xxError::ClkPinError(err)
76+
}
77+
}
78+
79+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<CePinErr>
80+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
81+
where
82+
CePinErr: core::fmt::Debug,
83+
{
84+
fn from(err: CePinErr) -> Self {
85+
Hcms29xxError::CePinError(err)
86+
}
87+
}
88+
89+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<BlankPinErr>
90+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
91+
where
92+
BlankPinErr: core::fmt::Debug,
93+
{
94+
fn from(err: BlankPinErr) -> Self {
95+
Hcms29xxError::BlankPinError(err)
96+
}
97+
}
98+
99+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<OscSelPinErr>
100+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
101+
where
102+
OscSelPinErr: core::fmt::Debug,
103+
{
104+
fn from(err: OscSelPinErr) -> Self {
105+
Hcms29xxError::OscSelPinError(err)
106+
}
107+
}
108+
109+
impl<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr> From<ResetPinErr>
110+
for Hcms29xxError<DataPinErr, RsPinErr, ClkPinErr, CePinErr, BlankPinErr, OscSelPinErr, ResetPinErr>
111+
where
112+
ResetPinErr: core::fmt::Debug,
113+
{
114+
fn from(err: ResetPinErr) -> Self {
115+
Hcms29xxError::ResetPinError(err)
116+
}
117+
}

0 commit comments

Comments
 (0)