Fix iovar_get, unhardcode MAC addr.
This commit is contained in:
		
							
								
								
									
										18
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/lib.rs
									
									
									
									
									
								
							| @@ -11,6 +11,7 @@ mod events; | |||||||
| mod structs; | mod structs; | ||||||
|  |  | ||||||
| use core::cell::Cell; | use core::cell::Cell; | ||||||
|  | use core::cmp::{max, min}; | ||||||
| use core::slice; | use core::slice; | ||||||
| use core::sync::atomic::Ordering; | use core::sync::atomic::Ordering; | ||||||
| use core::task::Waker; | use core::task::Waker; | ||||||
| @@ -272,17 +273,12 @@ impl<'a> Control<'a> { | |||||||
|  |  | ||||||
|         self.set_iovar_u32("bus:txglom", 0).await; |         self.set_iovar_u32("bus:txglom", 0).await; | ||||||
|         self.set_iovar_u32("apsta", 1).await; |         self.set_iovar_u32("apsta", 1).await; | ||||||
|         //self.set_iovar("cur_etheraddr", &[02, 03, 04, 05, 06, 07]).await; |  | ||||||
|  |  | ||||||
|         // read MAC addr. |         // read MAC addr. | ||||||
|         let mut mac_addr = [0; 6]; |         let mut mac_addr = [0; 6]; | ||||||
|         assert_eq!(self.get_iovar("cur_etheraddr", &mut mac_addr).await, 6); |         assert_eq!(self.get_iovar("cur_etheraddr", &mut mac_addr).await, 6); | ||||||
|         info!("mac addr: {:02x}", mac_addr); |         info!("mac addr: {:02x}", mac_addr); | ||||||
|  |  | ||||||
|         // TODO get_iovar is broken, it returns all zeros. |  | ||||||
|         // Harcdode our own MAC for now. |  | ||||||
|         let mac_addr = [0x28, 0xCD, 0xC1, 0x00, 0x3F, 0x05]; |  | ||||||
|  |  | ||||||
|         let country = countries::WORLD_WIDE_XX; |         let country = countries::WORLD_WIDE_XX; | ||||||
|         let country_info = CountryInfo { |         let country_info = CountryInfo { | ||||||
|             country_abbrev: [country.code[0], country.code[1], 0, 0], |             country_abbrev: [country.code[0], country.code[1], 0, 0], | ||||||
| @@ -439,10 +435,12 @@ impl<'a> Control<'a> { | |||||||
|         buf[..name.len()].copy_from_slice(name.as_bytes()); |         buf[..name.len()].copy_from_slice(name.as_bytes()); | ||||||
|         buf[name.len()] = 0; |         buf[name.len()] = 0; | ||||||
|  |  | ||||||
|         let total_len = name.len() + 1 + res.len(); |         let total_len = max(name.len() + 1, res.len()); | ||||||
|         let res_len = self.ioctl(0, 262, 0, &mut buf[..total_len]).await - name.len() - 1; |         let res_len = self.ioctl(0, 262, 0, &mut buf[..total_len]).await; | ||||||
|         res[..res_len].copy_from_slice(&buf[name.len() + 1..][..res_len]); |  | ||||||
|         res_len |         let out_len = min(res.len(), res_len); | ||||||
|  |         res[..out_len].copy_from_slice(&buf[..out_len]); | ||||||
|  |         out_len | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async fn ioctl_set_u32(&mut self, cmd: u32, iface: u32, val: u32) { |     async fn ioctl_set_u32(&mut self, cmd: u32, iface: u32, val: u32) { | ||||||
| @@ -712,7 +710,7 @@ where | |||||||
|                         .await |                         .await | ||||||
|                         .unwrap(); |                         .unwrap(); | ||||||
|  |  | ||||||
|                     trace!("rx {:02x}", &buf[..(len as usize).min(48)]); |                     trace!("rx {:02x}", &slice8_mut(&mut buf)[..(len as usize).min(48)]); | ||||||
|  |  | ||||||
|                     self.rx(&slice8_mut(&mut buf)[..len as usize]); |                     self.rx(&slice8_mut(&mut buf)[..len as usize]); | ||||||
|                 } |                 } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user