@@ -20,7 +20,9 @@ use nb;
20
20
/// impl Channel<Adc1> for Gpio1Pin1<Analog> {
21
21
/// type ID = u8; // ADC channels are identified numerically
22
22
///
23
- /// const CHANNEL: u8 = 7_u8; // GPIO pin 1 is connected to ADC channel 7
23
+ /// fn channel(&self) -> Self::ID {
24
+ /// 7_u8 // GPIO pin 1 is connected to ADC channel 7
25
+ /// }
24
26
/// }
25
27
///
26
28
/// struct Adc2; // ADC with two banks of 16 channels
@@ -31,7 +33,9 @@ use nb;
31
33
/// impl Channel<Adc2> for Gpio2PinA<AltFun> {
32
34
/// type ID = (u8, u8); // ADC channels are identified by bank number and channel number
33
35
///
34
- /// const CHANNEL: (u8, u8) = (0, 3); // bank 0 channel 3
36
+ /// fn channel(&self) -> Self::ID {
37
+ /// (0, 3) // bank 0 channel 3
38
+ /// }
35
39
/// }
36
40
/// ```
37
41
pub trait Channel < ADC > {
@@ -44,7 +48,7 @@ pub trait Channel<ADC> {
44
48
45
49
/// Get the specific ID that identifies this channel, for example `0_u8` for the first ADC
46
50
/// channel, if Self::ID is u8.
47
- const CHANNEL : Self :: ID ;
51
+ fn channel ( & self ) -> Self :: ID ;
48
52
}
49
53
50
54
/// ADCs that sample on single channels per request, and do so at the time of the request.
@@ -69,8 +73,8 @@ pub trait Channel<ADC> {
69
73
/// {
70
74
/// type Error = ();
71
75
///
72
- /// fn try_read(&mut self, _pin : &mut PIN) -> nb::Result<WORD, Self::Error> {
73
- /// let chan = 1 << PIN::CHANNEL ;
76
+ /// fn try_read(&mut self, pin : &mut PIN) -> nb::Result<WORD, Self::Error> {
77
+ /// let chan = 1 << pin.channel() ;
74
78
/// self.power_up();
75
79
/// let result = self.do_conversion(chan);
76
80
/// self.power_down();
0 commit comments