struct _DISCOVERED {
int protocol;
int device;
- int use_tcp; // use TCP rather than UDP to connect to radio
char name[64];
int software_version;
int status;
int supported_receivers;
- int supported_transmitters;
- int adcs;
- int dacs;
double frequency_min;
double frequency_max;
struct network {
struct sockaddr_in interface_netmask;
char interface_name[64];
} network;
+ int use_tcp;
};
typedef struct _DISCOVERED DISCOVERED;
#endif
#include "discovered.h"
-#include "p1_discovery.h"
#include "main.h"
#include "radio.h"
#ifdef USBOZY
static GtkWidget *discovery_dialog;
static DISCOVERED *d;
+extern int discover_devices_ffi(DISCOVERED *devices, int);
GtkWidget *tcpaddr;
#define IPADDR_LEN 20
#endif
if(enable_protocol_1) {
- status_text("Protocol 1 ... Discovering Devices");
- p1_discovery();
+ log_info("Protocol 1 ... Discovering Devices");
+ // p1_discovery();
+ devices = discover_devices_ffi(discovered, MAX_DEVICES);
}
/* if(enable_protocol_2) { */
/* new_discovery(); */
/* } */
- status_text("Discovery");
+ log_info("Discovery");
log_info("discovery: found %d devices", devices);
gdk_window_set_cursor(gtk_widget_get_window(top_window),gdk_cursor_new(GDK_ARROW));
return None;
}
- let device_type = data[10];
+ let device_type: i32 = data[10] as i32;
let (name, freq_min, freq_max) = match device_type {
0x00 => ("Metis", 0.0, 61440000.0),
0x01 => ("Hermes", 0.0, 61440000.0),
mac_addr.copy_from_slice(&data[3..9]);
Some(DiscoveredDevice {
- protocol: 1,
+ protocol: 0,
device: device_type,
name: name.to_string(),
- software_version: data[9],
- status: data[2] as u32,
+ software_version: data[9] as i32,
+ status: data[2] as i32,
supported_receivers: 2,
frequency_min: freq_min,
frequency_max: freq_max,
-use std::ffi::CString;
-use libc::{c_char, c_int, sockaddr_in};
+use std::ffi::{c_char, c_int, c_double, CString};
+use libc::{sockaddr_in};
use crate::{discover_devices, discovery::list_interfaces, DiscoveredDevice, NetworkInfo};
use std::net::SocketAddr;
#[repr(C)]
pub struct CFfiDiscoveredDevice {
- protocol: u32,
- device: u8,
- name: [c_char; 32],
- software_version: u8,
- status: u32,
- supported_receivers: u32,
- frequency_min: f64,
- frequency_max: f64,
+ protocol: c_int,
+ device: c_int,
+ name: [c_char; 64],
+ software_version: c_int,
+ status: c_int,
+ supported_receivers: c_int,
+ frequency_min: c_double,
+ frequency_max: c_double,
network: CFfiNetworkInfo,
use_tcp: c_int,
}
fn convert_to_c_device(device: &DiscoveredDevice) -> CFfiDiscoveredDevice {
let name_c = CString::new(device.name.clone()).unwrap();
- let mut name_arr = [0i8; 32];
+ let mut name_arr = [0i8; 64];
for (i, &b) in name_c.as_bytes().iter().enumerate().take(31) {
name_arr[i] = b as i8;
}
#[derive(Debug, Clone)]
pub struct DiscoveredDevice {
- pub protocol: u32,
- pub device: u8,
+ pub protocol: i32,
+ pub device: i32,
pub name: String,
- pub software_version: u8,
- pub status: u32,
- pub supported_receivers: u32,
+ pub software_version: i32,
+ pub status: i32,
+ pub supported_receivers: i32,
pub frequency_min: f64,
pub frequency_max: f64,
pub network: NetworkInfo,