Move ident manipulation into isolated block

This commit is contained in:
Greg Shuflin 2021-03-04 01:25:26 -08:00
parent 9015d9f8e0
commit 23fc703abd

View File

@ -64,23 +64,23 @@ unsafe fn set_active_device(d: *const radio_device_t) {
/// Connect to the radio via the serial port. /// Connect to the radio via the serial port.
/// and identify the type of device. /// and identify the type of device.
pub fn connect() -> Radio { pub fn connect() -> Radio {
unsafe {
let ident_str = {
let mut ident: *const c_char; let mut ident: *const c_char;
// Try TYT MD family. // Try TYT MD family.
ident = dfu_init(0x0483, 0xdf11); ident = unsafe { dfu_init(0x0483, 0xdf11) };
if ident.is_null() { if ident.is_null() {
// Try RD-5R, DM-1801 and GD-77. // Try RD-5R, DM-1801 and GD-77.
if hid_init(0x15a2, 0x0073) >= 0 { if unsafe { hid_init(0x15a2, 0x0073) } >= 0 {
ident = hid_identify(); ident = unsafe { hid_identify() };
} }
} }
if ident.is_null() { if ident.is_null() {
// Try AT-D868UV. // Try AT-D868UV.
let trace_flag = false; //TODO fix let trace_flag = false; //TODO fix
if let Some(device_path) = crate::serial::serial_init(0x28e9, 0x018a, trace_flag) { if let Some(device_path) = crate::serial::serial_init(0x28e9, 0x018a, trace_flag) {
let ptr = device_path.as_ptr() as *mut c_char; let ptr = device_path.as_ptr() as *mut c_char;
ident = serial_identify(ptr); ident = unsafe { serial_identify(ptr) };
} }
} }
@ -90,7 +90,10 @@ pub fn connect() -> Radio {
exit(-1); exit(-1);
} }
let ident_str = CStr::from_ptr(ident).to_str().unwrap(); unsafe { CStr::from_ptr(ident).to_str().unwrap().to_string() }
};
unsafe {
let mut device: *const radio_device_t = std::ptr::null(); let mut device: *const radio_device_t = std::ptr::null();