aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 8c235b174..e42bae687 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -11,6 +11,7 @@ mod events;
11mod structs; 11mod structs;
12 12
13use core::cell::Cell; 13use core::cell::Cell;
14use core::cmp::{max, min};
14use core::slice; 15use core::slice;
15use core::sync::atomic::Ordering; 16use core::sync::atomic::Ordering;
16use core::task::Waker; 17use core::task::Waker;
@@ -272,17 +273,12 @@ impl<'a> Control<'a> {
272 273
273 self.set_iovar_u32("bus:txglom", 0).await; 274 self.set_iovar_u32("bus:txglom", 0).await;
274 self.set_iovar_u32("apsta", 1).await; 275 self.set_iovar_u32("apsta", 1).await;
275 //self.set_iovar("cur_etheraddr", &[02, 03, 04, 05, 06, 07]).await;
276 276
277 // read MAC addr. 277 // read MAC addr.
278 let mut mac_addr = [0; 6]; 278 let mut mac_addr = [0; 6];
279 assert_eq!(self.get_iovar("cur_etheraddr", &mut mac_addr).await, 6); 279 assert_eq!(self.get_iovar("cur_etheraddr", &mut mac_addr).await, 6);
280 info!("mac addr: {:02x}", mac_addr); 280 info!("mac addr: {:02x}", mac_addr);
281 281
282 // TODO get_iovar is broken, it returns all zeros.
283 // Harcdode our own MAC for now.
284 let mac_addr = [0x28, 0xCD, 0xC1, 0x00, 0x3F, 0x05];
285
286 let country = countries::WORLD_WIDE_XX; 282 let country = countries::WORLD_WIDE_XX;
287 let country_info = CountryInfo { 283 let country_info = CountryInfo {
288 country_abbrev: [country.code[0], country.code[1], 0, 0], 284 country_abbrev: [country.code[0], country.code[1], 0, 0],
@@ -439,10 +435,12 @@ impl<'a> Control<'a> {
439 buf[..name.len()].copy_from_slice(name.as_bytes()); 435 buf[..name.len()].copy_from_slice(name.as_bytes());
440 buf[name.len()] = 0; 436 buf[name.len()] = 0;
441 437
442 let total_len = name.len() + 1 + res.len(); 438 let total_len = max(name.len() + 1, res.len());
443 let res_len = self.ioctl(0, 262, 0, &mut buf[..total_len]).await - name.len() - 1; 439 let res_len = self.ioctl(0, 262, 0, &mut buf[..total_len]).await;
444 res[..res_len].copy_from_slice(&buf[name.len() + 1..][..res_len]); 440
445 res_len 441 let out_len = min(res.len(), res_len);
442 res[..out_len].copy_from_slice(&buf[..out_len]);
443 out_len
446 } 444 }
447 445
448 async fn ioctl_set_u32(&mut self, cmd: u32, iface: u32, val: u32) { 446 async fn ioctl_set_u32(&mut self, cmd: u32, iface: u32, val: u32) {
@@ -712,7 +710,7 @@ where
712 .await 710 .await
713 .unwrap(); 711 .unwrap();
714 712
715 trace!("rx {:02x}", &buf[..(len as usize).min(48)]); 713 trace!("rx {:02x}", &slice8_mut(&mut buf)[..(len as usize).min(48)]);
716 714
717 self.rx(&slice8_mut(&mut buf)[..len as usize]); 715 self.rx(&slice8_mut(&mut buf)[..len as usize]);
718 } 716 }