Skip to content

Commit

Permalink
Bulk changes to gpiod branch
Browse files Browse the repository at this point in the history
  • Loading branch information
g0orx committed Jun 17, 2021
1 parent 91b3190 commit 259dfa4
Show file tree
Hide file tree
Showing 20 changed files with 1,646 additions and 1,216 deletions.
1,743 changes: 1,046 additions & 697 deletions actions.c

Large diffs are not rendered by default.

190 changes: 118 additions & 72 deletions actions.h
Original file line number Diff line number Diff line change
@@ -1,69 +1,70 @@

enum {
ENCODER_NO_ACTION=0,
ENCODER_AF_GAIN,
ENCODER_AF_GAIN_RX1,
ENCODER_AF_GAIN_RX2,
ENCODER_AGC_GAIN,
ENCODER_AGC_GAIN_RX1,
ENCODER_AGC_GAIN_RX2,
ENCODER_ATTENUATION,
ENCODER_COMP,
ENCODER_CW_FREQUENCY,
ENCODER_CW_SPEED,
ENCODER_DIVERSITY_GAIN,
ENCODER_DIVERSITY_GAIN_COARSE,
ENCODER_DIVERSITY_GAIN_FINE,
ENCODER_DIVERSITY_PHASE,
ENCODER_DIVERSITY_PHASE_COARSE,
ENCODER_DIVERSITY_PHASE_FINE,
ENCODER_DRIVE,
ENCODER_IF_SHIFT,
ENCODER_IF_SHIFT_RX1,
ENCODER_IF_SHIFT_RX2,
ENCODER_IF_WIDTH,
ENCODER_IF_WIDTH_RX1,
ENCODER_IF_WIDTH_RX2,
ENCODER_MIC_GAIN,
ENCODER_PAN,
ENCODER_PANADAPTER_HIGH,
ENCODER_PANADAPTER_LOW,
ENCODER_PANADAPTER_STEP,
ENCODER_RF_GAIN,
ENCODER_RF_GAIN_RX1,
ENCODER_RF_GAIN_RX2,
ENCODER_RIT,
ENCODER_RIT_RX1,
ENCODER_RIT_RX2,
ENCODER_SQUELCH,
ENCODER_SQUELCH_RX1,
ENCODER_SQUELCH_RX2,
ENCODER_TUNE_DRIVE,
ENCODER_VFO,
ENCODER_WATERFALL_HIGH,
ENCODER_WATERFALL_LOW,
ENCODER_XIT,
ENCODER_ZOOM,
ENCODER_ACTIONS
};

enum {
enum ACTION {
NO_ACTION=0,
A_TO_B,
A_SWAP_B,
A_TO_B,
AF_GAIN,
AF_GAIN_RX1,
AF_GAIN_RX2,
AGC,
AGC_GAIN,
AGC_GAIN_RX1,
AGC_GAIN_RX2,
ANF,
ATTENUATION,
B_TO_A,
BAND_10,
BAND_12,
BAND_1240,
BAND_144,
BAND_15,
BAND_160,
BAND_17,
BAND_20,
BAND_220,
BAND_2300,
BAND_30,
BAND_3400,
BAND_40,
BAND_430,
BAND_6,
BAND_60,
BAND_70,
BAND_80,
BAND_902,
BAND_AIR,
BAND_GEN,
BAND_MINUS,
BAND_PLUS,
BAND_WWV,
BANDSTACK_MINUS,
BANDSTACK_PLUS,
COMP_ENABLE,
COMPRESSION,
CTUN,
DIVERSITY,
CW_FREQUENCY,
CW_LEFT,
CW_RIGHT,
CW_SPEED,
DIV,
DIV_GAIN,
DIV_GAIN_COARSE,
DIV_GAIN_FINE,
DIV_PHASE,
DIV_PHASE_COARSE,
DIV_PHASE_FINE,
DRIVE,
DUPLEX,
FILTER_MINUS,
FILTER_PLUS,
FUNCTION,
IF_SHIFT,
IF_SHIFT_RX1,
IF_SHIFT_RX2,
IF_WIDTH,
IF_WIDTH_RX1,
IF_WIDTH_RX2,
LINEIN_GAIN,
LOCK,
MENU_AGC,
MENU_BAND,
Expand All @@ -75,63 +76,108 @@ enum {
MENU_MODE,
MENU_NOISE,
MENU_PS,
MIC_GAIN,
MODE_MINUS,
MODE_PLUS,
MOX,
MUTE,
NB,
NR,
NUMPAD_0,
NUMPAD_1,
NUMPAD_2,
NUMPAD_3,
NUMPAD_4,
NUMPAD_5,
NUMPAD_6,
NUMPAD_7,
NUMPAD_8,
NUMPAD_9,
NUMPAD_CL,
NUMPAD_ENTER,
PAN,
PAN_MINUS,
PAN_PLUS,
PANADAPTER_HIGH,
PANADAPTER_LOW,
PANADAPTER_STEP,
PREAMP,
PS,
PTT,
RF_GAIN,
RF_GAIN_RX1,
RF_GAIN_RX2,
RIT,
RIT_CLEAR,
RIT_ENABLE,
RIT_MINUS,
RIT_PLUS,
RIT_RX1,
RIT_RX2,
RIT_STEP,
RSAT,
SAT,
SNB,
SPLIT,
SQUELCH,
SQUELCH_RX1,
SQUELCH_RX2,
SWAP_RX,
TUNE,
TUNE_DRIVE,
TUNE_FULL,
TUNE_MEMORY,
TWO_TONE,
VFOSTEP_PLUS,
VFOSTEP_MINUS,
VFO,
VFO_STEP_MINUS,
VFO_STEP_PLUS,
VFOA,
VFOB,
VOX,
VOXLEVEL,
WATERFALL_HIGH,
WATERFALL_LOW,
XIT,
XIT_CLEAR,
XIT_ENABLE,
XIT_MINUS,
XIT_PLUS,
ZOOM,
ZOOM_MINUS,
ZOOM_PLUS,
SWITCH_ACTIONS,
ACTIONS
};

enum {
PRESSED,
RELEASED
enum ACTIONtype {
TYPE_NONE=0,
MIDI_KEY=1, // MIDI Button (press event)
MIDI_KNOB=2, // MIDI Knob (value between 0 and 100)
MIDI_WHEEL=4, // MIDI Wheel (direction and speed)
CONTROLLER_SWITCH=8, // Controller Button
CONTROLLER_ENCODER=16 // Controller Encoder
};

typedef struct _switch_action {
gint action;
gboolean state;
} SWITCH_ACTION;
typedef struct _action_table {
enum ACTION action;
const char *str; // desciptive text
const char *button_str; // short button text
enum ACTIONtype type;
} ACTION_TABLE;

enum {
enum ACTION_MODE {
RELATIVE,
ABSOLUTE
ABSOLUTE,
PRESSED,
RELEASED
};

typedef struct _encoder_action {
gint action;
gboolean mode;
typedef struct process_action {
enum ACTION action;
enum ACTION_MODE mode;
gint val;
} ENCODER_ACTION;
} PROCESS_ACTION;

extern char *encoder_string[ENCODER_ACTIONS];
extern char *sw_string[SWITCH_ACTIONS];
extern char *sw_cap_string[SWITCH_ACTIONS];
extern ACTION_TABLE ActionTable[ACTIONS+1];

extern int encoder_action(void *data);
extern int switch_action(void *data);
extern int process_action(void *data);

2 changes: 2 additions & 0 deletions alsa_midi.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include <gtk/gtk.h>

#include "actions.h"
#include "midi.h"
#include "midi_menu.h"
#include "alsa_midi.h"
Expand Down Expand Up @@ -220,6 +221,7 @@ int register_midi_device(char *myname) {
g_print("%s: Cannot find MIDI device: %s\n",__FUNCTION__,myname);
ret=-1;
}
return ret;
}

void close_midi_device() {
Expand Down
68 changes: 37 additions & 31 deletions encoder_menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,34 +68,36 @@ static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_d
static void encoder_bottom_select_cb(GtkWidget *widget,gpointer data) {
CHOICE *choice=(CHOICE *)data;
encoders[choice->id].bottom_encoder_function=choice->action;
gtk_button_set_label(GTK_BUTTON(choice->button),encoder_string[choice->action]);
gtk_button_set_label(GTK_BUTTON(choice->button),ActionTable[choice->action].button_str);
}

static void encoder_top_select_cb(GtkWidget *widget,gpointer data) {
CHOICE *choice=(CHOICE *)data;
encoders[choice->id].top_encoder_function=choice->action;
gtk_button_set_label(GTK_BUTTON(choice->button),encoder_string[choice->action]);
gtk_button_set_label(GTK_BUTTON(choice->button),ActionTable[choice->action].button_str);
}

static void encoder_switch_select_cb(GtkWidget *widget,gpointer data) {
CHOICE *choice=(CHOICE *)data;
encoders[choice->id].switch_function=choice->action;
gtk_button_set_label(GTK_BUTTON(choice->button),sw_string[choice->action]);
gtk_button_set_label(GTK_BUTTON(choice->button),ActionTable[choice->action].button_str);
}

static gboolean encoder_bottom_cb(GtkWidget *widget, GdkEvent *event, gpointer data) {
int encoder=GPOINTER_TO_INT(data);
int i;

GtkWidget *menu=gtk_menu_new();
for(i=0;i<ENCODER_ACTIONS;i++) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(encoder_string[i]);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_bottom_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
for(i=0;i<ACTIONS;i++) {
if(ActionTable[i].type|CONTROLLER_ENCODER) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(ActionTable[i].str);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_bottom_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
}
}
gtk_widget_show_all(menu);
#if GTK_CHECK_VERSION(3,22,0)
Expand All @@ -113,14 +115,16 @@ static gboolean encoder_top_cb(GtkWidget *widget, GdkEvent *event, gpointer data
int i;

GtkWidget *menu=gtk_menu_new();
for(i=0;i<ENCODER_ACTIONS;i++) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(encoder_string[i]);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_top_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
for(i=0;i<ACTIONS;i++) {
if(ActionTable[i].type|CONTROLLER_ENCODER) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(ActionTable[i].str);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_top_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
}
}
gtk_widget_show_all(menu);
#if GTK_CHECK_VERSION(3,22,0)
Expand All @@ -138,14 +142,16 @@ static gboolean encoder_switch_cb(GtkWidget *widget, GdkEvent *event, gpointer d
int i;

GtkWidget *menu=gtk_menu_new();
for(i=0;i<SWITCH_ACTIONS;i++) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(sw_string[i]);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_switch_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
for(i=0;i<ACTIONS;i++) {
if(ActionTable[i].type|CONTROLLER_SWITCH) {
GtkWidget *menu_item=gtk_menu_item_new_with_label(ActionTable[i].str);
CHOICE *choice=g_new0(CHOICE,1);
choice->id=encoder;
choice->action=i;
choice->button=widget;
g_signal_connect(menu_item,"activate",G_CALLBACK(encoder_switch_select_cb),choice);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item);
}
}
gtk_widget_show_all(menu);
#if GTK_CHECK_VERSION(3,22,0)
Expand Down Expand Up @@ -233,24 +239,24 @@ void encoder_menu(GtkWidget *parent) {

if(i==(max_encoders-1)) {
widget=gtk_label_new(NULL);
g_sprintf(label,"<b>%s</b>",encoder_string[encoders[i].bottom_encoder_function]);
g_sprintf(label,"<b>%s</b>",ActionTable[encoders[i].bottom_encoder_function].str);
gtk_label_set_markup (GTK_LABEL(widget), label);
} else {
widget=gtk_button_new_with_label(encoder_string[encoders[i].bottom_encoder_function]);
widget=gtk_button_new_with_label(ActionTable[encoders[i].bottom_encoder_function].str);
g_signal_connect(widget,"button_press_event",G_CALLBACK(encoder_bottom_cb),GINT_TO_POINTER(i));
}
gtk_grid_attach(GTK_GRID(grid),widget,col,row,1,1);
col++;

if(controller==CONTROLLER2_V2) {
widget=gtk_button_new_with_label(encoder_string[encoders[i].top_encoder_function]);
widget=gtk_button_new_with_label(ActionTable[encoders[i].top_encoder_function].str);
g_signal_connect(widget,"button_press_event",G_CALLBACK(encoder_top_cb),GINT_TO_POINTER(i));
gtk_grid_attach(GTK_GRID(grid),widget,col,row,1,1);
col++;
}

if(i!=(max_encoders-1)) {
widget=gtk_button_new_with_label(sw_string[encoders[i].switch_function]);
widget=gtk_button_new_with_label(ActionTable[encoders[i].switch_function].str);
g_signal_connect(widget,"button_press_event",G_CALLBACK(encoder_switch_cb),GINT_TO_POINTER(i));
gtk_grid_attach(GTK_GRID(grid),widget,col,row,1,1);
col++;
Expand Down
Loading

0 comments on commit 259dfa4

Please sign in to comment.