lpc8xx_hal/spi/
interrupts.rs1use super::Instance;
2
3macro_rules! interrupts {
4 (
5 $(
6 $doc:expr,
7 $field:ident,
8 $reg_field:ident;
9 )*
10 ) => {
11 pub struct Interrupts {
18 $(
19 #[doc = $doc]
20 pub $field: bool,
21 )*
22 }
23
24 impl Interrupts {
25 pub(super) fn enable<I: Instance>(&self, spi: &I) {
26 spi.intenset.write(|w| {
27 $(
28 if self.$field {
29 w.$reg_field().set_bit();
30 }
31 )*
32
33 w
34 })
35 }
36
37 pub(super) fn disable<I: Instance>(&self, spi: &I) {
38 spi.intenclr.write(|w| {
39 $(
40 if self.$field {
41 w.$reg_field().set_bit();
42 }
43 )*
44
45 w
46 })
47 }
48 }
49
50 impl Default for Interrupts {
51 fn default() -> Self {
52 Self {
53 $(
54 $field: false,
55 )*
56 }
57 }
58 }
59 };
60}
61
62interrupts!(
63 "RX Ready", rx_ready, rxrdyen;
64 "TX Ready", tx_ready, txrdyen;
65 "Receiver Overrun", rx_overrun, rxoven;
66 "Transmitter Underrun", tx_underrun, txuren;
67 "Slave Select Asserted", slave_select_asserted, ssaen;
68 "Slave Select Deasserted", slave_select_deasserted, ssden;
69);