6
6
7
7
use crate :: timer:: TimerAlarm ;
8
8
use core:: cell:: Cell ;
9
- use kernel:: hil:: radio:: { self , PowerClient , RadioData } ;
9
+ use core:: convert:: TryFrom ;
10
+ use kernel;
11
+ use kernel:: hil:: radio:: { self , PowerClient , RadioChannel , RadioData } ;
10
12
use kernel:: hil:: time:: { Alarm , AlarmClient , Time } ;
11
13
use kernel:: utilities:: cells:: { OptionalCell , TakeCell } ;
12
14
use kernel:: utilities:: registers:: interfaces:: { Readable , Writeable } ;
@@ -92,77 +94,6 @@ pub const ACK_BUF_SIZE: usize = 6;
92
94
// to return the frame buffer.
93
95
const MIMIC_PSDU_OFFSET : u32 = 1 ;
94
96
95
- // IEEEStd 802.15.4-2011 Section 8.1.2.2
96
- // Frequency is 2405 + 5 * (k - 11) MHz, where k = 11, 12, ... , 26.
97
- #[ derive( PartialEq , Debug , Copy , Clone ) ]
98
- pub enum RadioChannel {
99
- DataChannel11 = 5 ,
100
- DataChannel12 = 10 ,
101
- DataChannel13 = 15 ,
102
- DataChannel14 = 20 ,
103
- DataChannel15 = 25 ,
104
- DataChannel16 = 30 ,
105
- DataChannel17 = 35 ,
106
- DataChannel18 = 40 ,
107
- DataChannel19 = 45 ,
108
- DataChannel20 = 50 ,
109
- DataChannel21 = 55 ,
110
- DataChannel22 = 60 ,
111
- DataChannel23 = 65 ,
112
- DataChannel24 = 70 ,
113
- DataChannel25 = 75 ,
114
- DataChannel26 = 80 ,
115
- }
116
-
117
- impl RadioChannel {
118
- pub fn get_channel_index ( & self ) -> u8 {
119
- match * self {
120
- RadioChannel :: DataChannel11 => 11 ,
121
- RadioChannel :: DataChannel12 => 12 ,
122
- RadioChannel :: DataChannel13 => 13 ,
123
- RadioChannel :: DataChannel14 => 14 ,
124
- RadioChannel :: DataChannel15 => 15 ,
125
- RadioChannel :: DataChannel16 => 16 ,
126
- RadioChannel :: DataChannel17 => 17 ,
127
- RadioChannel :: DataChannel18 => 18 ,
128
- RadioChannel :: DataChannel19 => 19 ,
129
- RadioChannel :: DataChannel20 => 20 ,
130
- RadioChannel :: DataChannel21 => 21 ,
131
- RadioChannel :: DataChannel22 => 22 ,
132
- RadioChannel :: DataChannel23 => 23 ,
133
- RadioChannel :: DataChannel24 => 24 ,
134
- RadioChannel :: DataChannel25 => 25 ,
135
- RadioChannel :: DataChannel26 => 26 ,
136
- }
137
- }
138
- }
139
-
140
- impl TryFrom < u8 > for RadioChannel {
141
- type Error = ( ) ;
142
-
143
- fn try_from ( val : u8 ) -> Result < RadioChannel , ( ) > {
144
- match val {
145
- 11 => Ok ( RadioChannel :: DataChannel11 ) ,
146
- 12 => Ok ( RadioChannel :: DataChannel12 ) ,
147
- 13 => Ok ( RadioChannel :: DataChannel13 ) ,
148
- 14 => Ok ( RadioChannel :: DataChannel14 ) ,
149
- 15 => Ok ( RadioChannel :: DataChannel15 ) ,
150
- 16 => Ok ( RadioChannel :: DataChannel16 ) ,
151
- 17 => Ok ( RadioChannel :: DataChannel17 ) ,
152
- 18 => Ok ( RadioChannel :: DataChannel18 ) ,
153
- 19 => Ok ( RadioChannel :: DataChannel19 ) ,
154
- 20 => Ok ( RadioChannel :: DataChannel20 ) ,
155
- 21 => Ok ( RadioChannel :: DataChannel21 ) ,
156
- 22 => Ok ( RadioChannel :: DataChannel22 ) ,
157
- 23 => Ok ( RadioChannel :: DataChannel23 ) ,
158
- 24 => Ok ( RadioChannel :: DataChannel24 ) ,
159
- 25 => Ok ( RadioChannel :: DataChannel25 ) ,
160
- 26 => Ok ( RadioChannel :: DataChannel26 ) ,
161
- _ => Err ( ( ) ) ,
162
- }
163
- }
164
- }
165
-
166
97
#[ repr( C ) ]
167
98
struct RadioRegisters {
168
99
/// Enable Radio in TX mode
@@ -768,7 +699,7 @@ impl<'a> Radio<'a> {
768
699
cca_count : Cell :: new ( 0 ) ,
769
700
cca_be : Cell :: new ( 0 ) ,
770
701
random_nonce : Cell :: new ( 0xDEADBEEF ) ,
771
- channel : Cell :: new ( RadioChannel :: DataChannel26 ) ,
702
+ channel : Cell :: new ( RadioChannel :: Channel26 ) ,
772
703
timer0 : OptionalCell :: empty ( ) ,
773
704
state : Cell :: new ( RadioState :: OFF ) ,
774
705
}
@@ -1279,7 +1210,7 @@ impl<'a> kernel::hil::radio::RadioConfig<'a> for Radio<'a> {
1279
1210
}
1280
1211
/// The 802.15.4 channel
1281
1212
fn get_channel ( & self ) -> u8 {
1282
- self . channel . get ( ) . get_channel_index ( )
1213
+ self . channel . get ( ) . get_channel_number ( )
1283
1214
}
1284
1215
1285
1216
//#################################################
@@ -1298,14 +1229,8 @@ impl<'a> kernel::hil::radio::RadioConfig<'a> for Radio<'a> {
1298
1229
self . pan . set ( id) ;
1299
1230
}
1300
1231
1301
- fn set_channel ( & self , chan : u8 ) -> Result < ( ) , ErrorCode > {
1302
- match RadioChannel :: try_from ( chan) {
1303
- Err ( ( ) ) => Err ( ErrorCode :: NOSUPPORT ) ,
1304
- Ok ( res) => {
1305
- self . channel . set ( res) ;
1306
- Ok ( ( ) )
1307
- }
1308
- }
1232
+ fn set_channel ( & self , chan : RadioChannel ) {
1233
+ self . channel . set ( chan) ;
1309
1234
}
1310
1235
1311
1236
fn set_tx_power ( & self , tx_power : i8 ) -> Result < ( ) , ErrorCode > {
0 commit comments