From 80e7b6873f7eedb90a191e6d3359f2ddd0f5f61c Mon Sep 17 00:00:00 2001
From: g0orx <john.d.melton@googlemail.com>
Date: Tue, 19 Apr 2016 18:47:29 +0100
Subject: [PATCH] source code change so it will compile on X86/X64 linux box

---
 Makefile  | 10 ++++++----
 band.c    | 26 +++++++++++++-------------
 gpio.c    | 10 +++++++++-
 gpio.h    | 10 +++++++++-
 main.c    | 28 ++++++++++++++++++++++++++--
 menu.c    |  9 +++++++++
 splash.c  |  6 ++++--
 toolbar.c |  2 ++
 toolbar.h |  2 ++
 vfo.c     |  2 +-
 10 files changed, 81 insertions(+), 24 deletions(-)

diff --git a/Makefile b/Makefile
index 0ece627..4b824fc 100644
--- a/Makefile
+++ b/Makefile
@@ -6,10 +6,12 @@ OPTIONS=-g -D $(UNAME_N) -O3
 GTKINCLUDES=`pkg-config --cflags gtk+-3.0`
 GTKLIBS=`pkg-config --libs gtk+-3.0`
 ifeq ($(UNAME_N),raspberrypi)
-LIBS=-lwiringPi -lpigpio -lrt -lm -lwdsp -lpthread $(GTKLIBS)
-else
-LIBS=-lwiringPi -lrt -lm -lwdsp -lpthread $(GTKLIBS)
+GPIO_LIBS=-lwiringPi -lpigpio
 endif
+ifeq ($(UNAME_N),odroid)
+GPIO_LIBS=-lwiringPi
+endif
+LIBS=-lrt -lm -lwdsp -lpthread $(GTKLIBS)
 INCLUDES=$(GTKINCLUDES)
 
 COMPILE=$(CC) $(OPTIONS) $(INCLUDES)
@@ -104,7 +106,7 @@ prebuild:
 	rm -f version.o
 
 $(PROGRAM): $(OBJS)
-	$(LINK) -o $(PROGRAM) $(OBJS) $(LIBS)
+	$(LINK) -o $(PROGRAM) $(OBJS) $(GPIO_LIBS) $(LIBS)
 
 .c.o:
 	$(COMPILE) -c -o $@ $<
diff --git a/band.c b/band.c
index 7bc91c4..fc35dd2 100644
--- a/band.c
+++ b/band.c
@@ -119,19 +119,19 @@ BANDSTACK bandstackGEN={3,1,bandstack_entriesGEN};
 BANDSTACK bandstackWWV={5,1,bandstack_entriesWWV};
 
 BAND bands[BANDS] = 
-    {{"160",&bandstack160,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"80",&bandstack80,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"60",&bandstack60,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"40",&bandstack40,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"30",&bandstack30,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"20",&bandstack20,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"18",&bandstack18,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"15",&bandstack15,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"12",&bandstack12,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"10",&bandstack10,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"50",&bandstack50,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
-     {"GEN",&bandstackGEN,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0},
-     {"WWV",&bandstackWWV,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0}};
+    {{"160",&bandstack160,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"80",&bandstack80,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"60",&bandstack60,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"40",&bandstack40,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"30",&bandstack30,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"20",&bandstack20,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"18",&bandstack18,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"15",&bandstack15,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"12",&bandstack12,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"10",&bandstack10,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"50",&bandstack50,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,30},
+     {"GEN",&bandstackGEN,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0},
+     {"WWV",&bandstackWWV,0,0,0,ALEX_RX_ANTENNA_NONE,ALEX_TX_ANTENNA_1,ALEX_ATTENUATION_0dB,0}};
 
 #define NUM_BAND_LIMITS 22
 
diff --git a/gpio.c b/gpio.c
index 1a9746c..6ddf738 100644
--- a/gpio.c
+++ b/gpio.c
@@ -1,3 +1,11 @@
+#ifdef raspberrypi
+#define INCLUDE_GPIO
+#endif
+#ifdef odroid
+#define INCLUDE_GPIO
+#endif
+
+#ifdef INCLUDE_GPIO
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -127,7 +135,6 @@ static volatile int lock_state;
 
 static void* rotary_encoder_thread(void *arg);
 static pthread_t rotary_encoder_thread_id;
-int function=0;
 static int previous_function_button=0;
 static int af_function=0;
 static int previous_af_function=0;
@@ -1157,3 +1164,4 @@ static void* rotary_encoder_thread(void *arg) {
 //        }
     }
 }
+#endif
diff --git a/gpio.h b/gpio.h
index 569b616..6d48ec2 100644
--- a/gpio.h
+++ b/gpio.h
@@ -17,6 +17,14 @@
 *
 */
 
+#ifdef raspberrypi
+#define INCLUDE_GPIO
+#endif
+#ifdef odroid
+#define INCLUDE_GPIO
+#endif
+
+#ifdef INCLUDE_GPIO
 extern int ENABLE_VFO_ENCODER;
 extern int ENABLE_VFO_PULLUP;
 extern int VFO_ENCODER_A;
@@ -52,7 +60,6 @@ extern int MOX_BUTTON;
 extern int ENABLE_FUNCTION_BUTTON;
 extern int FUNCTION_BUTTON;
 
-extern int function;
 void gpio_restore_state();
 void gpio_save_state();
 int gpio_init();
@@ -69,3 +76,4 @@ int filter_get_state();
 int noise_get_state();
 int mox_get_state();
 
+#endif
diff --git a/main.c b/main.c
index 15c935e..8e8ac59 100644
--- a/main.c
+++ b/main.c
@@ -47,6 +47,13 @@
 #include "wdsp_init.h"
 #include "version.h"
 
+#ifdef raspberrypi
+#define INCLUDE_GPIO
+#endif
+#ifdef odroid
+#define INCLUDE_GPIO
+#endif
+
 #define VFO_HEIGHT ((display_height/32)*4)
 #define VFO_WIDTH ((display_width/32)*16)
 #define MENU_HEIGHT VFO_HEIGHT
@@ -62,6 +69,7 @@ struct utsname unameData;
 
 gint display_width;
 gint display_height;
+gint full_screen=1;
 
 static gint update_timer_id;
 
@@ -238,6 +246,7 @@ static void toolbar_simulate_buttons_cb(GtkWidget *widget, gpointer data) {
   toolbar_simulate_buttons=toolbar_simulate_buttons==1?0:1;
 }
 
+#ifdef INCLUDE_GPIO
 static void configure_gpio() {
   gpio_restore_state();
 
@@ -519,6 +528,7 @@ static void configure_gpio() {
 
   gpio_save_state();
 }
+#endif
 
 static void configure_cb(GtkWidget *widget, gpointer data) {
   DISCOVERED* d;
@@ -715,8 +725,10 @@ gint init(void* arg) {
           discovery_dialog = gtk_dialog_new_with_buttons ("Discovered",
                                       GTK_WINDOW(splash_window),
                                       flags,
+#ifdef INCLUDE_GPIO
                                       "Configure GPIO",
                                       GTK_RESPONSE_YES,
+#endif
                                       "Discover",
                                       GTK_RESPONSE_REJECT,
                                       "Exit",
@@ -776,10 +788,12 @@ gint init(void* arg) {
               _exit(0);
           }
          
+#ifdef INCLUDE_GPIO
           gtk_widget_destroy(discovery_dialog);
           if(result==GTK_RESPONSE_YES) {
               configure_gpio();
           }
+#endif
       }
   }
 
@@ -815,7 +829,9 @@ gint init(void* arg) {
   }
 
   splash_status("Initializing GPIO ...");
+#ifdef INCLUDE_GPIO
   gpio_init();
+#endif
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "pihpsdr");
@@ -935,7 +951,9 @@ fprintf(stderr,"toolbar_height=%d\n",TOOLBAR_HEIGHT);
 
   gtk_widget_show_all (window);
 
-  gtk_window_fullscreen(GTK_WINDOW(window));
+  if(full_screen) {
+    gtk_window_fullscreen(GTK_WINDOW(window));
+  }
 
   GdkWindow *gdk_window = gtk_widget_get_window(window);
   gdk_window_set_cursor(gdk_window,cursor_arrow);
@@ -980,9 +998,15 @@ main (int   argc,
   display_width=gdk_screen_get_width(screen);
   display_height=gdk_screen_get_height(screen);
 
+  if(display_width>800 || display_height>480) {
+    display_width=800;
+    display_height=400;
+    full_screen=0;
+  }
+
   fprintf(stderr,"display_width=%d display_height=%d\n", display_width, display_height);
 
-  splash_show("hpsdr.png", 0, display_width, display_height);
+  splash_show("hpsdr.png", display_width, display_height, full_screen);
 
   g_idle_add(init,(void *)argv[0]);
 
diff --git a/menu.c b/menu.c
index ac7ed82..21a3317 100644
--- a/menu.c
+++ b/menu.c
@@ -17,6 +17,13 @@
 *
 */
 
+#ifdef raspberrypi
+#define INCLUDE_GPIO
+#endif
+#ifdef odroid
+#define INCLUDE_GPIO
+#endif
+
 #include <gtk/gtk.h>
 #include <semaphore.h>
 #include <stdio.h>
@@ -191,7 +198,9 @@ static gboolean exit_pressed_event_cb (GtkWidget *widget,
                GdkEventButton *event,
                gpointer        data)
 {
+#ifdef INCLUDE_GPIO
   gpio_close();
+#endif
   if(protocol==ORIGINAL_PROTOCOL) {
     old_protocol_stop();
   } else {
diff --git a/splash.c b/splash.c
index a231547..886c058 100644
--- a/splash.c
+++ b/splash.c
@@ -46,11 +46,13 @@ static gboolean splash_configure_event_cb (GtkWidget         *widget,
 }
 
 
-void splash_show(char* image_name,int time,int width,int height)
+void splash_show(char* image_name,int width,int height,int full_screen)
 {
   GtkWidget  *image;
   splash_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_fullscreen(GTK_WINDOW(splash_window));
+  if(full_screen) {
+    gtk_window_fullscreen(GTK_WINDOW(splash_window));
+  }
   gtk_widget_set_size_request(splash_window, width, height);
   gtk_window_set_decorated(GTK_WINDOW(splash_window), FALSE);
   gtk_window_set_position(GTK_WINDOW(splash_window),GTK_WIN_POS_CENTER_ALWAYS);
diff --git a/toolbar.c b/toolbar.c
index c24462b..c967641 100644
--- a/toolbar.c
+++ b/toolbar.c
@@ -38,6 +38,8 @@
 #include "radio.h"
 #include "property.h"
 
+int function=0;
+
 static int width;
 static int height;
 
diff --git a/toolbar.h b/toolbar.h
index 6b39381..eb758c7 100644
--- a/toolbar.h
+++ b/toolbar.h
@@ -17,6 +17,8 @@
 *
 */
 
+extern int function;
+
 int ptt_update(void *data);
 void lock_cb(GtkWidget *widget, gpointer data);
 void mox_cb(GtkWidget *widget, gpointer data);
diff --git a/vfo.c b/vfo.c
index 3386211..c3f2a16 100644
--- a/vfo.c
+++ b/vfo.c
@@ -37,7 +37,7 @@
 #include "radio.h"
 #include "vfo.h"
 #include "channel.h"
-#include "gpio.h"
+#include "toolbar.h"
 #include "wdsp.h"
 
 static GtkWidget *parent_window;
-- 
2.45.2