diff options
Diffstat (limited to 'rcm-client-hardware-list.c')
-rw-r--r-- | rcm-client-hardware-list.c | 90 |
1 files changed, 2 insertions, 88 deletions
diff --git a/rcm-client-hardware-list.c b/rcm-client-hardware-list.c index 2c47ee5..ea1a0d9 100644 --- a/rcm-client-hardware-list.c +++ b/rcm-client-hardware-list.c @@ -10,6 +10,7 @@ #include "rcm-client-main.h" #include "rcm-client-hardware-list.h" #include "rcm-client-receive.h" +#include "rcm-client-advanced.h" static GList *hw_list = NULL; @@ -85,99 +86,12 @@ hardware_properties_cb(GtkButton *button, gpointer user_data) gtk_widget_hide(dialog); } -static GVariant * -encode_nec(uint32_t scancode_raw) -{ - GVariantBuilder *builder; - GVariant *r; - unsigned i; - uint32_t scancode; - - scancode = ((((scancode_raw >> 24) & 0xff) << 0) | - (((scancode_raw >> 16) & 0xff) << 8) | - (((scancode_raw >> 8) & 0xff) << 16) | - (((scancode_raw >> 0) & 0xff) << 24)); - - builder = g_variant_builder_new(G_VARIANT_TYPE_ARRAY); - g_variant_builder_add(builder, "u", 9000); - g_variant_builder_add(builder, "u", 4500); - - for (i = 0; i < 32; i++) { - g_variant_builder_add(builder, "u", 560); - if (scancode & 0x1) - g_variant_builder_add(builder, "u", 3 * 560); - else - g_variant_builder_add(builder, "u", 1 * 560); - scancode >>= 1; - } - - g_variant_builder_add(builder, "u", 560); - - r = g_variant_builder_end(builder); - g_variant_builder_unref(builder); - return r; -} - -static void -advanced_transmit_cb(GtkButton *button, gpointer user_data) -{ - RCDevice *object = user_data; - GtkComboBoxText *protocolw; - GtkEntry *scancodew; - gchar *protocol; - const gchar *scancode; - uint64_t sc; - GError *error = NULL; - gboolean r; - - protocolw = GTK_COMBO_BOX_TEXT(gtk_builder_get_object(global->builder, "advanced_main_transmit_protocol")); - scancodew = GTK_ENTRY(gtk_builder_get_object(global->builder, "advanced_main_transmit_scancode")); - - protocol = gtk_combo_box_text_get_active_text(protocolw); - scancode = gtk_entry_get_text(scancodew); - printf("Asked to transmit: protocol %s scancode %s\n", protocol, scancode); - g_free(protocol); - - if (!strcmp(protocol, "NEC")) { - printf("Invalid protocol: %s\n", protocol); - return; - } - - r = strtoull_strict(scancode, &sc); - if (r < 0 || sc > UINT32_MAX) { - printf("Invalid scancode: %s\n", scancode); - return; - } - - if (!rcdevice_call_transmit_sync(object, encode_nec(sc), NULL, &error)) { - printf("rcdevice_call_transmit_sync failed: %s\n", - error ? error->message : "no error reported"); - g_error_free(error); - } -} - static void advanced_cb(GtkButton *button, gpointer user_data) { RCDevice *object = user_data; - GtkWidget *dialog; - GtkWidget *title; - GtkWidget *transmit; - gchar *titlestr; - - dialog = GTK_WIDGET(gtk_builder_get_object(global->builder, "advanced")); - - title = GTK_WIDGET(gtk_builder_get_object(global->builder, "advanced_main_title_label")); - titlestr = g_markup_printf_escaped("<b><big>Advanced Actions</big></b>\nFor device %s", - rcdevice_get_sys_name(object)); - gtk_label_set_markup(GTK_LABEL(title), titlestr); - g_free(titlestr); - - transmit = GTK_WIDGET(gtk_builder_get_object(global->builder, "advanced_main_transmit_button")); - g_signal_connect(transmit, "clicked", G_CALLBACK(advanced_transmit_cb), object); - g_signal_connect_swapped(dialog, "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), dialog); - gtk_widget_show(dialog); + advanced_init_ui(object); } static void |