]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
protocol1 discovery named to p1_discovery and likewise for p2
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 5 Dec 2024 15:35:03 +0000 (21:05 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 5 Dec 2024 15:35:03 +0000 (21:05 +0530)
Simplified the DISCOVERED struct a bit.

12 files changed:
Makefile
about_menu.c
discovered.h
discovery.c
new_protocol.c
new_protocol_programmer.c
old_protocol.c
p1_discovery.c
p1_discovery.h
p2_discovery.c
p2_discovery.h
radio.c

index a031d3d0e23463514dfb6d0ee774ac421dfb9d55..adb079adbea0043fbb37fde9c4e8e2686a835f42 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ GIT_VERSION := $(shell git describe --abbrev=0 --tags --always)
 #    CONTROLLER2_V1 single encoders with MCP23017 switches
 #    CONTROLLER2_V2 dual encoders with MCP23017 switches
 #
-GPIO_INCLUDE=GPIO
+GPIO_INCLUDE=GPIO
 
 # uncomment if level control (power output) is software based
 # LEVEL_CTRL=SW_LEVEL_CTRL
@@ -183,7 +183,7 @@ COMPILE=$(CC) $(CFLAGS) $(OPTIONS) $(INCLUDES)
 
 PROGRAM=pihpsdr
 
-SRC = $(filter-out hpsdrsim.c mac_midi.c midi2.c midi_menu.c ps_menu.c server_menu.c soundio.c ozyio.c newhpsdrsim.c beep.c alsa_midi.c iambic.c  pulseaudio.c frequency.c audio.c client_server.c freqent_menu.c general_menu.c gpio_mraa.c, $(wildcard *.c))
+SRC = $(filter-out hpsdrsim.c mac_midi.c midi2.c midi_menu.c ps_menu.c server_menu.c soundio.c ozyio.c newhpsdrsim.c beep.c alsa_midi.c iambic.c  pulseaudio.c frequency.c audio.c client_server.c freqent_menu.c general_menu.c gpio_mraa.c hpsdr_discovery.c, $(wildcard *.c))
 HEADERS = $(wildcard *.h)
 OBJS = $(SRC:.c=.o)
 
index 984b74290708d2d4ddaba3996c5b68b21ddbc012..5958c36b418ad774caae280ecaa5b56d451790b3 100644 (file)
@@ -117,17 +117,17 @@ void about_menu(GtkWidget *parent) {
       } else {
 #endif
         
-        strcpy(addr,inet_ntoa(radio->info.network.address.sin_addr));
-        strcpy(interface_addr,inet_ntoa(radio->info.network.interface_address.sin_addr));
+        strcpy(addr,inet_ntoa(radio->network.address.sin_addr));
+        strcpy(interface_addr,inet_ntoa(radio->network.interface_address.sin_addr));
         sprintf(line,"\nDevice Mac Address: %02X:%02X:%02X:%02X:%02X:%02X",
-                radio->info.network.mac_address[0],
-                radio->info.network.mac_address[1],
-                radio->info.network.mac_address[2],
-                radio->info.network.mac_address[3],
-                radio->info.network.mac_address[4],
-                radio->info.network.mac_address[5]);
+                radio->network.mac_address[0],
+                radio->network.mac_address[1],
+                radio->network.mac_address[2],
+                radio->network.mac_address[3],
+                radio->network.mac_address[4],
+                radio->network.mac_address[5]);
         strcat(text,line);
-        sprintf(line,"\nDevice IP Address: %s on %s (%s)",addr,radio->info.network.interface_name,interface_addr);
+        sprintf(line,"\nDevice IP Address: %s on %s (%s)",addr,radio->network.interface_name,interface_addr);
         strcat(text,line);
 
 #ifdef USBOZY
index 347a29ba4f1577d77c45b3973ba12eb026d09717..47623a743067704a2bb3455d78cf4b20a2f424f7 100644 (file)
@@ -69,17 +69,15 @@ struct _DISCOVERED {
     int dacs;
     double frequency_min;
     double frequency_max;
-    union {
-      struct network {
+    struct network {
         unsigned char mac_address[6];
-        int address_length;
+        // int address_length;
         struct sockaddr_in address;
         int interface_length;
         struct sockaddr_in interface_address;
         struct sockaddr_in interface_netmask;
         char interface_name[64];
-      } network;
-    } info;
+    } network;
 };
 
 typedef struct _DISCOVERED DISCOVERED;
index aa43249fd81de5b3f3770ae1ae2564b13971fb11..c3875deb9807cebb9c375792ac1916c7724e8704 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <gtk/gtk.h>
 #include <gdk/gdk.h>
-#include <math.h>
+
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
@@ -37,8 +37,7 @@
 #endif
 
 #include "discovered.h"
-#include "old_discovery.h"
-#include "new_discovery.h"
+#include "p1_discovery.h"
 #include "main.h"
 #include "radio.h"
 #ifdef USBOZY
 #ifdef CLIENT_SERVER
 #include "client_server.h"
 #endif
-#include "property.h"
 #include "log.h"
 
 static GtkWidget *discovery_dialog;
 static DISCOVERED *d;
 
+
 GtkWidget *tcpaddr;
 #define IPADDR_LEN 20
 static char ipaddr_tcp_buf[IPADDR_LEN] = "10.10.10.10";
@@ -260,58 +259,58 @@ static gboolean connect_cb (GtkWidget *widget, GdkEventButton *event, gpointer d
 }
 #endif
 
-void discovery() {
-//fprintf(stderr,"discovery\n");
-
-  protocols_restore_state();
-
-  selected_device=0;
-  devices=0;
-
-  // Try to locate IP addr
-  FILE *fp=fopen("ip.addr","r");
-  if (fp) {
-    fgets(ipaddr_tcp, IPADDR_LEN,fp);
-    fclose(fp);
-    ipaddr_tcp[IPADDR_LEN-1]=0;
-    // remove possible trailing newline char in ipaddr_tcp
-    int len=strnlen(ipaddr_tcp,IPADDR_LEN);
-    while (--len >= 0) {
-       if (ipaddr_tcp[len] != '\n')
-           break;
-       ipaddr_tcp[len]=0;
+void discovery(void) {
+    //fprintf(stderr,"discovery\n");
+    protocols_restore_state();
+
+    selected_device=0;
+    devices=0;
+
+    // Try to locate IP addr
+    FILE *fp = fopen("ip.addr","r");
+    if (fp) {
+       fgets(ipaddr_tcp, IPADDR_LEN,fp);
+       fclose(fp);
+       ipaddr_tcp[IPADDR_LEN-1]=0;
+       // remove possible trailing newline char in ipaddr_tcp
+       int len = strnlen(ipaddr_tcp,IPADDR_LEN);
+       while (--len >= 0) {
+           if (ipaddr_tcp[len] != '\n')
+               break;
+           ipaddr_tcp[len]=0;
+       }
     }
-  }
+
 #ifdef USBOZY
 //
 // first: look on USB for an Ozy
 //
-  log_trace("looking for USB based OZY devices");
-
-  if (ozy_discover() != 0)
-  {
-    discovered[devices].protocol = ORIGINAL_PROTOCOL;
-    discovered[devices].device = DEVICE_OZY;
-    discovered[devices].software_version = 10;              // we can't know yet so this isn't a real response
-    discovered[devices].status = STATE_AVAILABLE;
-    strcpy(discovered[devices].name,"Ozy on USB");
-
-    strcpy(discovered[devices].info.network.interface_name,"USB");
-    devices++;
-  }
+    log_trace("looking for USB based OZY devices");
+
+    if (ozy_discover() != 0)
+    {
+       discovered[devices].protocol = ORIGINAL_PROTOCOL;
+       discovered[devices].device = DEVICE_OZY;
+       discovered[devices].software_version = 10;              // we can't know yet so this isn't a real response
+       discovered[devices].status = STATE_AVAILABLE;
+       strcpy(discovered[devices].name,"Ozy on USB");
+
+       strcpy(discovered[devices].info.network.interface_name,"USB");
+       devices++;
+    }
 #endif
 
-  if(enable_protocol_1) {
-    status_text("Protocol 1 ... Discovering Devices");
-    old_discovery();
-  }
+    if(enable_protocol_1) {
+       status_text("Protocol 1 ... Discovering Devices");
+       p1_discovery();
+    }
 
-  /* if(enable_protocol_2) { */
-  /*   status_text("Protocol 2 ... Discovering Devices"); */
-  /*   new_discovery(); */
-  /* } */
+    /* if(enable_protocol_2) { */
+    /*   status_text("Protocol 2 ... Discovering Devices"); */
+    /*   new_discovery(); */
+    /* } */
 
-  status_text("Discovery");
+    status_text("Discovery");
   
     log_info("discovery: found %d devices", devices);
     gdk_window_set_cursor(gtk_widget_get_window(top_window),gdk_cursor_new(GDK_ARROW));
@@ -366,14 +365,14 @@ void discovery() {
                             d->name,
                             d->protocol==ORIGINAL_PROTOCOL?"Protocol 1":"Protocol 2",
                             version,
-                            inet_ntoa(d->info.network.address.sin_addr),
-                            d->info.network.mac_address[0],
-                            d->info.network.mac_address[1],
-                            d->info.network.mac_address[2],
-                            d->info.network.mac_address[3],
-                            d->info.network.mac_address[4],
-                            d->info.network.mac_address[5],
-                            d->info.network.interface_name);
+                            inet_ntoa(d->network.address.sin_addr),
+                            d->network.mac_address[0],
+                            d->network.mac_address[1],
+                            d->network.mac_address[2],
+                            d->network.mac_address[3],
+                            d->network.mac_address[4],
+                            d->network.mac_address[5],
+                            d->network.interface_name);
 #ifdef USBOZY
             }
 #endif
@@ -399,7 +398,7 @@ void discovery() {
         }
 
           // if not on the same subnet then cannot start it
-          if((d->info.network.interface_address.sin_addr.s_addr&d->info.network.interface_netmask.sin_addr.s_addr) != (d->info.network.address.sin_addr.s_addr&d->info.network.interface_netmask.sin_addr.s_addr)) {
+          if((d->network.interface_address.sin_addr.s_addr&d->network.interface_netmask.sin_addr.s_addr) != (d->network.address.sin_addr.s_addr&d->network.interface_netmask.sin_addr.s_addr)) {
             gtk_button_set_label(GTK_BUTTON(start_button),"Subnet!");
             gtk_widget_set_sensitive(start_button, FALSE);
           }
index 755874ffbca0bff39d326535d3832e8c237d636d..d3018a2c5fe318125e697db55ec3575871576689 100644 (file)
@@ -503,50 +503,50 @@ void new_protocol_init(int pixels) {
     setsockopt(data_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
 
     // bind to the interface
-    if(bind(data_socket,(struct sockaddr*)&radio->info.network.interface_address,radio->info.network.interface_length)<0) {
+    if(bind(data_socket,(struct sockaddr*)&radio->network.interface_address,radio->network.interface_length)<0) {
         g_print("metis: bind socket failed for data_socket\n");
         exit(-1);
     }
 
-g_print("new_protocol_init: data_socket %d bound to interface %s:%d\n",data_socket,inet_ntoa(radio->info.network.interface_address.sin_addr),ntohs(radio->info.network.interface_address.sin_port));
+g_print("new_protocol_init: data_socket %d bound to interface %s:%d\n",data_socket,inet_ntoa(radio->network.interface_address.sin_addr),ntohs(radio->network.interface_address.sin_port));
 
-    memcpy(&base_addr,&radio->info.network.address,radio->info.network.address_length);
-    base_addr_length=radio->info.network.address_length;
+    memcpy(&base_addr,&radio->network.address,radio->network.address_length);
+    base_addr_length=radio->network.address_length;
     base_addr.sin_port=htons(GENERAL_REGISTERS_FROM_HOST_PORT);
 
-//g_print("base_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("base_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&receiver_addr,&radio->info.network.address,radio->info.network.address_length);
-    receiver_addr_length=radio->info.network.address_length;
+    memcpy(&receiver_addr,&radio->network.address,radio->network.address_length);
+    receiver_addr_length=radio->network.address_length;
     receiver_addr.sin_port=htons(RECEIVER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
-//g_print("receive_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("receive_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&transmitter_addr,&radio->info.network.address,radio->info.network.address_length);
-    transmitter_addr_length=radio->info.network.address_length;
+    memcpy(&transmitter_addr,&radio->network.address,radio->network.address_length);
+    transmitter_addr_length=radio->network.address_length;
     transmitter_addr.sin_port=htons(TRANSMITTER_SPECIFIC_REGISTERS_FROM_HOST_PORT);
-//g_print("transmit_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("transmit_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&high_priority_addr,&radio->info.network.address,radio->info.network.address_length);
-    high_priority_addr_length=radio->info.network.address_length;
+    memcpy(&high_priority_addr,&radio->network.address,radio->network.address_length);
+    high_priority_addr_length=radio->network.address_length;
     high_priority_addr.sin_port=htons(HIGH_PRIORITY_FROM_HOST_PORT);
-//g_print("high_priority_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("high_priority_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
 //g_print("new_protocol_thread: high_priority_addr setup for port %d\n",HIGH_PRIORITY_FROM_HOST_PORT);
 
-    memcpy(&audio_addr,&radio->info.network.address,radio->info.network.address_length);
-    audio_addr_length=radio->info.network.address_length;
+    memcpy(&audio_addr,&radio->network.address,radio->network.address_length);
+    audio_addr_length=radio->network.address_length;
     audio_addr.sin_port=htons(AUDIO_FROM_HOST_PORT);
-//g_print("audio_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("audio_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
-    memcpy(&iq_addr,&radio->info.network.address,radio->info.network.address_length);
-    iq_addr_length=radio->info.network.address_length;
+    memcpy(&iq_addr,&radio->network.address,radio->network.address_length);
+    iq_addr_length=radio->network.address_length;
     iq_addr.sin_port=htons(TX_IQ_FROM_HOST_PORT);
-//g_print("iq_addr=%s\n",inet_ntoa(radio->info.network.address.sin_addr));
+//g_print("iq_addr=%s\n",inet_ntoa(radio->network.address.sin_addr));
 
 
     for(i=0;i<MAX_DDC;i++) {
-        memcpy(&data_addr[i],&radio->info.network.address,radio->info.network.address_length);
-        data_addr_length[i]=radio->info.network.address_length;
+        memcpy(&data_addr[i],&radio->network.address,radio->network.address_length);
+        data_addr_length[i]=radio->network.address_length;
         data_addr[i].sin_port=htons(RX_IQ_TO_HOST_PORT_0+i);
     }
 
index 1b2651955fd00c45fe7e901729b642acc9dbb82e..c898b8526baf8bae55abea46807b38f832d19fd2 100644 (file)
@@ -66,8 +66,8 @@ void new_protocol_programmer(char *filename ) {
 
     DISCOVERED* d=&discovered[selected_device];
 
-    memcpy(&program_addr,&d->info.network.address,d->info.network.address_length);
-    program_addr_length=d->info.network.address_length;
+    memcpy(&program_addr,&d->network.address,d->network.address_length);
+    program_addr_length=d->network.address_length;
     program_addr.sin_port=htons(PROGRAMMING_FROM_HOST_PORT);
 
     FILE *fp;
index f8f29f720280b716fa622881f34c719a4793a682..5de8d96d051f5290920b31d212e8cc8733260bb3 100644 (file)
@@ -404,13 +404,13 @@ static void open_udp_socket() {
     }
 
     // bind to the interface
-    log_trace("binding UDP socket to %s:%d\n",inet_ntoa(radio->info.network.interface_address.sin_addr),ntohs(radio->info.network.interface_address.sin_port));
-    if(bind(tmp,(struct sockaddr*)&radio->info.network.interface_address,radio->info.network.interface_length)<0) {
+    log_trace("binding UDP socket to %s:%d\n",inet_ntoa(radio->network.interface_address.sin_addr),ntohs(radio->network.interface_address.sin_port));
+    if(bind(tmp,(struct sockaddr*)&radio->network.interface_address,radio->network.interface_length)<0) {
        log_error("old_protocol: bind socket failed for data_socket: %s", strerror(errno));
        exit(-1);
     }
 
-    memcpy(&data_addr,&radio->info.network.address,radio->info.network.address_length);
+    memcpy(&data_addr,&radio->network.address,radio->network.address_length);
     data_addr.sin_port=htons(DATA_PORT);
     data_socket=tmp;
     log_trace("%s: UDP socket established: %d for %s:%d",__FUNCTION__,data_socket,inet_ntoa(data_addr.sin_addr),ntohs(data_addr.sin_port));
@@ -425,10 +425,10 @@ static void open_tcp_socket() {
       usleep(100000);
       close(tmp);
     }
-    memcpy(&data_addr,&radio->info.network.address,radio->info.network.address_length);
+    memcpy(&data_addr,&radio->network.address,radio->network.address_length);
     data_addr.sin_port=htons(DATA_PORT);
     data_addr.sin_family = AF_INET;
-    log_trace("Trying to open TCP connection to %s", inet_ntoa(radio->info.network.address.sin_addr));
+    log_trace("Trying to open TCP connection to %s", inet_ntoa(radio->network.address.sin_addr));
 
     tmp=socket(AF_INET, SOCK_STREAM, 0);
     if (tmp < 0) {
index 8c8cfc045c909e07a0dab2feba613f37566299cc..933ad739351776fc3c15444194680e2a5ef7f6f6 100644 (file)
@@ -1,47 +1,47 @@
 /* Copyright (C)
-* 2015 - John Melton, G0ORX/N6LYT
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-*
-*/
+ * 2015 - John Melton, G0ORX/N6LYT
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
 
-#include <gtk/gtk.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <netinet/in.h>
 #include <arpa/inet.h>
-#include <netdb.h>
-#include <net/if_arp.h>
-#include <net/if.h>
-#include <ifaddrs.h>
-#include <string.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <gtk/gtk.h>
+#include <ifaddrs.h>
+#include <net/if.h>
+#include <net/if_arp.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
 #include <sys/select.h>
+#include <sys/socket.h>
+#include <sys/types.h>
 
 #include "discovered.h"
 #include "discovery.h"
-#include "old_discovery.h"
 #include "log.h"
+#include "p1_discovery.h"
 
 static char interface_name[64];
-static struct sockaddr_in interface_addr={0};
-static struct sockaddr_in interface_netmask={0};
+static struct sockaddr_in interface_addr = {0};
+static struct sockaddr_in interface_netmask = {0};
 
 #define DISCOVERY_PORT 1024
 static int discovery_socket;
@@ -49,11 +49,11 @@ static int discovery_socket;
 static GThread *discover_thread_id;
 static gpointer discover_receive_thread(gpointer data);
 
-static void discover(struct ifaddrsiface) {
+static void discover(struct ifaddrs *iface) {
     int rc;
     struct sockaddr_in *sa;
     struct sockaddr_in *mask;
-    struct sockaddr_in to_addr={0};
+    struct sockaddr_in to_addr = {0};
     int flags;
     struct timeval tv;
     int optval;
@@ -63,149 +63,172 @@ static void discover(struct ifaddrs* iface) {
     int i, len;
 
     if (iface == NULL) {
-       //
-       // This indicates that we want to connect to an SDR which
-       // cannot be reached by (UDP) broadcast packets, but that
-       // we know its fixed IP address
-       // Therefore we try to send a METIS detection packet via TCP 
-       // to a "fixed" ip address.
-       //
+        //
+        // This indicates that we want to connect to an SDR which
+        // cannot be reached by (UDP) broadcast packets, but that
+        // we know its fixed IP address
+        // Therefore we try to send a METIS detection packet via TCP
+        // to a "fixed" ip address.
+        //
         log_trace("Trying to detect at TCP addr %s", ipaddr_tcp);
-       memset(&to_addr, 0, sizeof(to_addr));
-       to_addr.sin_family = AF_INET;
-       if (inet_aton(ipaddr_tcp, &to_addr.sin_addr) == 0) {
-           log_error("discover: TCP addr %s is invalid!",ipaddr_tcp);
-           return;
-       }
-       to_addr.sin_port=htons(DISCOVERY_PORT);
+        memset(&to_addr, 0, sizeof(to_addr));
+        to_addr.sin_family = AF_INET;
+        if (inet_aton(ipaddr_tcp, &to_addr.sin_addr) == 0) {
+            log_error("discover: TCP addr %s is invalid!", ipaddr_tcp);
+            return;
+        }
+        to_addr.sin_port = htons(DISCOVERY_PORT);
 
-        discovery_socket=socket(AF_INET, SOCK_STREAM, 0);
-        if(discovery_socket<0) {
+        discovery_socket = socket(AF_INET, SOCK_STREAM, 0);
+        if (discovery_socket < 0) {
             perror("discover: create socket failed for TCP discovery_socket\n");
             return;
-       }
-       //
-       // Here I tried a bullet-proof approach to connect() such that the program
-        // does not "hang" under any circumstances.
-       // - First, one makes the socket non-blocking. Then, the connect() will
+        }
+        //
+        // Here I tried a bullet-proof approach to connect() such that the
+        // program does not "hang" under any circumstances.
+        // - First, one makes the socket non-blocking. Then, the connect() will
         //   immediately return with error EINPROGRESS.
-       // - Then, one uses select() to look for *writeability* and check
-       //   the socket error if everything went right. Since one calls select()
+        // - Then, one uses select() to look for *writeability* and check
+        //   the socket error if everything went right. Since one calls select()
         //   with a time-out, one either succeed within this time or gives up.
         // - Do not forget to make the socket blocking again.
-       //
+        //
         // Step 1. Make socket non-blocking and connect()
-       flags=fcntl(discovery_socket, F_GETFL, 0);
-       fcntl(discovery_socket, F_SETFL, flags | O_NONBLOCK);
-       rc=connect(discovery_socket, (const struct sockaddr *)&to_addr, sizeof(to_addr));
+        flags = fcntl(discovery_socket, F_GETFL, 0);
+        fcntl(discovery_socket, F_SETFL, flags | O_NONBLOCK);
+        rc = connect(discovery_socket, (const struct sockaddr *)&to_addr,
+                     sizeof(to_addr));
         if ((errno != EINPROGRESS) && (rc < 0)) {
             perror("discover: connect() failed for TCP discovery_socket:");
-           close(discovery_socket);
-           return;
-       }
-       // Step 2. Use select to wait for the connection
-        tv.tv_sec=3;
-       tv.tv_usec=0;
-       FD_ZERO(&fds);
-       FD_SET(discovery_socket, &fds);
-       rc=select(discovery_socket+1, NULL, &fds, NULL, &tv);
+            close(discovery_socket);
+            return;
+        }
+        // Step 2. Use select to wait for the connection
+        tv.tv_sec = 3;
+        tv.tv_usec = 0;
+        FD_ZERO(&fds);
+        FD_SET(discovery_socket, &fds);
+        rc = select(discovery_socket + 1, NULL, &fds, NULL, &tv);
         if (rc < 0) {
             perror("discover: select() failed on TCP discovery_socket:");
-           close(discovery_socket);
-           return;
+            close(discovery_socket);
+            return;
         }
-       // If no connection occured, return
-       if (rc == 0) {
-           // select timed out
-           log_error("discover: select() timed out on TCP discovery socket");
-           close(discovery_socket);
-           return;
-       }
-       // Step 3. select() succeeded. Check success of connect()
-       optlen=sizeof(int);
-       rc=getsockopt(discovery_socket, SOL_SOCKET, SO_ERROR, &optval, &optlen);
-       if (rc < 0) {
-           // this should very rarely happen
+        // If no connection occured, return
+        if (rc == 0) {
+            // select timed out
+            log_error("discover: select() timed out on TCP discovery socket");
+            close(discovery_socket);
+            return;
+        }
+        // Step 3. select() succeeded. Check success of connect()
+        optlen = sizeof(int);
+        rc = getsockopt(discovery_socket, SOL_SOCKET, SO_ERROR, &optval,
+                        &optlen);
+        if (rc < 0) {
+            // this should very rarely happen
             perror("discover: getsockopt() failed on TCP discovery_socket:");
-           close(discovery_socket);
-           return;
-       }
-       if (optval != 0) {
-           // connect did not succeed
-           log_error("discover: connect() on TCP socket did not succeed");
-           close(discovery_socket);
-           return;
-       }
-       // Step 4. reset the socket to normal (blocking) mode
-       fcntl(discovery_socket, F_SETFL, flags &  ~O_NONBLOCK);
+            close(discovery_socket);
+            return;
+        }
+        if (optval != 0) {
+            // connect did not succeed
+            log_error("discover: connect() on TCP socket did not succeed");
+            close(discovery_socket);
+            return;
+        }
+        // Step 4. reset the socket to normal (blocking) mode
+        fcntl(discovery_socket, F_SETFL, flags & ~O_NONBLOCK);
     } else {
-
-        strcpy(interface_name,iface->ifa_name);
+          /* struct ifaddrs { */
+           /*     struct ifaddrs  *ifa_next;    /\* Next item in list *\/ */
+           /*     char            *ifa_name;    /\* Name of interface *\/ */
+           /*     unsigned int     ifa_flags;   /\* Flags from SIOCGIFFLAGS *\/ */
+           /*     struct sockaddr *ifa_addr;    /\* Address of interface *\/ */
+           /*     struct sockaddr *ifa_netmask; /\* Netmask of interface *\/ */
+           /*     union { */
+           /*         struct sockaddr *ifu_broadaddr; */
+           /*                          /\* Broadcast address of interface *\/ */
+           /*         struct sockaddr *ifu_dstaddr; */
+           /*                          /\* Point-to-point destination address *\/ */
+           /*     } ifa_ifu; */
+           /* #define              ifa_broadaddr ifa_ifu.ifu_broadaddr */
+           /* #define              ifa_dstaddr   ifa_ifu.ifu_dstaddr */
+           /*     void            *ifa_data;    /\* Address-specific data *\/ */
+           /* }; */
+
+        strcpy(interface_name, iface->ifa_name);
         log_trace("discover: looking for HPSDR devices on %s", interface_name);
 
         // send a broadcast to locate hpsdr boards on the network
-        discovery_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
-        if(discovery_socket<0) {
+        discovery_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+        if (discovery_socket < 0) {
             perror("discover: create socket failed for discovery_socket:");
             exit(-1);
         }
 
-        sa = (struct sockaddr_in *) iface->ifa_addr;
-        mask = (struct sockaddr_in *) iface->ifa_netmask;
+        sa = (struct sockaddr_in *)iface->ifa_addr;
+        mask = (struct sockaddr_in *)iface->ifa_netmask;
         interface_netmask.sin_addr.s_addr = mask->sin_addr.s_addr;
 
         // bind to this interface and the discovery port
+       // static struct sockaddr_in interface_addr = {0};
         interface_addr.sin_family = AF_INET;
         interface_addr.sin_addr.s_addr = sa->sin_addr.s_addr;
-        //interface_addr.sin_port = htons(DISCOVERY_PORT*2);
+        // interface_addr.sin_port = htons(DISCOVERY_PORT*2);
         interface_addr.sin_port = htons(0); // system assigned port
-        if(bind(discovery_socket,(struct sockaddr*)&interface_addr,sizeof(interface_addr))<0) {
+        if (bind(discovery_socket, (struct sockaddr *)&interface_addr,
+                 sizeof(interface_addr)) < 0) {
             perror("discover: bind socket failed for discovery_socket:");
             return;
         }
 
-        log_trace("discover: bound to %s",interface_name);
+        log_trace("discover: bound to %s", interface_name);
 
         // allow broadcast on the socket
-        int on=1;
-        rc=setsockopt(discovery_socket, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
-        if(rc != 0) {
+        int on = 1;
+        rc = setsockopt(discovery_socket, SOL_SOCKET, SO_BROADCAST, &on,
+                        sizeof(on));
+        if (rc != 0) {
             log_error("discover: cannot set SO_BROADCAST: rc=%d", rc);
             exit(-1);
         }
 
         // setup to address
-        to_addr.sin_family=AF_INET;
-        to_addr.sin_port=htons(DISCOVERY_PORT);
-        to_addr.sin_addr.s_addr=htonl(INADDR_BROADCAST);
+        to_addr.sin_family = AF_INET;
+        to_addr.sin_port = htons(DISCOVERY_PORT);
+        to_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
     }
     optval = 1;
-    setsockopt(discovery_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
-    setsockopt(discovery_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
+    setsockopt(discovery_socket, SOL_SOCKET, SO_REUSEADDR, &optval,
+               sizeof(optval));
+    setsockopt(discovery_socket, SOL_SOCKET, SO_REUSEPORT, &optval,
+               sizeof(optval));
 
-    rc=devices;
+    rc = devices;
     // start a receive thread to collect discovery response packets
-    discover_thread_id = g_thread_new( "old discover receive", discover_receive_thread, NULL);
-    if( ! discover_thread_id )
-    {
+    discover_thread_id =
+        g_thread_new("old discover receive", discover_receive_thread, NULL);
+    if (!discover_thread_id) {
         log_error("g_thread_new failed on discover_receive_thread");
         exit(-1);
     }
 
-
-
     // send discovery packet
     // If this is a TCP connection, send a "long" packet
-    len=63;
-    if (iface == NULL) len=1032;
-    buffer[0]=0xEF;
-    buffer[1]=0xFE;
-    buffer[2]=0x02;
-    for(i=3;i<len;i++) {
-        buffer[i]=0x00;
+    len = 63;
+    if (iface == NULL)
+        len = 1032;
+    buffer[0] = 0xEF;
+    buffer[1] = 0xFE;
+    buffer[2] = 0x02;
+    for (i = 3; i < len; i++) {
+        buffer[i] = 0x00;
     }
 
-    if(sendto(discovery_socket,buffer,len,0,(struct sockaddr*)&to_addr,sizeof(to_addr))<0) {
+    if (sendto(discovery_socket, buffer, len, 0, (struct sockaddr *)&to_addr,
+               sizeof(to_addr)) < 0) {
         perror("discover: sendto socket failed for discovery_socket:");
         return;
     }
@@ -216,29 +239,30 @@ static void discover(struct ifaddrs* iface) {
     close(discovery_socket);
 
     if (iface == NULL) {
-       log_trace("discover: exiting TCP discover for %s",ipaddr_tcp);
-       if (devices == rc+1) {
-           //
-           // We have exactly found one TCP device
-           // and have to patch the TCP addr into the device field
-           // and set the "use TCP" flag.
-           //
-           memcpy((void*)&discovered[rc].info.network.address,(void*)&to_addr,sizeof(to_addr));
-           discovered[rc].info.network.address_length=sizeof(to_addr);
-           memcpy((void*)&discovered[rc].info.network.interface_address,(void*)&to_addr,sizeof(to_addr));
-           memcpy((void*)&discovered[rc].info.network.interface_netmask,(void*)&to_addr,sizeof(to_addr));
-           discovered[rc].info.network.interface_length=sizeof(to_addr);
-           strcpy(discovered[rc].info.network.interface_name,"TCP");
-           discovered[rc].use_tcp=1;
-       }
+        log_trace("discover: exiting TCP discover for %s", ipaddr_tcp);
+        if (devices == rc + 1) {
+            //
+            // We have exactly found one TCP device
+            // and have to patch the TCP addr into the device field
+            // and set the "use TCP" flag.
+            //
+            memcpy((void *)&discovered[rc].network.address,
+                   (void *)&to_addr, sizeof(to_addr));
+            // discovered[rc].network.address_length = sizeof(to_addr);
+            memcpy((void *)&discovered[rc].network.interface_address,
+                   (void *)&to_addr, sizeof(to_addr));
+            memcpy((void *)&discovered[rc].network.interface_netmask,
+                   (void *)&to_addr, sizeof(to_addr));
+            discovered[rc].network.interface_length = sizeof(to_addr);
+            strcpy(discovered[rc].network.interface_name, "TCP");
+            discovered[rc].use_tcp = 1;
+        }
     } else {
-       log_trace("discover: exiting discover for %s",iface->ifa_name);
+        log_trace("discover: exiting discover for %s", iface->ifa_name);
     }
-
 }
 
-
-//static void *discover_receive_thread(void* arg) {
+// static void *discover_receive_thread(void* arg) {
 static gpointer discover_receive_thread(gpointer data) {
     struct sockaddr_in addr;
     socklen_t len;
@@ -249,133 +273,156 @@ static gpointer discover_receive_thread(gpointer data) {
 
     tv.tv_sec = 2;
     tv.tv_usec = 0;
-    setsockopt(discovery_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval));
-
-    len=sizeof(addr);
-    while(1) {
-        bytes_read=recvfrom(discovery_socket,buffer,sizeof(buffer),1032,(struct sockaddr*)&addr,&len);
-        if(bytes_read<0) {
+    setsockopt(discovery_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,
+               sizeof(struct timeval));
+
+    len = sizeof(addr);
+    while (1) {
+        bytes_read = recvfrom(discovery_socket, buffer, sizeof(buffer), 1032,
+                              (struct sockaddr *)&addr, &len);
+        if (bytes_read < 0) {
             log_debug("discovery: bytes read %d", bytes_read);
-            log_error("old_discovery: recvfrom socket failed for discover_receive_thread: %s", strerror(errno));
+            log_error("p1_discovery: recvfrom socket failed for "
+                      "discover_receive_thread: %s",
+                      strerror(errno));
             break;
         }
-        if (bytes_read == 0) break;
-        log_trace("old_discovery: received %d bytes",bytes_read);
+        if (bytes_read == 0)
+            break;
+        log_trace("p1_discovery: received %d bytes", bytes_read);
         if ((buffer[0] & 0xFF) == 0xEF && (buffer[1] & 0xFF) == 0xFE) {
             int status = buffer[2] & 0xFF;
             if (status == 2 || status == 3) {
-                if(devices<MAX_DEVICES) {
-                    discovered[devices].protocol=ORIGINAL_PROTOCOL;
-                    discovered[devices].device=buffer[10]&0xFF;
-                    discovered[devices].software_version=buffer[9]&0xFF;
-                    switch(discovered[devices].device) {
-                        case DEVICE_METIS:
-                            strcpy(discovered[devices].name,"Metis");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        case DEVICE_HERMES:
-                            strcpy(discovered[devices].name,"Hermes");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        case DEVICE_GRIFFIN:
-                            strcpy(discovered[devices].name,"Griffin");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        case DEVICE_ANGELIA:
-                            strcpy(discovered[devices].name,"Angelia");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        case DEVICE_ORION:
-                            strcpy(discovered[devices].name,"Orion");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        case DEVICE_HERMES_LITE:
-                           //
-                           // It seems that some HermesLite V2 boards use
-                           // DEVICE_HERMES_LITE as the ID and a software version
-                           // that is larger or equal to 40, while the original
-                           // (V1) HermesLite boards have software versions up to 31.
-                           // Therefore this is possibly a HL2 board!
-                           if (discovered[devices].software_version < 40) {
-                              strcpy(discovered[devices].name,"HermesLite V1");                
-                           } else {
-                              strcpy(discovered[devices].name,"HermesLite V2");                
-                             discovered[devices].device = DEVICE_HERMES_LITE2;
-                             log_trace("discovered HL2: Gateware Major Version=%d Minor Version=%d",buffer[9],buffer[15]);
-                           }
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=30720000.0;
-                            break;
-                        case DEVICE_HERMES_LITE2:
-                            strcpy(discovered[devices].name,"HermesLite V2");          
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=30720000.0;
-                            break;
-                        case DEVICE_ORION2:
-                            strcpy(discovered[devices].name,"Orion2");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
-                        default:
-                            strcpy(discovered[devices].name,"Unknown");
-                            discovered[devices].frequency_min=0.0;
-                            discovered[devices].frequency_max=61440000.0;
-                            break;
+                if (devices < MAX_DEVICES) {
+                    discovered[devices].protocol = ORIGINAL_PROTOCOL;
+                    discovered[devices].device = buffer[10] & 0xFF;
+                    discovered[devices].software_version = buffer[9] & 0xFF;
+                    switch (discovered[devices].device) {
+                    case DEVICE_METIS:
+                        strcpy(discovered[devices].name, "Metis");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    case DEVICE_HERMES:
+                        strcpy(discovered[devices].name, "Hermes");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    case DEVICE_GRIFFIN:
+                        strcpy(discovered[devices].name, "Griffin");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    case DEVICE_ANGELIA:
+                        strcpy(discovered[devices].name, "Angelia");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    case DEVICE_ORION:
+                        strcpy(discovered[devices].name, "Orion");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    case DEVICE_HERMES_LITE:
+                        //
+                        // It seems that some HermesLite V2 boards use
+                        // DEVICE_HERMES_LITE as the ID and a software version
+                        // that is larger or equal to 40, while the original
+                        // (V1) HermesLite boards have software versions up
+                        // to 31. Therefore this is possibly a HL2 board!
+                        if (discovered[devices].software_version < 40) {
+                            strcpy(discovered[devices].name, "HermesLite V1");
+                        } else {
+                            strcpy(discovered[devices].name, "HermesLite V2");
+                            discovered[devices].device = DEVICE_HERMES_LITE2;
+                            log_trace("discovered HL2: Gateware Major "
+                                      "Version=%d Minor Version=%d",
+                                      buffer[9], buffer[15]);
+                        }
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 30720000.0;
+                        break;
+                    case DEVICE_HERMES_LITE2:
+                        strcpy(discovered[devices].name, "HermesLite V2");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 30720000.0;
+                        break;
+                    case DEVICE_ORION2:
+                        strcpy(discovered[devices].name, "Orion2");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
+                    default:
+                        strcpy(discovered[devices].name, "Unknown");
+                        discovered[devices].frequency_min = 0.0;
+                        discovered[devices].frequency_max = 61440000.0;
+                        break;
                     }
-                   log_trace("old_discovery: name=%s min=%f max=%f",discovered[devices].name, discovered[devices].frequency_min, discovered[devices].frequency_max);
-                    for(i=0;i<6;i++) {
-                        discovered[devices].info.network.mac_address[i]=buffer[i+3];
+                    log_trace("p1_discovery: name=%s min=%f max=%f",
+                              discovered[devices].name,
+                              discovered[devices].frequency_min,
+                              discovered[devices].frequency_max);
+                    for (i = 0; i < 6; i++) {
+                        discovered[devices].network.mac_address[i] =
+                            buffer[i + 3];
                     }
-                    discovered[devices].status=status;
-                    memcpy((void*)&discovered[devices].info.network.address,(void*)&addr,sizeof(addr));
-                    discovered[devices].info.network.address_length=sizeof(addr);
-                    memcpy((void*)&discovered[devices].info.network.interface_address,(void*)&interface_addr,sizeof(interface_addr));
-                    memcpy((void*)&discovered[devices].info.network.interface_netmask,(void*)&interface_netmask,sizeof(interface_netmask));
-                    discovered[devices].info.network.interface_length=sizeof(interface_addr);
-                    strcpy(discovered[devices].info.network.interface_name,interface_name);
-                   discovered[devices].use_tcp=0;
-                    discovered[devices].supported_receivers=2;
-                   log_trace("old_discovery: found device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s min=%f max=%f",
-                            discovered[devices].device,
-                            discovered[devices].software_version,
-                            discovered[devices].status,
-                            inet_ntoa(discovered[devices].info.network.address.sin_addr),
-                            discovered[devices].info.network.mac_address[0],
-                            discovered[devices].info.network.mac_address[1],
-                            discovered[devices].info.network.mac_address[2],
-                            discovered[devices].info.network.mac_address[3],
-                            discovered[devices].info.network.mac_address[4],
-                            discovered[devices].info.network.mac_address[5],
-                            discovered[devices].info.network.interface_name,
-                            discovered[devices].frequency_min,
-                            discovered[devices].frequency_max);
+                    discovered[devices].status = status;
+                    memcpy((void *)&discovered[devices].network.address,
+                           (void *)&addr, sizeof(addr));
+                    //discovered[devices].network.address_length =
+                    //    sizeof(addr);
+                    memcpy((void *)&discovered[devices]
+                               .network.interface_address,
+                           (void *)&interface_addr, sizeof(interface_addr));
+                    memcpy((void *)&discovered[devices]
+                               .network.interface_netmask,
+                           (void *)&interface_netmask,
+                           sizeof(interface_netmask));
+                    discovered[devices].network.interface_length =
+                        sizeof(interface_addr);
+                    strcpy(discovered[devices].network.interface_name,
+                           interface_name);
+                    discovered[devices].use_tcp = 0;
+                    discovered[devices].supported_receivers = 2;
+                    log_trace(
+                        "p1_discovery: found device=%d software_version=%d "
+                        "status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) "
+                        "on %s min=%f max=%f",
+                        discovered[devices].device,
+                        discovered[devices].software_version,
+                        discovered[devices].status,
+                        inet_ntoa(
+                            discovered[devices].network.address.sin_addr),
+                        discovered[devices].network.mac_address[0],
+                        discovered[devices].network.mac_address[1],
+                        discovered[devices].network.mac_address[2],
+                        discovered[devices].network.mac_address[3],
+                        discovered[devices].network.mac_address[4],
+                        discovered[devices].network.mac_address[5],
+                        discovered[devices].network.interface_name,
+                        discovered[devices].frequency_min,
+                        discovered[devices].frequency_max);
                     devices++;
                 }
             }
         }
-
     }
     log_trace("discovery: exiting discover_receive_thread");
     g_thread_exit(NULL);
     return NULL;
 }
 
-void old_discovery() {
-    struct ifaddrs *addrs,*ifa;
+void p1_discovery() {
+    struct ifaddrs *addrs, *ifa;
 
     getifaddrs(&addrs);
     ifa = addrs;
     while (ifa) {
         g_main_context_iteration(NULL, 0);
         if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_INET) {
-            if((ifa->ifa_flags&IFF_UP)==IFF_UP
-               && (ifa->ifa_flags&IFF_RUNNING)==IFF_RUNNING) {
-               // && (ifa->ifa_flags&IFF_LOOPBACK)==IFF_LOOPBACK) {
+            if ((ifa->ifa_flags & IFF_UP) == IFF_UP &&
+                (ifa->ifa_flags & IFF_RUNNING) == IFF_RUNNING) {
+                // && (ifa->ifa_flags&IFF_LOOPBACK)==IFF_LOOPBACK) {
                 discover(ifa);
             }
         }
@@ -386,21 +433,20 @@ void old_discovery() {
     // Do one additional "discover" for a fixed TCP address
     discover(NULL);
 
-    log_trace("discovery found %d devices",devices);
-
-    for(size_t i = 0; i < devices; i++) {
-       log_trace("discovery: found device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s",
-                 discovered[i].device,
-                 discovered[i].software_version,
-                 discovered[i].status,
-                 inet_ntoa(discovered[i].info.network.address.sin_addr),
-                 discovered[i].info.network.mac_address[0],
-                 discovered[i].info.network.mac_address[1],
-                 discovered[i].info.network.mac_address[2],
-                 discovered[i].info.network.mac_address[3],
-                 discovered[i].info.network.mac_address[4],
-                 discovered[i].info.network.mac_address[5],
-                 discovered[i].info.network.interface_name);
+    log_trace("discovery found %d devices", devices);
+
+    for (size_t i = 0; i < devices; i++) {
+        log_trace("discovery: found device=%d software_version=%d status=%d "
+                  "address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s",
+                  discovered[i].device, discovered[i].software_version,
+                  discovered[i].status,
+                  inet_ntoa(discovered[i].network.address.sin_addr),
+                  discovered[i].network.mac_address[0],
+                  discovered[i].network.mac_address[1],
+                  discovered[i].network.mac_address[2],
+                  discovered[i].network.mac_address[3],
+                  discovered[i].network.mac_address[4],
+                  discovered[i].network.mac_address[5],
+                  discovered[i].network.interface_name);
     }
 }
-
index fb3a2f54208e77f4223fe47b4143b421c95a724c..51ab9caafb4af59c2111e70b5256a74d5483c44d 100644 (file)
@@ -20,6 +20,6 @@
 #ifndef _OLD_DISCOVERY_H
 #define _OLD_DISCOVERY_H
 
-void old_discovery(void);
+void p1_discovery(void);
 
 #endif
index 1d860c976a26eb11295ba5001e759b22338afc36..8289be1c79d1d473349e6f28abdfaad62235f2b6 100644 (file)
@@ -44,10 +44,10 @@ static struct sockaddr_in interface_netmask={0};
 #define DISCOVERY_PORT 1024
 static int discovery_socket;
 
-void new_discover(struct ifaddrs* iface);
+void p2_discover(struct ifaddrs* iface);
 
 static GThread *discover_thread_id;
-gpointer new_discover_receive_thread(gpointer data);
+gpointer p2_discover_receive_thread(gpointer data);
 
 void print_device(int i) {
     fprintf(stderr,"discovery: found protocol=%d device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s\n", 
@@ -55,17 +55,17 @@ void print_device(int i) {
         discovered[i].device,
         discovered[i].software_version,
         discovered[i].status,
-        inet_ntoa(discovered[i].info.network.address.sin_addr),
-        discovered[i].info.network.mac_address[0],
-        discovered[i].info.network.mac_address[1],
-        discovered[i].info.network.mac_address[2],
-        discovered[i].info.network.mac_address[3],
-        discovered[i].info.network.mac_address[4],
-        discovered[i].info.network.mac_address[5],
-        discovered[i].info.network.interface_name);
+        inet_ntoa(discovered[i].network.address.sin_addr),
+        discovered[i].network.mac_address[0],
+        discovered[i].network.mac_address[1],
+        discovered[i].network.mac_address[2],
+        discovered[i].network.mac_address[3],
+        discovered[i].network.mac_address[4],
+        discovered[i].network.mac_address[5],
+        discovered[i].network.interface_name);
 }
 
-void new_discovery() {
+void p2_discovery() {
     struct ifaddrs *addrs,*ifa;
     getifaddrs(&addrs);
     ifa = addrs;
@@ -75,7 +75,7 @@ void new_discovery() {
           if(ifa->ifa_addr->sa_family == AF_INET &&
             (ifa->ifa_flags&IFF_UP)==IFF_UP &&
             (ifa->ifa_flags&IFF_RUNNING)==IFF_RUNNING) {
-               new_discover(ifa);
+               p2_discover(ifa);
           }
         }
         ifa = ifa->ifa_next;
@@ -83,7 +83,7 @@ void new_discovery() {
     freeifaddrs(addrs);
 
     
-    fprintf(stderr, "new_discovery found %d devices\n",devices);
+    fprintf(stderr, "p2_discovery found %d devices\n",devices);
     
     int i;
     for(i=0;i<devices;i++) {
@@ -91,7 +91,7 @@ void new_discovery() {
     }
 }
 
-void new_discover(struct ifaddrs* iface) {
+void p2_discover(struct ifaddrs* iface) {
     int rc;
     struct sockaddr_in *sa;
     struct sockaddr_in *mask;
@@ -99,12 +99,12 @@ void new_discover(struct ifaddrs* iface) {
     char net_mask[16];
 
     strcpy(interface_name,iface->ifa_name);
-    fprintf(stderr,"new_discover: looking for HPSDR devices on %s\n",interface_name);
+    fprintf(stderr,"p2_discover: looking for HPSDR devices on %s\n",interface_name);
 
     // send a broadcast to locate metis boards on the network
     discovery_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
     if(discovery_socket<0) {
-        perror("new_discover: create socket failed for discovery_socket\n");
+        perror("p2_discover: create socket failed for discovery_socket\n");
         exit(-1);
     }
 
@@ -122,20 +122,20 @@ void new_discover(struct ifaddrs* iface) {
     interface_addr.sin_addr.s_addr = sa->sin_addr.s_addr;
     interface_addr.sin_port = htons(0);
     if(bind(discovery_socket,(struct sockaddr*)&interface_addr,sizeof(interface_addr))<0) {
-        perror("new_discover: bind socket failed for discovery_socket\n");
+        perror("p2_discover: bind socket failed for discovery_socket\n");
         exit(-1);
     }
 
     strcpy(addr,inet_ntoa(sa->sin_addr));
     strcpy(net_mask,inet_ntoa(mask->sin_addr));
 
-    fprintf(stderr,"new_discover: bound to %s %s %s\n",interface_name,addr,net_mask);
+    fprintf(stderr,"p2_discover: bound to %s %s %s\n",interface_name,addr,net_mask);
 
     // allow broadcast on the socket
     int on=1;
     rc=setsockopt(discovery_socket, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
     if(rc != 0) {
-        fprintf(stderr,"new_discover: cannot set SO_BROADCAST: rc=%d\n", rc);
+        fprintf(stderr,"p2_discover: cannot set SO_BROADCAST: rc=%d\n", rc);
         exit(-1);
     }
 
@@ -146,10 +146,10 @@ void new_discover(struct ifaddrs* iface) {
     to_addr.sin_addr.s_addr=htonl(INADDR_BROADCAST);
 
     // start a receive thread to collect discovery response packets
-    discover_thread_id = g_thread_new( "new discover receive", new_discover_receive_thread, NULL);
+    discover_thread_id = g_thread_new( "new discover receive", p2_discover_receive_thread, NULL);
     if( ! discover_thread_id )
     {
-        fprintf(stderr,"g_thread_new failed on new_discover_receive_thread\n");
+        fprintf(stderr,"g_thread_new failed on p2_discover_receive_thread\n");
         exit( -1 );
     }
     fprintf(stderr,"new_disovery: thread_id=%p\n",discover_thread_id);
@@ -168,7 +168,7 @@ void new_discover(struct ifaddrs* iface) {
     }
 
     if(sendto(discovery_socket,buffer,60,0,(struct sockaddr*)&to_addr,sizeof(to_addr))<0) {
-        perror("new_discover: sendto socket failed for discovery_socket\n");
+        perror("p2_discover: sendto socket failed for discovery_socket\n");
         return;
     }
 
@@ -177,11 +177,11 @@ void new_discover(struct ifaddrs* iface) {
 
     close(discovery_socket);
 
-    fprintf(stderr,"new_discover: exiting discover for %s\n",iface->ifa_name);
+    fprintf(stderr,"p2_discover: exiting discover for %s\n",iface->ifa_name);
 }
 
-//void* new_discover_receive_thread(void* arg) {
-gpointer new_discover_receive_thread(gpointer data) {
+//void* p2_discover_receive_thread(void* arg) {
+gpointer p2_discover_receive_thread(gpointer data) {
     struct sockaddr_in addr;
     socklen_t len;
     unsigned char buffer[2048];
@@ -199,11 +199,11 @@ gpointer new_discover_receive_thread(gpointer data) {
     while(1) {
         bytes_read=recvfrom(discovery_socket,buffer,sizeof(buffer),0,(struct sockaddr*)&addr,&len);
         if(bytes_read<0) {
-            fprintf(stderr,"new_discover: bytes read %d\n", bytes_read);
-            perror("new_discover: recvfrom socket failed for discover_receive_thread");
+            fprintf(stderr,"p2_discover: bytes read %d\n", bytes_read);
+            perror("p2_discover: recvfrom socket failed for discover_receive_thread");
             break;
         }
-        fprintf(stderr,"new_discover: received %d bytes\n",bytes_read);
+        fprintf(stderr,"p2_discover: received %d bytes\n",bytes_read);
         if(bytes_read==1444) {
             if(devices>0) {
                 break;
@@ -265,29 +265,29 @@ gpointer new_discover_receive_thread(gpointer data) {
                             break;
                     }
                     for(i=0;i<6;i++) {
-                        discovered[devices].info.network.mac_address[i]=buffer[i+5];
+                        discovered[devices].network.mac_address[i]=buffer[i+5];
                     }
-                    memcpy((void*)&discovered[devices].info.network.address,(void*)&addr,sizeof(addr));
-                    discovered[devices].info.network.address_length=sizeof(addr);
-                    memcpy((void*)&discovered[devices].info.network.interface_address,(void*)&interface_addr,sizeof(interface_addr));
-                    memcpy((void*)&discovered[devices].info.network.interface_netmask,(void*)&interface_netmask,sizeof(interface_netmask));
-                    discovered[devices].info.network.interface_length=sizeof(interface_addr);
-                    strcpy(discovered[devices].info.network.interface_name,interface_name);
+                    memcpy((void*)&discovered[devices].network.address,(void*)&addr,sizeof(addr));
+                    discovered[devices].network.address_length=sizeof(addr);
+                    memcpy((void*)&discovered[devices].network.interface_address,(void*)&interface_addr,sizeof(interface_addr));
+                    memcpy((void*)&discovered[devices].network.interface_netmask,(void*)&interface_netmask,sizeof(interface_netmask));
+                    discovered[devices].network.interface_length=sizeof(interface_addr);
+                    strcpy(discovered[devices].network.interface_name,interface_name);
                     discovered[devices].supported_receivers=2;
-                    fprintf(stderr,"new_discover: found %d protocol=%d device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s\n", 
+                    fprintf(stderr,"p2_discover: found %d protocol=%d device=%d software_version=%d status=%d address=%s (%02X:%02X:%02X:%02X:%02X:%02X) on %s\n", 
                             devices,
                             discovered[devices].protocol,
                             discovered[devices].device,
                             discovered[devices].software_version,
                             discovered[devices].status,
-                            inet_ntoa(discovered[devices].info.network.address.sin_addr),
-                            discovered[devices].info.network.mac_address[0],
-                            discovered[devices].info.network.mac_address[1],
-                            discovered[devices].info.network.mac_address[2],
-                            discovered[devices].info.network.mac_address[3],
-                            discovered[devices].info.network.mac_address[4],
-                            discovered[devices].info.network.mac_address[5],
-                            discovered[devices].info.network.interface_name);
+                            inet_ntoa(discovered[devices].network.address.sin_addr),
+                            discovered[devices].network.mac_address[0],
+                            discovered[devices].network.mac_address[1],
+                            discovered[devices].network.mac_address[2],
+                            discovered[devices].network.mac_address[3],
+                            discovered[devices].network.mac_address[4],
+                            discovered[devices].network.mac_address[5],
+                            discovered[devices].network.interface_name);
                             discovered[devices].frequency_min=frequency_min;
                             discovered[devices].frequency_max=frequency_max;
                     devices++;
@@ -296,7 +296,7 @@ gpointer new_discover_receive_thread(gpointer data) {
         }
         }
     }
-    fprintf(stderr,"new_discover: exiting new_discover_receive_thread\n");
+    fprintf(stderr,"p2_discover: exiting p2_discover_receive_thread\n");
     g_thread_exit(NULL);
     return NULL;
 }
index 9851f22c87058c541d98c7d59fe5becd4083e1fe..af456899b582c8f06826cac8729664a8b8ac4f89 100644 (file)
@@ -20,6 +20,6 @@
 #ifndef _NEW_DISCOVERY_H
 #define _NEW_DISCOVERY_H
 
-void new_discovery(void);
+void p2_discovery(void);
 
 #endif
diff --git a/radio.c b/radio.c
index 29c61a51b36ea790f8fdfd7ca63db1ffb51f4651..9bbb98a560b7d542498b217f7aa7cfc6e86ad097 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -900,28 +900,28 @@ void start_radio() {
         sprintf(version, "v%d.%d)", radio->software_version / 10,
                 radio->software_version % 10);
         sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X",
-                radio->info.network.mac_address[0],
-                radio->info.network.mac_address[1],
-                radio->info.network.mac_address[2],
-                radio->info.network.mac_address[3],
-                radio->info.network.mac_address[4],
-                radio->info.network.mac_address[5]);
-        sprintf(ip, "%s", inet_ntoa(radio->info.network.address.sin_addr));
-        sprintf(iface, "%s", radio->info.network.interface_name);
+                radio->network.mac_address[0],
+                radio->network.mac_address[1],
+                radio->network.mac_address[2],
+                radio->network.mac_address[3],
+                radio->network.mac_address[4],
+                radio->network.mac_address[5]);
+        sprintf(ip, "%s", inet_ntoa(radio->network.address.sin_addr));
+        sprintf(iface, "%s", radio->network.interface_name);
         break;
     case NEW_PROTOCOL:
         strcpy(p, "Protocol 2");
         sprintf(version, "v%d.%d)", radio->software_version / 10,
                 radio->software_version % 10);
         sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X",
-                radio->info.network.mac_address[0],
-                radio->info.network.mac_address[1],
-                radio->info.network.mac_address[2],
-                radio->info.network.mac_address[3],
-                radio->info.network.mac_address[4],
-                radio->info.network.mac_address[5]);
-        sprintf(ip, "%s", inet_ntoa(radio->info.network.address.sin_addr));
-        sprintf(iface, "%s", radio->info.network.interface_name);
+                radio->network.mac_address[0],
+                radio->network.mac_address[1],
+                radio->network.mac_address[2],
+                radio->network.mac_address[3],
+                radio->network.mac_address[4],
+                radio->network.mac_address[5]);
+        sprintf(ip, "%s", inet_ntoa(radio->network.address.sin_addr));
+        sprintf(iface, "%s", radio->network.interface_name);
         break;
     }
 
@@ -961,12 +961,12 @@ void start_radio() {
 #endif
         default:
             sprintf(property_path, "%02X-%02X-%02X-%02X-%02X-%02X.props",
-                    radio->info.network.mac_address[0],
-                    radio->info.network.mac_address[1],
-                    radio->info.network.mac_address[2],
-                    radio->info.network.mac_address[3],
-                    radio->info.network.mac_address[4],
-                    radio->info.network.mac_address[5]);
+                    radio->network.mac_address[0],
+                    radio->network.mac_address[1],
+                    radio->network.mac_address[2],
+                    radio->network.mac_address[3],
+                    radio->network.mac_address[4],
+                    radio->network.mac_address[5]);
             break;
         }
         break;