GPIO_LIBS=-lwiringPi
endif
ifeq ($(SX1509_INCLUDE),sx1509)
+ GPIO_OPTIONS=-D GPIO
GPIO_OPTIONS+=-D sx1509
GPIO_LIBS+=-lsx1509
endif
cw_changed();
}
+static void cw_active_level_cb(GtkWidget *widget, gpointer data) {
+ cw_active_level=cw_active_level==1?0:1;
+ cw_changed();
+}
+
static void cw_keyer_speed_value_changed_cb(GtkWidget *widget, gpointer data) {
cw_keyer_speed=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
cw_changed();
gtk_grid_attach(GTK_GRID(grid),cw_keyer_internal_b,0,10,1,1);
g_signal_connect(cw_keyer_internal_b,"toggled",G_CALLBACK(cw_keyer_internal_cb),NULL);
+ GtkWidget *cw_active_level_b=gtk_check_button_new_with_label("CW Local Active_Low");
+ //gtk_widget_override_font(cw_active_level_b, pango_font_description_from_string("Arial 18"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw_active_level_b), cw_active_level==0);
+ gtk_widget_show(cw_active_level_b);
+ gtk_grid_attach(GTK_GRID(grid),cw_active_level_b,1,10,1,1);
+ g_signal_connect(cw_active_level_b,"toggled",G_CALLBACK(cw_active_level_cb),NULL);
+
gtk_container_add(GTK_CONTAINER(content),grid);
sub_menu=dialog;
} else if (strcmp (str, "CR") == 0) {
strcpy (buffer, "0");
sprintf(output, "<big>%s</big>", buffer);
- gtk_label_set_markup (GTK_LABEL (label), buffer);
+ gtk_label_set_markup (GTK_LABEL (label), output);
} else if (str[1] == 'Z') {
switch(str[0]) {
case 'M':
default :
mult = 10.0;
}
- //f = (long long)atof(buffer)*mult;
f = ((long long)(atof(buffer)*mult)+5)/10;
-fprintf(stderr, "BUFFER=%s\n", buffer);
sprintf(output, "<big>%lld</big>", f);
gtk_label_set_markup (GTK_LABEL (label), output);
int b=get_band_from_frequency(f);
splash_status("Initializing GPIO ...");
if(gpio_init()<0) {
}
+#ifdef LOCALCW
+ // init local keyer if enabled
+ else if (cw_keyer_internal == 0)
+ keyer_update();
+#endif
#endif
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
#ifdef FREEDV
#include "freedv.h"
#endif
+#ifdef LOCALCW
+#include "iambic.h"
+#endif
#include "vox.h"
#define min(x,y) (x<y?x:y)
*/
void cw_changed() {
+#ifdef LOCALCW
+ // update the iambic keyer params
+ if (cw_keyer_internal == 0)
+ keyer_update();
+#endif
}
void new_protocol_init(int pixels) {
if(tune) {
buffer[4]|=0x02;
}
+#ifdef LOCALCW
+ if (cw_keyer_internal == 0) {
+ // set the ptt if we're not in breakin mode and mox is on
+ if(cw_breakin == 0 && getMox()) buffer[4]|=0x02;
+ buffer[5]|=(keyer_out) ? 0x01 : 0;
+ }
+#endif
} else {
if(isTransmitting()) {
buffer[4]|=0x02;
buffer[4]=1; // 1 DAC
buffer[5]=0; // default no CW
- if(cw_keyer_internal && (mode==modeCWU || mode==modeCWL)) {
+ // may be using local pihpsdr OR hpsdr CW
+ if(mode==modeCWU || mode==modeCWL) {
buffer[5]|=0x02;
}
if(cw_keys_reversed) {
if(value) cw_keyer_spacing=atoi(value);
value=getProperty("cw_keyer_internal");
if(value) cw_keyer_internal=atoi(value);
+ value=getProperty("cw_active_level");
+ if(value) cw_active_level=atoi(value);
value=getProperty("cw_keyer_sidetone_volume");
if(value) cw_keyer_sidetone_volume=atoi(value);
value=getProperty("cw_keyer_ptt_delay");
setProperty("cw_keyer_spacing",value);
sprintf(value,"%d",cw_keyer_internal);
setProperty("cw_keyer_internal",value);
+ sprintf(value,"%d",cw_active_level);
+ setProperty("cw_active_level",value);
sprintf(value,"%d",cw_keyer_sidetone_volume);
setProperty("cw_keyer_sidetone_volume",value);
sprintf(value,"%d",cw_keyer_ptt_delay);