Better message tracking.
This commit is contained in:
36
gdigi.c
36
gdigi.c
@@ -220,31 +220,37 @@ MessageID get_message_id(GString *msg)
|
||||
|
||||
void push_message(GString *msg)
|
||||
{
|
||||
MessageID msgid = get_message_id(msg);
|
||||
if (((unsigned char)msg->str[0] == 0xF0) && ((unsigned char)msg->str[msg->len-1] == 0xF7))
|
||||
g_message("Pushing correct message!");
|
||||
else
|
||||
g_warning("Pushing incorrect message!");
|
||||
|
||||
int x;
|
||||
for (x = 0; x<msg->len; x++)
|
||||
printf("%02x ", (unsigned char)msg->str[x]);
|
||||
for (x = 0; x<msg->len; x++) {
|
||||
if (x && (x % 26) == 0) {
|
||||
printf("\n");
|
||||
}
|
||||
printf("%02x ", (unsigned char)msg->str[x]);
|
||||
}
|
||||
if (x % 26) {
|
||||
printf("\n");
|
||||
}
|
||||
g_message("Received %s", get_message_name(msgid));
|
||||
|
||||
switch (get_message_id(msg)) {
|
||||
switch (msgid) {
|
||||
case ACK:
|
||||
g_message("Received ACK");
|
||||
g_string_free(msg, TRUE);
|
||||
return;
|
||||
|
||||
case NACK:
|
||||
g_message("Received NACK");
|
||||
g_string_free(msg, TRUE);
|
||||
return;
|
||||
|
||||
case RECEIVE_PARAMETER_VALUE:
|
||||
unpack_message(msg);
|
||||
SettingParam *param = setting_param_new_from_data(&msg->str[8], NULL);
|
||||
g_message("Received parameter change ID: %d Position: %d Value: %d", param->id, param->position, param->value);
|
||||
g_message("ID: %d Position: %d Value: %d", param->id, param->position, param->value);
|
||||
|
||||
GDK_THREADS_ENTER();
|
||||
apply_setting_param_to_gui(param);
|
||||
@@ -400,6 +406,7 @@ void send_message(gint procedure, gchar *data, gint len)
|
||||
g_string_append_printf(msg, "%c\xF7",
|
||||
calculate_checksum(&msg->str[1], msg->len - 1));
|
||||
|
||||
g_message("Sending message %s len %d", get_message_name(procedure), len);
|
||||
send_data(msg->str, msg->len);
|
||||
|
||||
g_string_free(msg, TRUE);
|
||||
@@ -626,6 +633,23 @@ SectionID get_genetx_section_id(gint version, gint type)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* \param id Parameter ID
|
||||
* \param position Parameter position
|
||||
* \param value Parameter value
|
||||
*
|
||||
* Forms SysEx message to request parameter then sends it to device.
|
||||
**/
|
||||
void get_option(guint id, guint position)
|
||||
{
|
||||
GString *msg = g_string_sized_new(9);
|
||||
g_message("Requesting parameter id %d position %d", id, position);
|
||||
g_string_append_printf(msg, "%c%c%c",
|
||||
((id & 0xFF00) >> 8), (id & 0xFF),
|
||||
position);
|
||||
send_message(REQUEST_PARAMETER_VALUE, msg->str, msg->len);
|
||||
g_string_free(msg, TRUE);
|
||||
}
|
||||
/**
|
||||
* \param id Parameter ID
|
||||
* \param position Parameter position
|
||||
|
||||
1
gdigi.h
1
gdigi.h
@@ -1114,6 +1114,7 @@ void setting_genetx_free(SettingGenetx *genetx);
|
||||
void setting_param_free(SettingParam *param);
|
||||
SectionID get_genetx_section_id(gint version, gint type);
|
||||
void set_option(guint id, guint position, guint value);
|
||||
void get_option(guint id, guint position);
|
||||
void send_object(SectionID section, guint bank, guint index,
|
||||
gchar *name, GString *data);
|
||||
void send_preset_parameters(GList *params);
|
||||
|
||||
69
gui.c
69
gui.c
@@ -24,6 +24,71 @@
|
||||
#include "preset.h"
|
||||
#include "gtkknob.h"
|
||||
|
||||
|
||||
static gchar* MessageID_names[] = {
|
||||
[REQUEST_WHO_AM_I] = "REQUEST_WHO_AM_I",
|
||||
[RECEIVE_WHO_AM_I] = "RECEIVE_WHO_AM_I",
|
||||
|
||||
[REQUEST_DEVICE_CONFIGURATION] = "REQUEST_DEVICE_CONFIGURATION",
|
||||
[RECEIVE_DEVICE_CONFIGURATION] = "RECEIVE_DEVICE_CONFIGURATION",
|
||||
|
||||
[REQUEST_GLOBAL_PARAMETERS] = "REQUEST_GLOBAL_PARAMETERS",
|
||||
[RECEIVE_GLOBAL_PARAMETERS] = "RECEIVE_GLOBAL_PARAMETERS",
|
||||
|
||||
[REQUEST_BULK_DUMP] = "REQUEST_BULK_DUMP",
|
||||
[RECEIVE_BULK_DUMP_START] = "RECEIVE_BULK_DUMP_START",
|
||||
[RECEIVE_BULK_DUMP_END] = "RECEIVE_BULK_DUMP_END",
|
||||
|
||||
[REQUEST_PRESET_NAMES] = "REQUEST_PRESET_NAMES",
|
||||
[RECEIVE_PRESET_NAMES] = "RECEIVE_PRESET_NAMES",
|
||||
|
||||
[REQUEST_PRESET_NAME] = "REQUEST_PRESET_NAME",
|
||||
[RECEIVE_PRESET_NAME] = "RECEIVE_PRESET_NAME",
|
||||
|
||||
[REQUEST_PRESET] = "REQUEST_PRESET",
|
||||
[RECEIVE_PRESET_START] = "RECEIVE_PRESET_START",
|
||||
[RECEIVE_PRESET_END] = "RECEIVE_PRESET_END",
|
||||
[RECEIVE_PRESET_PARAMETERS] = "RECEIVE_PRESET_PARAMETERS",
|
||||
|
||||
[LOAD_EDIT_BUFFER_PRESET] = "LOAD_EDIT_BUFFER_PRESET",
|
||||
|
||||
[MOVE_PRESET] = "MOVE_PRESET",
|
||||
|
||||
[REQUEST_MODIFIER_LINKABLE_LIST] = "REQUEST_MODIFIER_LINKABLE_LIST",
|
||||
[RECEIVE_MODIFIER_LINKABLE_LIST] = "RECEIVE_MODIFIER_LINKABLE_LIST",
|
||||
|
||||
[REQUEST_PARAMETER_VALUE] = "REQUEST_PARAMETER_VALUE",
|
||||
[RECEIVE_PARAMETER_VALUE] = "RECEIVE_PARAMETER_VALUE",
|
||||
|
||||
/* version 1 and later */
|
||||
[REQUEST_OBJECT_NAMES] = "REQUEST_OBJECT_NAMES",
|
||||
[RECEIVE_OBJECT_NAMES] = "RECEIVE_OBJECT_NAMES",
|
||||
[REQUEST_OBJECT_NAME] = "REQUEST_OBJECT_NAME",
|
||||
[RECEIVE_OBJECT_NAME] = "RECEIVE_OBJECT_NAME",
|
||||
[REQUEST_OBJECT] = "REQUEST_OBJECT",
|
||||
[RECEIVE_OBJECT] = "RECEIVE_OBJECT",
|
||||
[MOVE_OBJECT] = "MOVE_OBJECT",
|
||||
[DELETE_OBJECT] = "DELETE_OBJECT",
|
||||
[REQUEST_TABLE] = "REQUEST_TABLE",
|
||||
[RECEIVE_TABLE] = "RECEIVE_TABLE",
|
||||
|
||||
[RECEIVE_DEVICE_NOTIFICATION] = "RECEIVE_DEVICE_NOTIFICATION",
|
||||
|
||||
[ACK] = "ACK",
|
||||
[NACK] = "NACK",
|
||||
};
|
||||
|
||||
const gchar*
|
||||
get_message_name(MessageID msgid)
|
||||
{
|
||||
if (MessageID_names[msgid]) {
|
||||
return MessageID_names[msgid];
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
GObject *widget;
|
||||
|
||||
@@ -1287,6 +1352,10 @@ void gui_create(Device *device)
|
||||
gtk_widget_show_all(window);
|
||||
|
||||
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
|
||||
|
||||
/* Not part of the preset, but update from the device. */
|
||||
get_option(USB_AUDIO_LEVEL, USB_POSITION);
|
||||
get_option(USB_AUDIO_PLAYBACK_MIX, USB_POSITION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user