diff --git a/src/opensuperclone/clone_gui.c b/src/opensuperclone/clone_gui.c index eead85c..2d7f31b 100644 --- a/src/opensuperclone/clone_gui.c +++ b/src/opensuperclone/clone_gui.c @@ -2982,11 +2982,122 @@ void display_identify_data_ccc(void) gtk_builder_connect_signals(builder, NULL); GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "identify_results_dialog")); GtkWidget *identify_results_data_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_results_data_label")); + + GtkWidget *identify_flags_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_flags_label")); + GtkWidget *identify_lba_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_lba_checkbox")); + GtkWidget *identify_extended_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_extended_checkbox")); + GtkWidget *identify_drive_locked_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_drive_locked_checkbox")); + GtkWidget *identify_smart_supported_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_smart_supported_checkbox")); + GtkWidget *identify_smart_enabled_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_smart_enabled_checkbox")); + GtkWidget *identify_rebuild_assist_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_rebuild_assist_checkbox")); + GtkWidget *identify_ncq_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_ncq_checkbox")); + GtkWidget *identify_sct_error_recovery_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_sct_error_recovery_checkbox")); + + GtkWidget *identify_mdma_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_label")); + GtkWidget *identify_mdma_supported_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_supported_label")); + GtkWidget *identify_mdma_selected_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_selected_label")); + GtkWidget *identify_mdma_supported_0_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_supported_0_checkbox")); + GtkWidget *identify_mdma_supported_1_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_supported_1_checkbox")); + GtkWidget *identify_mdma_supported_2_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_supported_2_checkbox")); + GtkWidget *identify_mdma_selected_0_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_selected_0_checkbox")); + GtkWidget *identify_mdma_selected_1_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_selected_1_checkbox")); + GtkWidget *identify_mdma_selected_2_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_mdma_selected_2_checkbox")); + + GtkWidget *identify_udma_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_label")); + GtkWidget *identify_udma_supported_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_label")); + GtkWidget *identify_udma_selected_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_label")); + GtkWidget *identify_udma_supported_0_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_0_checkbox")); + GtkWidget *identify_udma_supported_1_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_1_checkbox")); + GtkWidget *identify_udma_supported_2_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_2_checkbox")); + GtkWidget *identify_udma_supported_3_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_3_checkbox")); + GtkWidget *identify_udma_supported_4_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_4_checkbox")); + GtkWidget *identify_udma_supported_5_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_5_checkbox")); + GtkWidget *identify_udma_supported_6_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_supported_6_checkbox")); + GtkWidget *identify_udma_selected_0_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_0_checkbox")); + GtkWidget *identify_udma_selected_1_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_1_checkbox")); + GtkWidget *identify_udma_selected_2_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_2_checkbox")); + GtkWidget *identify_udma_selected_3_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_3_checkbox")); + GtkWidget *identify_udma_selected_4_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_4_checkbox")); + GtkWidget *identify_udma_selected_5_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_5_checkbox")); + GtkWidget *identify_udma_selected_6_checkbox = GTK_WIDGET(gtk_builder_get_object(builder, "identify_udma_selected_6_checkbox")); + g_object_unref(builder); gtk_label_set_text(GTK_LABEL(identify_results_data_label), identify_device_raw_text_ccc); - gtk_window_set_title(GTK_WINDOW(dialog), _("Results")); + gtk_label_set_text(GTK_LABEL(identify_flags_label), _("Identify Flags")); + + gtk_button_set_label(GTK_BUTTON(identify_lba_checkbox), _("LBA Supported")); + gtk_button_set_label(GTK_BUTTON(identify_extended_checkbox), _("LBA48 Supported")); + gtk_button_set_label(GTK_BUTTON(identify_drive_locked_checkbox), _("Security Locked")); + gtk_button_set_label(GTK_BUTTON(identify_smart_supported_checkbox), _("S.M.A.R.T. Supported")); + gtk_button_set_label(GTK_BUTTON(identify_smart_enabled_checkbox), _("S.M.A.R.T. Enabled")); + gtk_button_set_label(GTK_BUTTON(identify_rebuild_assist_checkbox), _("Rebuild Assist Supported")); + gtk_button_set_label(GTK_BUTTON(identify_ncq_checkbox), _("NCQ Supported")); + gtk_button_set_label(GTK_BUTTON(identify_sct_error_recovery_checkbox), _("SCT Error Recovery Supported")); + + gtk_label_set_text(GTK_LABEL(identify_mdma_label), _("Multiword DMA Support")); + gtk_label_set_text(GTK_LABEL(identify_mdma_supported_label), _("Supported")); + gtk_label_set_text(GTK_LABEL(identify_mdma_selected_label), _("Selected")); + + gtk_button_set_label(GTK_BUTTON(identify_mdma_supported_0_checkbox), _("0")); + gtk_button_set_label(GTK_BUTTON(identify_mdma_supported_1_checkbox), _("1")); + gtk_button_set_label(GTK_BUTTON(identify_mdma_supported_2_checkbox), _("2")); + gtk_button_set_label(GTK_BUTTON(identify_mdma_selected_0_checkbox), _("0")); + gtk_button_set_label(GTK_BUTTON(identify_mdma_selected_1_checkbox), _("1")); + gtk_button_set_label(GTK_BUTTON(identify_mdma_selected_2_checkbox), _("2")); + + gtk_label_set_text(GTK_LABEL(identify_udma_label), _("Ultra DMA Support")); + gtk_label_set_text(GTK_LABEL(identify_udma_supported_label), _("Supported")); + gtk_label_set_text(GTK_LABEL(identify_udma_selected_label), _("Selected")); + + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_0_checkbox), _("0")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_1_checkbox), _("1")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_2_checkbox), _("2")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_3_checkbox), _("3")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_4_checkbox), _("4")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_5_checkbox), _("5")); + gtk_button_set_label(GTK_BUTTON(identify_udma_supported_6_checkbox), _("6")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_0_checkbox), _("0")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_1_checkbox), _("1")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_2_checkbox), _("2")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_3_checkbox), _("3")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_4_checkbox), _("4")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_5_checkbox), _("5")); + gtk_button_set_label(GTK_BUTTON(identify_udma_selected_6_checkbox), _("6")); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_lba_checkbox), identify_device_data_ccc.lba_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_extended_checkbox), identify_device_data_ccc.extended_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_drive_locked_checkbox), identify_device_data_ccc.drive_locked); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_smart_supported_checkbox), identify_device_data_ccc.smart_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_smart_enabled_checkbox), identify_device_data_ccc.smart_enabled); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_rebuild_assist_checkbox), identify_device_data_ccc.rebuild_assist_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_ncq_checkbox), identify_device_data_ccc.ncq_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_sct_error_recovery_checkbox), identify_device_data_ccc.sct_error_recovery_control); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_supported_0_checkbox), identify_device_data_ccc.mdma_mode_0_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_supported_1_checkbox), identify_device_data_ccc.mdma_mode_1_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_supported_2_checkbox), identify_device_data_ccc.mdma_mode_2_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_selected_0_checkbox), identify_device_data_ccc.mdma_mode_0_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_selected_1_checkbox), identify_device_data_ccc.mdma_mode_1_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_mdma_selected_2_checkbox), identify_device_data_ccc.mdma_mode_2_selected); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_0_checkbox), identify_device_data_ccc.udma_mode_0_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_1_checkbox), identify_device_data_ccc.udma_mode_1_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_2_checkbox), identify_device_data_ccc.udma_mode_2_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_3_checkbox), identify_device_data_ccc.udma_mode_3_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_4_checkbox), identify_device_data_ccc.udma_mode_4_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_5_checkbox), identify_device_data_ccc.udma_mode_5_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_supported_6_checkbox), identify_device_data_ccc.udma_mode_6_supported); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_0_checkbox), identify_device_data_ccc.udma_mode_0_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_1_checkbox), identify_device_data_ccc.udma_mode_1_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_2_checkbox), identify_device_data_ccc.udma_mode_2_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_3_checkbox), identify_device_data_ccc.udma_mode_3_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_4_checkbox), identify_device_data_ccc.udma_mode_4_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_5_checkbox), identify_device_data_ccc.udma_mode_5_selected); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(identify_udma_selected_6_checkbox), identify_device_data_ccc.udma_mode_6_selected); + + gtk_window_set_title(GTK_WINDOW(dialog), _("Identify Results")); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } diff --git a/src/opensuperclone/clone_gui_common.h b/src/opensuperclone/clone_gui_common.h index ecf10c2..d7e4a5d 100644 --- a/src/opensuperclone/clone_gui_common.h +++ b/src/opensuperclone/clone_gui_common.h @@ -120,6 +120,37 @@ bool rebuild_assist_enabled_ccc; bool use_fpdma_ccc; bool wait_for_ds_bit_ccc; char identify_device_raw_text_ccc[65536]; +struct +{ + bool lba_supported; + bool extended_supported; + bool drive_locked; + bool smart_supported; + bool smart_enabled; + bool rebuild_assist_supported; + bool ncq_supported; + bool sct_error_recovery_control; + bool mdma_mode_0_supported; + bool mdma_mode_1_supported; + bool mdma_mode_2_supported; + bool udma_mode_0_supported; + bool udma_mode_1_supported; + bool udma_mode_2_supported; + bool udma_mode_3_supported; + bool udma_mode_4_supported; + bool udma_mode_5_supported; + bool udma_mode_6_supported; + bool mdma_mode_0_selected; + bool mdma_mode_1_selected; + bool mdma_mode_2_selected; + bool udma_mode_0_selected; + bool udma_mode_1_selected; + bool udma_mode_2_selected; + bool udma_mode_3_selected; + bool udma_mode_4_selected; + bool udma_mode_5_selected; + bool udma_mode_6_selected; +} identify_device_data_ccc; struct { diff --git a/src/opensuperclone/opensuperclone.c b/src/opensuperclone/opensuperclone.c index bc8e4b0..7bb4ea2 100644 --- a/src/opensuperclone/opensuperclone.c +++ b/src/opensuperclone/opensuperclone.c @@ -13741,6 +13741,34 @@ int process_source_ccc(void) identify_flags_ccc.ultra_dma_mode4_selected = get_flag_data_from_identify_ccc(88, 12, 12); identify_flags_ccc.ultra_dma_mode5_selected = get_flag_data_from_identify_ccc(88, 13, 13); identify_flags_ccc.ultra_dma_mode6_selected = get_flag_data_from_identify_ccc(88, 14, 14); + identify_device_data_ccc.lba_supported = identify_flags_ccc.lba_supported; + identify_device_data_ccc.extended_supported = identify_flags_ccc.extended_support; + identify_device_data_ccc.drive_locked = identify_flags_ccc.drive_locked; + identify_device_data_ccc.smart_supported = identify_flags_ccc.smart_supported; + identify_device_data_ccc.smart_enabled = identify_flags_ccc.smart_enabled; + identify_device_data_ccc.rebuild_assist_supported = identify_flags_ccc.rebuild_assist_supported; + identify_device_data_ccc.ncq_supported = identify_flags_ccc.ncq_supported; + identify_device_data_ccc.sct_error_recovery_control = identify_flags_ccc.sct_error_recovery_control; + identify_device_data_ccc.mdma_mode_0_supported = identify_flags_ccc.multiword_dma_mode0_supported; + identify_device_data_ccc.mdma_mode_1_supported = identify_flags_ccc.multiword_dma_mode1_supported; + identify_device_data_ccc.mdma_mode_2_supported = identify_flags_ccc.multiword_dma_mode2_supported; + identify_device_data_ccc.udma_mode_0_supported = identify_flags_ccc.ultra_dma_mode0_supported; + identify_device_data_ccc.udma_mode_1_supported = identify_flags_ccc.ultra_dma_mode1_supported; + identify_device_data_ccc.udma_mode_2_supported = identify_flags_ccc.ultra_dma_mode2_supported; + identify_device_data_ccc.udma_mode_3_supported = identify_flags_ccc.ultra_dma_mode3_supported; + identify_device_data_ccc.udma_mode_4_supported = identify_flags_ccc.ultra_dma_mode4_supported; + identify_device_data_ccc.udma_mode_5_supported = identify_flags_ccc.ultra_dma_mode5_supported; + identify_device_data_ccc.udma_mode_6_supported = identify_flags_ccc.ultra_dma_mode6_supported; + identify_device_data_ccc.mdma_mode_0_selected = identify_flags_ccc.multiword_dma_mode0_selected; + identify_device_data_ccc.mdma_mode_1_selected = identify_flags_ccc.multiword_dma_mode1_selected; + identify_device_data_ccc.mdma_mode_2_selected = identify_flags_ccc.multiword_dma_mode2_selected; + identify_device_data_ccc.udma_mode_0_selected = identify_flags_ccc.ultra_dma_mode0_selected; + identify_device_data_ccc.udma_mode_1_selected = identify_flags_ccc.ultra_dma_mode1_selected; + identify_device_data_ccc.udma_mode_2_selected = identify_flags_ccc.ultra_dma_mode2_selected; + identify_device_data_ccc.udma_mode_3_selected = identify_flags_ccc.ultra_dma_mode3_selected; + identify_device_data_ccc.udma_mode_4_selected = identify_flags_ccc.ultra_dma_mode4_selected; + identify_device_data_ccc.udma_mode_5_selected = identify_flags_ccc.ultra_dma_mode5_selected; + identify_device_data_ccc.udma_mode_6_selected = identify_flags_ccc.ultra_dma_mode6_selected; strncat(identify_device_raw_text_ccc, "#\n", sizeof(identify_device_raw_text_ccc) - strlen(identify_device_raw_text_ccc) - 1); snprintf(tempstring, sizeof(tempstring), "# lba supported = %s\n", identify_flags_ccc.lba_supported ? "yes" : "no"); strncat(identify_device_raw_text_ccc, tempstring, sizeof(identify_device_raw_text_ccc) - strlen(identify_device_raw_text_ccc) - 1); diff --git a/src/opensuperclone/opensuperclone.glade b/src/opensuperclone/opensuperclone.glade index 4f9edd6..e3ba3e8 100644 --- a/src/opensuperclone/opensuperclone.glade +++ b/src/opensuperclone/opensuperclone.glade @@ -6172,12 +6172,13 @@ no data dialog window_main - + True False + vertical 2 - + True False end @@ -6215,18 +6216,725 @@ no data - + True True - + True False - + True False - identify results + vertical + + + True + False + 0.009999999776482582 + in + + + True + False + 12 + + + True + False + + + True + False + vertical + + + lba supported + True + False + True + False + True + + + False + True + 0 + + + + + extended supported + True + False + True + False + True + + + False + True + 1 + + + + + drive locked + True + False + True + False + True + + + False + True + 2 + + + + + smart supported + True + False + True + False + True + + + False + True + 3 + + + + + True + True + 0 + + + + + True + False + vertical + + + smart enabled + True + False + True + False + True + + + False + True + 0 + + + + + rebuild assist supported + True + False + True + False + True + + + False + True + 1 + + + + + ncq supported + True + False + True + False + True + + + False + True + 2 + + + + + sct error recovery control + True + False + True + False + True + + + False + True + 3 + + + + + True + True + 1 + + + + + + + + + True + False + identify flags + True + + + + + + + + False + True + 0 + + + + + True + False + 0.009999999776482582 + in + + + True + False + 12 + + + True + False + + + True + False + vertical + + + True + False + supported + + + False + True + 0 + + + + + True + False + selected + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + + + 0 + True + False + True + False + True + + + True + True + 1 + + + + + 1 + True + False + True + False + True + + + True + True + 2 + + + + + 2 + True + False + True + False + True + + + True + True + 3 + + + + + False + True + 0 + + + + + True + False + + + 0 + True + False + True + False + True + + + True + True + 1 + + + + + 1 + True + False + True + False + True + + + True + True + 2 + + + + + 2 + True + False + True + False + True + + + True + True + 3 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + multiword dma support + True + + + + + + + + False + True + 1 + + + + + True + False + 0.009999999776482582 + in + + + True + False + 12 + + + True + False + + + True + False + vertical + + + True + False + supported + + + False + True + 0 + + + + + True + False + selected + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + + + 0 + True + False + True + False + True + + + True + True + 0 + + + + + 1 + True + False + True + False + True + + + True + True + 1 + + + + + 2 + True + False + True + False + True + + + True + True + 2 + + + + + 3 + True + False + True + False + True + + + True + True + 3 + + + + + 4 + True + False + True + False + True + + + True + True + 4 + + + + + 5 + True + False + True + False + True + + + True + True + 5 + + + + + 6 + True + False + True + False + True + + + True + True + 6 + + + + + False + True + 0 + + + + + True + False + + + 0 + True + False + True + False + True + + + True + True + 0 + + + + + 1 + True + False + True + False + True + + + True + True + 1 + + + + + 2 + True + False + True + False + True + + + True + True + 2 + + + + + 3 + True + False + True + False + True + + + True + True + 3 + + + + + 4 + True + False + True + False + True + + + True + True + 4 + + + + + 5 + True + False + True + False + True + + + True + True + 5 + + + + + 6 + True + False + True + False + True + + + True + True + 6 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + ultra dma support + True + + + + + + + + False + True + 2 + + + + + True + False + identify results + + + False + True + 3 + +