1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#![no_std]
#![allow(clippy::new_without_default)]
#![allow(dead_code)]

// Error if not target feature provided
#[cfg(not(any(
    feature = "xmc4100",
    feature = "xmc4200",
    feature = "xmc4300",
    feature = "xmc4400",
    feature = "xmc4500",
    feature = "xmc4700",
    feature = "xmc4800",
)))]
compile_error!("Target not provided. Give `--features <target>` is required.");

// Error if more than one target feature provided
#[cfg(any(
    all(feature = "xmc4100", feature = "xmc4200"),
    all(feature = "xmc4100", feature = "xmc4300"),
    all(feature = "xmc4100", feature = "xmc4400"),
    all(feature = "xmc4100", feature = "xmc4500"),
    all(feature = "xmc4100", feature = "xmc4700"),
    all(feature = "xmc4100", feature = "xmc4800"),
    all(feature = "xmc4200", feature = "xmc4300"),
    all(feature = "xmc4200", feature = "xmc4400"),
    all(feature = "xmc4200", feature = "xmc4500"),
    all(feature = "xmc4200", feature = "xmc4700"),
    all(feature = "xmc4200", feature = "xmc4800"),
    all(feature = "xmc4300", feature = "xmc4400"),
    all(feature = "xmc4300", feature = "xmc4500"),
    all(feature = "xmc4300", feature = "xmc4700"),
    all(feature = "xmc4300", feature = "xmc4800"),
    all(feature = "xmc4400", feature = "xmc4500"),
    all(feature = "xmc4400", feature = "xmc4700"),
    all(feature = "xmc4400", feature = "xmc4800"),
    all(feature = "xmc4500", feature = "xmc4700"),
    all(feature = "xmc4500", feature = "xmc4800"),
    all(feature = "xmc4700", feature = "xmc4800"),
))]
compile_error!("Multiple targets specified. Can only specify `--features <target>` once.");

#[macro_use]
pub mod macros;

pub mod delay;
pub mod time;

#[cfg(feature = "xmc4100")]
pub use xmc4100;
#[cfg(feature = "xmc4100")]
pub use xmc4100 as pac;

#[cfg(feature = "xmc4200")]
pub use xmc4200;
#[cfg(feature = "xmc4200")]
pub use xmc4200 as pac;

#[cfg(feature = "xmc4300")]
pub use xmc4300;
#[cfg(feature = "xmc4300")]
pub use xmc4300 as pac;

#[cfg(feature = "xmc4400")]
pub use xmc4400;
#[cfg(feature = "xmc4400")]
pub use xmc4400 as pac;

#[cfg(feature = "xmc4500")]
pub use xmc4500;
#[cfg(feature = "xmc4500")]
pub use xmc4500 as pac;

#[cfg(feature = "xmc4700")]
pub use xmc4700;
#[cfg(feature = "xmc4700")]
pub use xmc4700 as pac;

#[cfg(feature = "xmc4800")]
pub use xmc4800;
#[cfg(feature = "xmc4800")]
pub use xmc4800 as pac;

#[cfg(feature = "device-selected")]
pub mod can;
#[cfg(feature = "device-selected")]
pub mod ccu40;
#[cfg(feature = "device-selected")]
pub mod ccu80;
#[cfg(feature = "device-selected")]
pub mod dac;
#[cfg(feature = "device-selected")]
pub mod dlr;

#[cfg(feature = "ecat")]
pub mod ecat;

#[cfg(feature = "device-selected")]
pub mod eru;
#[cfg(feature = "device-selected")]
pub mod fce;
#[cfg(feature = "device-selected")]
pub mod flash;
#[cfg(feature = "device-selected")]
pub mod gpdma;
#[cfg(feature = "device-selected")]
pub mod hrpwm;
#[cfg(feature = "device-selected")]
pub mod ledts;
#[cfg(feature = "device-selected")]
pub mod pba;
#[cfg(feature = "device-selected")]
pub mod pmu;
#[cfg(feature = "device-selected")]
pub mod port;
#[cfg(feature = "device-selected")]
pub mod posif;
#[cfg(feature = "device-selected")]
pub mod ppb;
#[cfg(feature = "device-selected")]
pub mod pref;
#[cfg(feature = "device-selected")]
pub mod rtc;

#[cfg(feature = "sdmmc")]
pub mod sdmmc;

#[cfg(feature = "device-selected")]
pub mod scu;
#[cfg(feature = "device-selected")]
pub mod usb;
#[cfg(feature = "device-selected")]
pub mod usic;
#[cfg(feature = "device-selected")]
pub mod vadc;
#[cfg(feature = "device-selected")]
pub mod wdt;

#[cfg(test)]
mod tests {

    #[test]
    fn nothing() {
        // Do nothing test
    }
}