Move markup to resources in dev info command.

This commit is contained in:
2025-08-18 13:40:04 +01:00
parent 671d675862
commit abf9b60ba1
3 changed files with 177 additions and 196 deletions

View File

@@ -114,28 +114,28 @@
<value>Device identified as {0}</value> <value>Device identified as {0}</value>
</data> </data>
<data name="ASCII_Page_0_1" xml:space="preserve"> <data name="ASCII_Page_0_1" xml:space="preserve">
<value>ASCII Page {0:X2}h: {1}</value> <value>[bold][blue]ASCII Page[/bold][/] [italic][teal]{0:X2}h[/][/]: [slateblue1]{1}[/]</value>
</data> </data>
<data name="Unit_Serial_Number_0" xml:space="preserve"> <data name="Unit_Serial_Number_0" xml:space="preserve">
<value>Unit Serial Number: {0}</value> <value>[bold][blue]Unit Serial Number:[/][/] [italic][teal]{0}[/][/]</value>
</data> </data>
<data name="ASCII_implemented_operating_definitions_0" xml:space="preserve"> <data name="ASCII_implemented_operating_definitions_0" xml:space="preserve">
<value>ASCII implemented operating definitions: {0}</value> <value>[bold][blue]ASCII implemented operating definitions:[/][/] [slateblue1]{0}[/]</value>
</data> </data>
<data name="Manufacturer_assigned_Serial_Number_0" xml:space="preserve"> <data name="Manufacturer_assigned_Serial_Number_0" xml:space="preserve">
<value>Manufacturer-assigned Serial Number: {0}</value> <value>[bold][blue]Manufacturer-assigned Serial Number:[/][/] [italic][teal]{0}[/][/]</value>
</data> </data>
<data name="TapeAlert_Supported_Flags_Bitmap_0" xml:space="preserve"> <data name="TapeAlert_Supported_Flags_Bitmap_0" xml:space="preserve">
<value>TapeAlert Supported Flags Bitmap: 0x{0:X16}</value> <value>[bold][blue]TapeAlert Supported Flags Bitmap:[/][/] [italic][teal]0x{0:X16}[/][/]</value>
</data> </data>
<data name="Automation_Device_Serial_Number_0" xml:space="preserve"> <data name="Automation_Device_Serial_Number_0" xml:space="preserve">
<value>Automation Device Serial Number: {0}</value> <value>[bold][blue]Automation Device Serial Number:[/][/] [italic][teal]{0}[/][/]</value>
</data> </data>
<data name="Data_Transfer_Device_Element_Address_0" xml:space="preserve"> <data name="Data_Transfer_Device_Element_Address_0" xml:space="preserve">
<value>Data Transfer Device Element Address: 0x{0}</value> <value>[bold][blue]Data Transfer Device Element Address:[/][/] [italic][teal]0x{0}[/][/]</value>
</data> </data>
<data name="Found_undecoded_SCSI_VPD_page_0" xml:space="preserve"> <data name="Found_undecoded_SCSI_VPD_page_0" xml:space="preserve">
<value>Found undecoded SCSI VPD page 0x{0:X2}</value> <value>[bold][blue]Found undecoded SCSI VPD page[/][/] [italic][teal]0x{0:X2}[/][/]</value>
</data> </data>
<data name="GET_CONFIGURATION_length_is_0" xml:space="preserve"> <data name="GET_CONFIGURATION_length_is_0" xml:space="preserve">
<value>GET CONFIGURATION length is {0} bytes</value> <value>GET CONFIGURATION length is {0} bytes</value>
@@ -153,127 +153,127 @@
<value>GET CONFIGURATION returned no feature descriptors</value> <value>GET CONFIGURATION returned no feature descriptors</value>
</data> </data>
<data name="Drive_has_loaded_a_total_of_0_discs" xml:space="preserve"> <data name="Drive_has_loaded_a_total_of_0_discs" xml:space="preserve">
<value>Drive has loaded a total of {0} discs</value> <value>[slateblue1]Drive has loaded a total of [teal]{0}[/] discs[/]</value>
</data> </data>
<data name="Drive_has_spent_0_reading_CDs" xml:space="preserve"> <data name="Drive_has_spent_0_reading_CDs" xml:space="preserve">
<value>Drive has spent {0} reading CDs</value> <value>[slateblue1]Drive has spent [aqua]{0}[/] reading CDs[/]</value>
</data> </data>
<data name="Drive_has_spent_0_writing_CDs" xml:space="preserve"> <data name="Drive_has_spent_0_writing_CDs" xml:space="preserve">
<value>Drive has spent {0} writing CDs</value> <value>[slateblue1]Drive has spent [aqua]{0}[/] writing CDs[/]</value>
</data> </data>
<data name="Drive_has_spent_0_reading_DVDs" xml:space="preserve"> <data name="Drive_has_spent_0_reading_DVDs" xml:space="preserve">
<value>Drive has spent {0} reading DVDs</value> <value>[slateblue1]Drive has spent [aqua]{0}[/] reading DVDs[/]</value>
</data> </data>
<data name="Drive_has_spent_0_writing_DVDs" xml:space="preserve"> <data name="Drive_has_spent_0_writing_DVDs" xml:space="preserve">
<value>Drive has spent {0} writing DVDs</value> <value>[slateblue1]Drive has spent [aqua]{0}[/] writing DVDs[/]</value>
</data> </data>
<data name="Drive_supports_PoweRec_is_enabled_and_recommends_0" xml:space="preserve"> <data name="Drive_supports_PoweRec_is_enabled_and_recommends_0" xml:space="preserve">
<value>Drive supports PoweRec, is enabled and recommends {0} Kb/sec.</value> <value>[slateblue1]Drive supports PoweRec, is enabled and recommends [lime]{0}[/] Kb/sec.[/]</value>
</data> </data>
<data name="Drive_supports_PoweRec_and_has_it_enabled" xml:space="preserve"> <data name="Drive_supports_PoweRec_and_has_it_enabled" xml:space="preserve">
<value>Drive supports PoweRec and has it enabled.</value> <value>[slateblue1]Drive supports PoweRec and has it enabled.[/]</value>
</data> </data>
<data name="Selected_PoweRec_speed_for_currently_inserted_media_is_0_1" xml:space="preserve"> <data name="Selected_PoweRec_speed_for_currently_inserted_media_is_0_1" xml:space="preserve">
<value>Selected PoweRec speed for currently inserted media is {0} Kb/sec ({1}x)</value> <value>[slateblue1]Selected PoweRec speed for currently inserted media is [lime]{0}[/] Kb/sec ([teal]{1}x[/])[/]</value>
</data> </data>
<data name="Maximum_PoweRec_speed_for_currently_inserted_media_is_0_1" xml:space="preserve"> <data name="Maximum_PoweRec_speed_for_currently_inserted_media_is_0_1" xml:space="preserve">
<value>Maximum PoweRec speed for currently inserted media is {0} Kb/sec ({1}x)</value> <value>[slateblue1]Maximum PoweRec speed for currently inserted media is [lime]{0}[/] Kb/sec ([teal]{1}x[/])[/]</value>
</data> </data>
<data name="Last_used_PoweRec_was_0_1" xml:space="preserve"> <data name="Last_used_PoweRec_was_0_1" xml:space="preserve">
<value>Last used PoweRec was {0} Kb/sec ({1}x)</value> <value>[slateblue1]Last used PoweRec was [lime]{0}[/] Kb/sec ([teal]{1}x[/])[/]</value>
</data> </data>
<data name="Drive_supports_PoweRec_and_has_it_disabled" xml:space="preserve"> <data name="Drive_supports_PoweRec_and_has_it_disabled" xml:space="preserve">
<value>Drive supports PoweRec and has it disabled.</value> <value>[slateblue1]Drive supports PoweRec and has it disabled.[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_SilentMode" xml:space="preserve"> <data name="Drive_supports_Plextor_SilentMode" xml:space="preserve">
<value>Drive supports Plextor SilentMode</value> <value>[slateblue1]Drive supports Plextor SilentMode[/]</value>
</data> </data>
<data name="Plextor_SilentMode_is_enabled" xml:space="preserve"> <data name="Plextor_SilentMode_is_enabled" xml:space="preserve">
<value>Plextor SilentMode is enabled:</value> <value>[slateblue1]Plextor SilentMode is enabled:[/]</value>
</data> </data>
<data name="Access_time_is_slow" xml:space="preserve"> <data name="Access_time_is_slow" xml:space="preserve">
<value>Access time is slow</value> <value>[slateblue1]Access time is slow[/]</value>
</data> </data>
<data name="Access_time_is_fast" xml:space="preserve"> <data name="Access_time_is_fast" xml:space="preserve">
<value>Access time is fast</value> <value>[slateblue1]Access time is fast[/]</value>
</data> </data>
<data name="CD_read_speed_limited_to_0" xml:space="preserve"> <data name="CD_read_speed_limited_to_0" xml:space="preserve">
<value>CD read speed limited to {0}x</value> <value>[slateblue1]CD read speed limited to [teal]{0}x[/][/]</value>
</data> </data>
<data name="DVD_read_speed_limited_to_0" xml:space="preserve"> <data name="DVD_read_speed_limited_to_0" xml:space="preserve">
<value>DVD read speed limited to {0}x</value> <value>[slateblue1]DVD read speed limited to [teal]{0}x[/][/]</value>
</data> </data>
<data name="CD_write_speed_limited_to_0" xml:space="preserve"> <data name="CD_write_speed_limited_to_0" xml:space="preserve">
<value>CD write speed limited to {0}x</value> <value>[slateblue1]CD write speed limited to [teal]{0}x[/][/]</value>
</data> </data>
<data name="Drive_supports_Plextor_GigaRec" xml:space="preserve"> <data name="Drive_supports_Plextor_GigaRec" xml:space="preserve">
<value>Drive supports Plextor GigaRec</value> <value>[slateblue1]Drive supports Plextor GigaRec[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_SecuRec" xml:space="preserve"> <data name="Drive_supports_Plextor_SecuRec" xml:space="preserve">
<value>Drive supports Plextor SecuRec</value> <value>[slateblue1]Drive supports Plextor SecuRec[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_SpeedRead" xml:space="preserve"> <data name="Drive_supports_Plextor_SpeedRead" xml:space="preserve">
<value>Drive supports Plextor SpeedRead</value> <value>[slateblue1]Drive supports Plextor SpeedRead[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_SpeedRead_and_has_it_enabled" xml:space="preserve"> <data name="Drive_supports_Plextor_SpeedRead_and_has_it_enabled" xml:space="preserve">
<value>Drive supports Plextor SpeedRead and has it enabled</value> <value>[green]Drive supports Plextor SpeedRead and has it enabled[/]</value>
</data> </data>
<data name="Drive_supports_hiding_CDRs_and_forcing_single_session" xml:space="preserve"> <data name="Drive_supports_hiding_CDRs_and_forcing_single_session" xml:space="preserve">
<value>Drive supports hiding CD-Rs and forcing single session</value> <value>[slateblue1]Drive supports hiding CD-Rs and forcing single session[/]</value>
</data> </data>
<data name="Drive_currently_hides_CDRs" xml:space="preserve"> <data name="Drive_currently_hides_CDRs" xml:space="preserve">
<value>Drive currently hides CD-Rs</value> <value>[green]Drive currently hides CD-Rs[/]</value>
</data> </data>
<data name="Drive_currently_forces_single_session" xml:space="preserve"> <data name="Drive_currently_forces_single_session" xml:space="preserve">
<value>Drive currently forces single session</value> <value>[green]Drive currently forces single session[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_VariRec" xml:space="preserve"> <data name="Drive_supports_Plextor_VariRec" xml:space="preserve">
<value>Drive supports Plextor VariRec</value> <value>[slateblue1]Drive supports Plextor VariRec[/]</value>
</data> </data>
<data name="Drive_supports_Plextor_VariRec_for_DVDs" xml:space="preserve"> <data name="Drive_supports_Plextor_VariRec_for_DVDs" xml:space="preserve">
<value>Drive supports Plextor VariRec for DVDs</value> <value>[slateblue1]Drive supports Plextor VariRec for DVDs[/]</value>
</data> </data>
<data name="Drive_supports_bitsetting_DVD_R_book_type" xml:space="preserve"> <data name="Drive_supports_bitsetting_DVD_R_book_type" xml:space="preserve">
<value>Drive supports bitsetting DVD+R book type</value> <value>[slateblue1]Drive supports bitsetting DVD+R book type[/]</value>
</data> </data>
<data name="Drive_supports_bitsetting_DVD_R_DL_book_type" xml:space="preserve"> <data name="Drive_supports_bitsetting_DVD_R_DL_book_type" xml:space="preserve">
<value>Drive supports bitsetting DVD+R DL book type</value> <value>[slateblue1]Drive supports bitsetting DVD+R DL book type[/]</value>
</data> </data>
<data name="Drive_supports_test_writing_DVD_Plus" xml:space="preserve"> <data name="Drive_supports_test_writing_DVD_Plus" xml:space="preserve">
<value>Drive supports test writing DVD+</value> <value>[slateblue1]Drive supports test writing DVD+[/]</value>
</data> </data>
<data name="Can_do_challenge_response_with_Xbox_discs" xml:space="preserve"> <data name="Can_do_challenge_response_with_Xbox_discs" xml:space="preserve">
<value>Can do challenge/response with Xbox discs</value> <value>[slateblue1]Can do challenge/response with Xbox discs[/]</value>
</data> </data>
<data name="Can_read_and_decrypt_SS_from_Xbox_discs" xml:space="preserve"> <data name="Can_read_and_decrypt_SS_from_Xbox_discs" xml:space="preserve">
<value>Can read and decrypt SS from Xbox discs</value> <value>[slateblue1]Can read and decrypt SS from Xbox discs[/]</value>
</data> </data>
<data name="Can_set_xtreme_unlock_state_with_Xbox_discs" xml:space="preserve"> <data name="Can_set_xtreme_unlock_state_with_Xbox_discs" xml:space="preserve">
<value>Can set xtreme unlock state with Xbox discs</value> <value>[slateblue1]Can set xtreme unlock state with Xbox discs[/]</value>
</data> </data>
<data name="Can_set_wxripper_unlock_state_with_Xbox_discs" xml:space="preserve"> <data name="Can_set_wxripper_unlock_state_with_Xbox_discs" xml:space="preserve">
<value>Can set wxripper unlock state with Xbox discs</value> <value>[slateblue1]Can set wxripper unlock state with Xbox discs[/]</value>
</data> </data>
<data name="Can_do_challenge_response_with_Xbox_360_discs" xml:space="preserve"> <data name="Can_do_challenge_response_with_Xbox_360_discs" xml:space="preserve">
<value>Can do challenge/response with Xbox 360 discs</value> <value>[slateblue1]Can do challenge/response with Xbox 360 discs[/]</value>
</data> </data>
<data name="Can_read_and_decrypt_SS_from_Xbox_360_discs" xml:space="preserve"> <data name="Can_read_and_decrypt_SS_from_Xbox_360_discs" xml:space="preserve">
<value>Can read and decrypt SS from Xbox 360 discs</value> <value>[slateblue1]Can read and decrypt SS from Xbox 360 discs[/]</value>
</data> </data>
<data name="Can_set_xtreme_unlock_state_with_Xbox_360_discs" xml:space="preserve"> <data name="Can_set_xtreme_unlock_state_with_Xbox_360_discs" xml:space="preserve">
<value>Can set xtreme unlock state with Xbox 360 discs</value> <value>[slateblue1]Can set xtreme unlock state with Xbox 360 discs[/]</value>
</data> </data>
<data name="Can_set_wxripper_unlock_state_with_Xbox_360_discs" xml:space="preserve"> <data name="Can_set_wxripper_unlock_state_with_Xbox_360_discs" xml:space="preserve">
<value>Can set wxripper unlock state with Xbox 360 discs</value> <value>[slateblue1]Can set wxripper unlock state with Xbox 360 discs[/]</value>
</data> </data>
<data name="Can_set_Kreon_locked_state" xml:space="preserve"> <data name="Can_set_Kreon_locked_state" xml:space="preserve">
<value>Can set locked state</value> <value>[slateblue1]Can set locked state[/]</value>
</data> </data>
<data name="Kreon_Can_skip_read_errors" xml:space="preserve"> <data name="Kreon_Can_skip_read_errors" xml:space="preserve">
<value>Can skip read errors</value> <value>[slateblue1]Can skip read errors[/]</value>
</data> </data>
<data name="Block_limits_for_device" xml:space="preserve"> <data name="Block_limits_for_device" xml:space="preserve">
<value>Block limits for device:</value> <value>[bold][blue]Block limits for device:[/][/]</value>
</data> </data>
<data name="Generating_subchannels" xml:space="preserve"> <data name="Generating_subchannels" xml:space="preserve">
<value>Generating subchannels...</value> <value>Generating subchannels...</value>
@@ -1387,10 +1387,10 @@
<value>Unable to communicate with ATA device.</value> <value>Unable to communicate with ATA device.</value>
</data> </data>
<data name="Device_not_in_database" xml:space="preserve"> <data name="Device_not_in_database" xml:space="preserve">
<value>Device not in database, please create a device report and attach it to a Github issue.</value> <value>[red]Device not in database, please create a device report and attach it to a Github issue.[/]</value>
</data> </data>
<data name="Device_in_database_since_0" xml:space="preserve"> <data name="Device_in_database_since_0" xml:space="preserve">
<value>Device in database since {0}.</value> <value>[slateblue1]Device in database since [yellow3]{0}[/].[/]</value>
</data> </data>
<data name="Could_not_detect_image_format" xml:space="preserve"> <data name="Could_not_detect_image_format" xml:space="preserve">
<value>Could not detect image format.</value> <value>Could not detect image format.</value>

View File

@@ -299,49 +299,49 @@ In you are unsure, please press N to not continue.</value>
<value>Prefix for saving binary information from device.</value> <value>Prefix for saving binary information from device.</value>
</data> </data>
<data name="Title_USB_device" xml:space="preserve"> <data name="Title_USB_device" xml:space="preserve">
<value>USB device</value> <value>[bold][blue]USB device[/][/]</value>
</data> </data>
<data name="Title_FireWire_device" xml:space="preserve"> <data name="Title_FireWire_device" xml:space="preserve">
<value>FireWire device</value> <value>[bold][blue]FireWire device[/][/]</value>
</data> </data>
<data name="Title_PCMCIA_device" xml:space="preserve"> <data name="Title_PCMCIA_device" xml:space="preserve">
<value>PCMCIA device</value> <value>[bold][blue]PCMCIA device[/][/]</value>
</data> </data>
<data name="Title_SCSI_device" xml:space="preserve"> <data name="Title_SCSI_device" xml:space="preserve">
<value>SCSI device</value> <value>[bold][blue]SCSI device[/][/]</value>
</data> </data>
<data name="Title_SCSI_MMC_GET_CONFIGURATION_Features" xml:space="preserve"> <data name="Title_SCSI_MMC_GET_CONFIGURATION_Features" xml:space="preserve">
<value>SCSI MMC GET CONFIGURATION Features:</value> <value>[bold][blue]SCSI MMC GET CONFIGURATION Features:[/][/]</value>
</data> </data>
<data name="Title_Drive_has_kreon_firmware" xml:space="preserve"> <data name="Title_Drive_has_kreon_firmware" xml:space="preserve">
<value>Drive has kreon firmware:</value> <value>[bold][blue]Drive has kreon firmware:[/][/]</value>
</data> </data>
<data name="Title_Descriptor_size" xml:space="preserve"> <data name="Title_Descriptor_size" xml:space="preserve">
<value>Descriptor size</value> <value>[bold][slateblue1]Descriptor size[/][/]</value>
</data> </data>
<data name="Title_Vendor_ID" xml:space="preserve"> <data name="Title_Vendor_ID" xml:space="preserve">
<value>Vendor ID</value> <value>[bold][slateblue1]Vendor ID[/][/]</value>
</data> </data>
<data name="Title_Product_ID" xml:space="preserve"> <data name="Title_Product_ID" xml:space="preserve">
<value>Product ID</value> <value>[bold][slateblue1]Product ID[/][/]</value>
</data> </data>
<data name="Title_Product" xml:space="preserve"> <data name="Title_Product" xml:space="preserve">
<value>Product</value> <value>[bold][slateblue1]Product[/][/]</value>
</data> </data>
<data name="Title_Serial_number" xml:space="preserve"> <data name="Title_Serial_number" xml:space="preserve">
<value>Serial number</value> <value>[bold][slateblue1]Serial number[/][/]</value>
</data> </data>
<data name="Title_Model_ID" xml:space="preserve"> <data name="Title_Model_ID" xml:space="preserve">
<value>Model ID</value> <value>[bold][slateblue1]Model ID[/][/]</value>
</data> </data>
<data name="Title_Vendor" xml:space="preserve"> <data name="Title_Vendor" xml:space="preserve">
<value>Vendor</value> <value>[bold][slateblue1]Vendor[/][/]</value>
</data> </data>
<data name="Title_GUID" xml:space="preserve"> <data name="Title_GUID" xml:space="preserve">
<value>GUID</value> <value>[bold][slateblue1]GUID[/][/]</value>
</data> </data>
<data name="PCMCIA_CIS_is_0_bytes" xml:space="preserve"> <data name="PCMCIA_CIS_is_0_bytes" xml:space="preserve">
<value>PCMCIA CIS is {0} bytes</value> <value>[slateblue]PCMCIA CIS is [teal]{0}[/] bytes[/]</value>
</data> </data>
<data name="aaruremote_host" xml:space="preserve"> <data name="aaruremote_host" xml:space="preserve">
<value>aaruremote host</value> <value>aaruremote host</value>
@@ -2044,10 +2044,10 @@ Testers:
<value>Kreon</value> <value>Kreon</value>
</data> </data>
<data name="Densities_supported_by_device" xml:space="preserve"> <data name="Densities_supported_by_device" xml:space="preserve">
<value>Densities supported by device:</value> <value>[bold][blue]Densities supported by device:[/][/]</value>
</data> </data>
<data name="Medium_types_supported_by_device" xml:space="preserve"> <data name="Medium_types_supported_by_device" xml:space="preserve">
<value>Medium types supported by device:</value> <value>[bold][blue]Medium types supported by device:[/][/]</value>
</data> </data>
<data name="Title_CID" xml:space="preserve"> <data name="Title_CID" xml:space="preserve">
<value>CID</value> <value>CID</value>
@@ -3115,16 +3115,16 @@ Do you want to continue?</value>
<value>List devices</value> <value>List devices</value>
</data> </data>
<data name="CD_reading_offset_not_found_in_database" xml:space="preserve"> <data name="CD_reading_offset_not_found_in_database" xml:space="preserve">
<value>CD reading offset not found in database.</value> <value>[slateblue1]CD reading offset not found in database.[/]</value>
</data> </data>
<data name="CD_reading_offset_is_0_samples_1_bytes" xml:space="preserve"> <data name="CD_reading_offset_is_0_samples_1_bytes" xml:space="preserve">
<value>CD reading offset is {0} samples ({1} bytes).</value> <value>[slateblue1]CD reading offset is [teal]{0}[/] samples ([lime]{1}[/] bytes).[/]</value>
</data> </data>
<data name="Could_not_get_any_kind_of_information_from_the_device" xml:space="preserve"> <data name="Could_not_get_any_kind_of_information_from_the_device" xml:space="preserve">
<value>Could not get any kind of information from the device !!!</value> <value>Could not get any kind of information from the device !!!</value>
</data> </data>
<data name="Optimal_multiple_read_is_0_sectors" xml:space="preserve"> <data name="Optimal_multiple_read_is_0_sectors" xml:space="preserve">
<value>Optimal multiple read is {0} sectors.</value> <value>[slateblue1]Optimal multiple read is [aqua]{0}[/] sectors.[/]</value>
</data> </data>
<data name="Unable_to_get_separate_tracks_not_checksumming_them" xml:space="preserve"> <data name="Unable_to_get_separate_tracks_not_checksumming_them" xml:space="preserve">
<value>Unable to get separate tracks, not checksumming them</value> <value>Unable to get separate tracks, not checksumming them</value>

View File

@@ -115,7 +115,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
{ {
table = new Table table = new Table
{ {
Title = new TableTitle($"[bold][blue]{UI.Title_USB_device}[/][/]") Title = new TableTitle(UI.Title_USB_device)
}; };
AaruLogging.Information(UI.Title_USB_device); AaruLogging.Information(UI.Title_USB_device);
@@ -129,21 +129,19 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(dev.UsbDescriptors != null) if(dev.UsbDescriptors != null)
{ {
table.AddRow($"[bold][slateblue1]{UI.Title_Descriptor_size}[/][/]", table.AddRow(UI.Title_Descriptor_size, $"[lime]{dev.UsbDescriptors.Length}[/]");
$"[lime]{dev.UsbDescriptors.Length}[/]");
AaruLogging.Information($"{UI.Title_Descriptor_size}: {dev.UsbDescriptors.Length}");
} }
table.AddRow($"[bold][slateblue1]{UI.Title_Vendor_ID}[/][/]", $"[lime]{dev.UsbVendorId:X4}[/]"); table.AddRow(UI.Title_Vendor_ID, $"[lime]{dev.UsbVendorId:X4}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Product_ID}[/][/]", $"[lime]{dev.UsbProductId:X4}[/]"); table.AddRow(UI.Title_Product_ID, $"[lime]{dev.UsbProductId:X4}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Manufacturer}[/][/]", table.AddRow(UI.Title_Manufacturer, $"[purple]{Markup.Escape(dev.UsbManufacturerString ?? "")}[/]");
$"[purple]{Markup.Escape(dev.UsbManufacturerString ?? "")}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Product}[/][/]", table.AddRow(UI.Title_Product, $"[purple]{Markup.Escape(dev.UsbProductString ?? "")}[/]");
$"[purple]{Markup.Escape(dev.UsbProductString ?? "")}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Serial_number}[/][/]", table.AddRow(UI.Title_Serial_number, $"[aqua]{Markup.Escape(dev.UsbSerialString ?? "")}[/]");
$"[aqua]{Markup.Escape(dev.UsbSerialString ?? "")}[/]");
AaruLogging.Information($"{UI.Title_Vendor_ID}: {dev.UsbVendorId:X4}"); AaruLogging.Information($"{UI.Title_Vendor_ID}: {dev.UsbVendorId:X4}");
AaruLogging.Information($"{UI.Title_Product_ID}: {dev.UsbProductId:X4}"); AaruLogging.Information($"{UI.Title_Product_ID}: {dev.UsbProductId:X4}");
@@ -159,7 +157,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
{ {
table = new Table table = new Table
{ {
Title = new TableTitle($"[bold]{UI.Title_FireWire_device}[/]") Title = new TableTitle(UI.Title_FireWire_device)
}; };
AaruLogging.Information(UI.Title_FireWire_device); AaruLogging.Information(UI.Title_FireWire_device);
@@ -171,16 +169,14 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
table.Border(TableBorder.Rounded); table.Border(TableBorder.Rounded);
table.BorderColor(Color.Yellow); table.BorderColor(Color.Yellow);
table.AddRow($"[bold][slateblue1]{UI.Title_Vendor_ID}[/][/]", $"[lime]{dev.FireWireVendor:X6}[/]"); table.AddRow(UI.Title_Vendor_ID, $"[lime]{dev.FireWireVendor:X6}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Model_ID}[/][/]", $"[lime]{dev.FireWireModel:X6}[/]"); table.AddRow(UI.Title_Model_ID, $"[lime]{dev.FireWireModel:X6}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Vendor}[/][/]", table.AddRow(UI.Title_Vendor, $"[purple]{Markup.Escape(dev.FireWireVendorName ?? "")}[/]");
$"[purple]{Markup.Escape(dev.FireWireVendorName ?? "")}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_Model}[/][/]", table.AddRow(UI.Title_Model, $"[purple]{Markup.Escape(dev.FireWireModelName ?? "")}[/]");
$"[purple]{Markup.Escape(dev.FireWireModelName ?? "")}[/]");
table.AddRow($"[bold][slateblue1]{UI.Title_GUID}[/][/]", $"[lime]{dev.FireWireGuid:X16}[/]"); table.AddRow(UI.Title_GUID, $"[lime]{dev.FireWireGuid:X16}[/]");
AaruLogging.Information($"{UI.Title_Vendor_ID}: {dev.FireWireVendor:X6}"); AaruLogging.Information($"{UI.Title_Vendor_ID}: {dev.FireWireVendor:X6}");
AaruLogging.Information($"{UI.Title_Model_ID}: {dev.FireWireModel:X6}"); AaruLogging.Information($"{UI.Title_Model_ID}: {dev.FireWireModel:X6}");
@@ -194,7 +190,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(dev.IsPcmcia) if(dev.IsPcmcia)
{ {
AaruLogging.WriteLine($"[bold]{UI.Title_PCMCIA_device}[/]"); AaruLogging.WriteLine(UI.Title_PCMCIA_device);
AaruLogging.WriteLine(UI.PCMCIA_CIS_is_0_bytes, dev.Cis.Length); AaruLogging.WriteLine(UI.PCMCIA_CIS_is_0_bytes, dev.Cis.Length);
Tuple[] tuples = CIS.GetTuples(dev.Cis); Tuple[] tuples = CIS.GetTuples(dev.Cis);
@@ -377,7 +373,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(devInfo.ScsiInquiry != null) if(devInfo.ScsiInquiry != null)
{ {
if(dev.Type != DeviceType.ATAPI) AaruLogging.WriteLine($"[bold]{UI.Title_SCSI_device}[/]"); if(dev.Type != DeviceType.ATAPI) AaruLogging.WriteLine(UI.Title_SCSI_device);
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -394,8 +390,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
switch(page.Key) switch(page.Key)
{ {
case >= 0x01 and <= 0x7F: case >= 0x01 and <= 0x7F:
AaruLogging.WriteLine($"[bold][blue]{Localization.Core.ASCII_Page_0_1}[/][/]", AaruLogging.WriteLine(Localization.Core.ASCII_Page_0_1,
$"[italic][teal]{page.Key}[/][/]", page.Key,
Markup.Escape(EVPD.DecodeASCIIPage(page.Value))); Markup.Escape(EVPD.DecodeASCIIPage(page.Value)));
DataFile.WriteTo(MODULE_NAME, settings.OutputPrefix, page.Value); DataFile.WriteTo(MODULE_NAME, settings.OutputPrefix, page.Value);
@@ -406,8 +402,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(decoded != null) if(decoded != null)
{ {
AaruLogging.WriteLine($"[bold][blue]{Localization.Core.Unit_Serial_Number_0}[/][/]", AaruLogging.WriteLine(Localization.Core.Unit_Serial_Number_0,
$"[italic][teal]{Markup.Escape(EVPD.DecodePage80(page.Value))}[/][/]"); Markup.Escape(EVPD.DecodePage80(page.Value)));
} }
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
@@ -428,9 +424,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
break; break;
case 0x82: case 0x82:
AaruLogging AaruLogging.WriteLine(Localization.Core.ASCII_implemented_operating_definitions_0,
.WriteLine($"[bold][blue]{Localization.Core.ASCII_implemented_operating_definitions_0}[/][/]", EVPD.DecodePage82(page.Value));
EVPD.DecodePage82(page.Value));
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -500,9 +495,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
break; break;
case 0xB1: case 0xB1:
AaruLogging AaruLogging.WriteLine(Localization.Core.Manufacturer_assigned_Serial_Number_0,
.WriteLine($"[bold][blue]{Localization.Core.Manufacturer_assigned_Serial_Number_0}[/][/]", Markup.Escape(EVPD.DecodePageB1(page.Value)));
Markup.Escape(EVPD.DecodePageB1(page.Value)));
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -512,9 +506,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
break; break;
case 0xB2: case 0xB2:
AaruLogging AaruLogging.WriteLine(Localization.Core.TapeAlert_Supported_Flags_Bitmap_0,
.WriteLine($"[bold][blue]{Localization.Core.TapeAlert_Supported_Flags_Bitmap_0}[/][/]", EVPD.DecodePageB2(page.Value));
EVPD.DecodePageB2(page.Value));
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -524,9 +517,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
break; break;
case 0xB3: case 0xB3:
AaruLogging AaruLogging.WriteLine(Localization.Core.Automation_Device_Serial_Number_0,
.WriteLine($"[bold][blue]{Localization.Core.Automation_Device_Serial_Number_0}[/][/]", Markup.Escape(EVPD.DecodePageB3(page.Value)));
Markup.Escape(EVPD.DecodePageB3(page.Value)));
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -536,9 +528,8 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
break; break;
case 0xB4: case 0xB4:
AaruLogging AaruLogging.WriteLine(Localization.Core.Data_Transfer_Device_Element_Address_0,
.WriteLine($"[bold][blue]{Localization.Core.Data_Transfer_Device_Element_Address_0}[/][/]", Markup.Escape(EVPD.DecodePageB4(page.Value)));
Markup.Escape(EVPD.DecodePageB4(page.Value)));
DataFile.WriteTo(MODULE_NAME, DataFile.WriteTo(MODULE_NAME,
settings.OutputPrefix, settings.OutputPrefix,
@@ -976,24 +967,24 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
"PLEXTOR READ EEPROM", "PLEXTOR READ EEPROM",
devInfo.PlextorFeatures.Eeprom); devInfo.PlextorFeatures.Eeprom);
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_has_loaded_a_total_of_0_discs}[/]", AaruLogging.WriteLine(Localization.Core.Drive_has_loaded_a_total_of_0_discs,
$"[teal]{devInfo.PlextorFeatures.Discs}[/]"); devInfo.PlextorFeatures.Discs);
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_has_spent_0_reading_CDs}[/]", AaruLogging.WriteLine(Localization.Core.Drive_has_spent_0_reading_CDs,
$"[aqua]{devInfo.PlextorFeatures.CdReadTime.Seconds().Humanize(minUnit: TimeUnit.Second)}[/]"); devInfo.PlextorFeatures.CdReadTime.Seconds().Humanize(minUnit: TimeUnit.Second));
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_has_spent_0_writing_CDs}[/]", AaruLogging.WriteLine(Localization.Core.Drive_has_spent_0_writing_CDs,
$"[aqua]{devInfo.PlextorFeatures.CdWriteTime.Seconds().Humanize(minUnit: TimeUnit.Second)}[/]"); devInfo.PlextorFeatures.CdWriteTime.Seconds().Humanize(minUnit: TimeUnit.Second));
if(devInfo.PlextorFeatures.IsDvd) if(devInfo.PlextorFeatures.IsDvd)
{ {
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_has_spent_0_reading_DVDs}[/]", AaruLogging.WriteLine(Localization.Core.Drive_has_spent_0_reading_DVDs,
$"[aqua]{devInfo.PlextorFeatures.DvdReadTime.Seconds() devInfo.PlextorFeatures.DvdReadTime.Seconds()
.Humanize(minUnit: TimeUnit.Second)}[/]"); .Humanize(minUnit: TimeUnit.Second));
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_has_spent_0_writing_DVDs}[/]", AaruLogging.WriteLine(Localization.Core.Drive_has_spent_0_writing_DVDs,
$"[aqua]{devInfo.PlextorFeatures.DvdWriteTime.Seconds() devInfo.PlextorFeatures.DvdWriteTime.Seconds()
.Humanize(minUnit: TimeUnit.Second)}[/]"); .Humanize(minUnit: TimeUnit.Second));
} }
} }
@@ -1003,162 +994,150 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
{ {
if(devInfo.PlextorFeatures.PoweRecRecommendedSpeed > 0) if(devInfo.PlextorFeatures.PoweRecRecommendedSpeed > 0)
{ {
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_PoweRec_is_enabled_and_recommends_0,
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_PoweRec_is_enabled_and_recommends_0}[/]", devInfo.PlextorFeatures.PoweRecRecommendedSpeed);
$"[lime]{devInfo.PlextorFeatures.PoweRecRecommendedSpeed}[/]");
} }
else else
{
AaruLogging AaruLogging
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_PoweRec_and_has_it_enabled}[/]"); .WriteLine($"[slateblue1]{Localization.Core.Drive_supports_PoweRec_and_has_it_enabled}[/]");
}
if(devInfo.PlextorFeatures.PoweRecSelected > 0) if(devInfo.PlextorFeatures.PoweRecSelected > 0)
{ {
AaruLogging.WriteLine($"[slateblue1]{Localization.Core AaruLogging.WriteLine(Localization.Core
.Selected_PoweRec_speed_for_currently_inserted_media_is_0_1}[/]", .Selected_PoweRec_speed_for_currently_inserted_media_is_0_1,
$"[lime]{devInfo.PlextorFeatures.PoweRecSelected}[/]", devInfo.PlextorFeatures.PoweRecSelected,
$"[teal]{devInfo.PlextorFeatures.PoweRecSelected / 177}[/]"); devInfo.PlextorFeatures.PoweRecSelected / 177);
} }
if(devInfo.PlextorFeatures.PoweRecMax > 0) if(devInfo.PlextorFeatures.PoweRecMax > 0)
{ {
AaruLogging.WriteLine($"[slateblue1]{Localization.Core AaruLogging.WriteLine(Localization.Core
.Maximum_PoweRec_speed_for_currently_inserted_media_is_0_1}[/]", .Maximum_PoweRec_speed_for_currently_inserted_media_is_0_1,
$"[lime]{devInfo.PlextorFeatures.PoweRecMax}[/]", devInfo.PlextorFeatures.PoweRecMax,
$"[teal]{devInfo.PlextorFeatures.PoweRecMax / 177}[/]"); devInfo.PlextorFeatures.PoweRecMax / 177);
} }
if(devInfo.PlextorFeatures.PoweRecLast > 0) if(devInfo.PlextorFeatures.PoweRecLast > 0)
{ {
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Last_used_PoweRec_was_0_1}[/]", AaruLogging.WriteLine(Localization.Core.Last_used_PoweRec_was_0_1,
$"[lime]{devInfo.PlextorFeatures.PoweRecLast}[/]", devInfo.PlextorFeatures.PoweRecLast,
$"[teal]{devInfo.PlextorFeatures.PoweRecLast / 177}[/]"); devInfo.PlextorFeatures.PoweRecLast / 177);
} }
} }
else else
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_PoweRec_and_has_it_disabled);
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_PoweRec_and_has_it_disabled}[/]");
} }
if(devInfo.PlextorFeatures?.SilentMode == true) if(devInfo.PlextorFeatures?.SilentMode == true)
{ {
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_Plextor_SilentMode}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_supports_Plextor_SilentMode);
if(devInfo.PlextorFeatures.SilentModeEnabled) if(devInfo.PlextorFeatures.SilentModeEnabled)
{ {
AaruLogging.WriteLine($"[green]{Localization.Core.Plextor_SilentMode_is_enabled}[/]"); AaruLogging.WriteLine(Localization.Core.Plextor_SilentMode_is_enabled);
AaruLogging.WriteLine("\t" + AaruLogging.WriteLine("\t" +
(devInfo.PlextorFeatures.AccessTimeLimit == 2 (devInfo.PlextorFeatures.AccessTimeLimit == 2
? $"[slateblue1]{Localization.Core.Access_time_is_slow}[/]" ? Localization.Core.Access_time_is_slow
: $"[slateblue1]{Localization.Core.Access_time_is_fast}[/]")); : Localization.Core.Access_time_is_fast));
if(devInfo.PlextorFeatures.CdReadSpeedLimit > 0) if(devInfo.PlextorFeatures.CdReadSpeedLimit > 0)
{ {
AaruLogging.WriteLine("\t" + $"[slateblue1]{Localization.Core.CD_read_speed_limited_to_0}[/]", AaruLogging.WriteLine("\t" + Localization.Core.CD_read_speed_limited_to_0,
$"[teal]{devInfo.PlextorFeatures.CdReadSpeedLimit}[/]"); devInfo.PlextorFeatures.CdReadSpeedLimit);
} }
if(devInfo.PlextorFeatures.DvdReadSpeedLimit > 0 && devInfo.PlextorFeatures.IsDvd) if(devInfo.PlextorFeatures.DvdReadSpeedLimit > 0 && devInfo.PlextorFeatures.IsDvd)
{ {
AaruLogging.WriteLine("\t" + $"[slateblue1]{Localization.Core.DVD_read_speed_limited_to_0}[/]", AaruLogging.WriteLine("\t" + Localization.Core.DVD_read_speed_limited_to_0,
$"[teal]{devInfo.PlextorFeatures.DvdReadSpeedLimit}[/]"); devInfo.PlextorFeatures.DvdReadSpeedLimit);
} }
if(devInfo.PlextorFeatures.CdWriteSpeedLimit > 0) if(devInfo.PlextorFeatures.CdWriteSpeedLimit > 0)
{ {
AaruLogging.WriteLine("\t" + $"[slateblue1]{Localization.Core.CD_write_speed_limited_to_0}[/]", AaruLogging.WriteLine("\t" + Localization.Core.CD_write_speed_limited_to_0,
$"[teal]{devInfo.PlextorFeatures.CdWriteSpeedLimit}[/]"); devInfo.PlextorFeatures.CdWriteSpeedLimit);
} }
} }
} }
if(devInfo.PlextorFeatures?.GigaRec == true) if(devInfo.PlextorFeatures?.GigaRec == true)
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_Plextor_GigaRec}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_supports_Plextor_GigaRec);
if(devInfo.PlextorFeatures?.SecuRec == true) if(devInfo.PlextorFeatures?.SecuRec == true)
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_Plextor_SecuRec}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_supports_Plextor_SecuRec);
if(devInfo.PlextorFeatures?.SpeedRead == true) if(devInfo.PlextorFeatures?.SpeedRead == true)
{ {
AaruLogging.WriteLine(devInfo.PlextorFeatures.SpeedReadEnabled AaruLogging.WriteLine(devInfo.PlextorFeatures.SpeedReadEnabled
? $"[green]{Localization.Core.Drive_supports_Plextor_SpeedRead_and_has_it_enabled}[/]" ? Localization.Core.Drive_supports_Plextor_SpeedRead_and_has_it_enabled
: $"[slateblue1]{Localization.Core.Drive_supports_Plextor_SpeedRead}[/]"); : Localization.Core.Drive_supports_Plextor_SpeedRead);
} }
if(devInfo.PlextorFeatures?.Hiding == true) if(devInfo.PlextorFeatures?.Hiding == true)
{ {
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_hiding_CDRs_and_forcing_single_session);
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_hiding_CDRs_and_forcing_single_session}[/]");
if(devInfo.PlextorFeatures.HidesRecordables) if(devInfo.PlextorFeatures.HidesRecordables)
AaruLogging.WriteLine($"[green]{Localization.Core.Drive_currently_hides_CDRs}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_currently_hides_CDRs);
if(devInfo.PlextorFeatures.HidesSessions) if(devInfo.PlextorFeatures.HidesSessions)
AaruLogging.WriteLine($"[green]{Localization.Core.Drive_currently_forces_single_session}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_currently_forces_single_session);
} }
if(devInfo.PlextorFeatures?.VariRec == true) if(devInfo.PlextorFeatures?.VariRec == true)
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_Plextor_VariRec}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_supports_Plextor_VariRec);
if(devInfo.PlextorFeatures?.IsDvd == true) if(devInfo.PlextorFeatures?.IsDvd == true)
{ {
if(devInfo.PlextorFeatures.VariRecDvd) if(devInfo.PlextorFeatures.VariRecDvd)
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_Plextor_VariRec_for_DVDs);
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_Plextor_VariRec_for_DVDs}[/]");
if(devInfo.PlextorFeatures.BitSetting) if(devInfo.PlextorFeatures.BitSetting)
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_bitsetting_DVD_R_book_type);
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_bitsetting_DVD_R_book_type}[/]");
if(devInfo.PlextorFeatures.BitSettingDl) if(devInfo.PlextorFeatures.BitSettingDl)
AaruLogging AaruLogging.WriteLine(Localization.Core.Drive_supports_bitsetting_DVD_R_DL_book_type);
.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_bitsetting_DVD_R_DL_book_type}[/]");
if(devInfo.PlextorFeatures.DvdPlusWriteTest) if(devInfo.PlextorFeatures.DvdPlusWriteTest)
AaruLogging.WriteLine($"[slateblue1]{Localization.Core.Drive_supports_test_writing_DVD_Plus}[/]"); AaruLogging.WriteLine(Localization.Core.Drive_supports_test_writing_DVD_Plus);
} }
if(devInfo.ScsiInquiry.Value.KreonPresent) if(devInfo.ScsiInquiry.Value.KreonPresent)
{ {
AaruLogging.WriteLine($"[bold][blue]{UI.Title_Drive_has_kreon_firmware}[/][/]"); AaruLogging.WriteLine(UI.Title_Drive_has_kreon_firmware);
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ChallengeResponse)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ChallengeResponse))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_do_challenge_response_with_Xbox_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_do_challenge_response_with_Xbox_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.DecryptSs)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.DecryptSs))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_read_and_decrypt_SS_from_Xbox_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_read_and_decrypt_SS_from_Xbox_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.XtremeUnlock)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.XtremeUnlock))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_set_xtreme_unlock_state_with_Xbox_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_set_xtreme_unlock_state_with_Xbox_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.WxripperUnlock)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.WxripperUnlock))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_set_wxripper_unlock_state_with_Xbox_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_set_wxripper_unlock_state_with_Xbox_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ChallengeResponse360)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ChallengeResponse360))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_do_challenge_response_with_Xbox_360_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_do_challenge_response_with_Xbox_360_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.DecryptSs360)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.DecryptSs360))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_read_and_decrypt_SS_from_Xbox_360_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_read_and_decrypt_SS_from_Xbox_360_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.XtremeUnlock360)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.XtremeUnlock360))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_set_xtreme_unlock_state_with_Xbox_360_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_set_xtreme_unlock_state_with_Xbox_360_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.WxripperUnlock360)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.WxripperUnlock360))
AaruLogging AaruLogging.WriteLine($"\t{Localization.Core.Can_set_wxripper_unlock_state_with_Xbox_360_discs}");
.WriteLine($"\t[slateblue1]{Localization.Core.Can_set_wxripper_unlock_state_with_Xbox_360_discs}[/]");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.Lock)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.Lock))
AaruLogging.WriteLine($"\t[slateblue1]{Localization.Core.Can_set_Kreon_locked_state}[/]"); AaruLogging.WriteLine($"\t{Localization.Core.Can_set_Kreon_locked_state}");
if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ErrorSkipping)) if(devInfo.KreonFeatures.HasFlag(KreonFeatures.ErrorSkipping))
AaruLogging.WriteLine($"\t[slateblue1]{Localization.Core.Kreon_Can_skip_read_errors}[/]"); AaruLogging.WriteLine($"\t{Localization.Core.Kreon_Can_skip_read_errors}");
} }
if(devInfo.BlockLimits != null) if(devInfo.BlockLimits != null)
@@ -1169,7 +1148,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
"SSC READ BLOCK LIMITS", "SSC READ BLOCK LIMITS",
devInfo.BlockLimits); devInfo.BlockLimits);
AaruLogging.WriteLine($"[bold][blue]{Localization.Core.Block_limits_for_device}[/][/]"); AaruLogging.WriteLine(Localization.Core.Block_limits_for_device);
AaruLogging.WriteLine(BlockLimits.Prettify(devInfo.BlockLimits)); AaruLogging.WriteLine(BlockLimits.Prettify(devInfo.BlockLimits));
} }
@@ -1183,7 +1162,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(devInfo.DensitySupportHeader.HasValue) if(devInfo.DensitySupportHeader.HasValue)
{ {
AaruLogging.WriteLine($"[bold][blue]{UI.Densities_supported_by_device}[/][/]"); AaruLogging.WriteLine(UI.Densities_supported_by_device);
AaruLogging.WriteLine(DensitySupport.PrettifyDensity(devInfo.DensitySupportHeader)); AaruLogging.WriteLine(DensitySupport.PrettifyDensity(devInfo.DensitySupportHeader));
} }
} }
@@ -1198,7 +1177,7 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
if(devInfo.MediaTypeSupportHeader.HasValue) if(devInfo.MediaTypeSupportHeader.HasValue)
{ {
AaruLogging.WriteLine($"[bold][blue]{UI.Medium_types_supported_by_device}[/][/]"); AaruLogging.WriteLine(UI.Medium_types_supported_by_device);
AaruLogging.WriteLine(DensitySupport.PrettifyMediumType(devInfo.MediaTypeSupportHeader)); AaruLogging.WriteLine(DensitySupport.PrettifyMediumType(devInfo.MediaTypeSupportHeader));
} }
@@ -1326,15 +1305,17 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
d.Revision == dev.FirmwareRevision); d.Revision == dev.FirmwareRevision);
if(dbDev is null) if(dbDev is null)
AaruLogging.WriteLine($"[red]{Localization.Core.Device_not_in_database}[/]"); AaruLogging.WriteLine(Localization.Core.Device_not_in_database);
else else
{ {
AaruLogging.WriteLine(string.Format($"[slateblue1]{Localization.Core.Device_in_database_since_0}[/]", AaruLogging.WriteLine(string.Format(Localization.Core.Device_in_database_since_0,
$"[yellow3]{dbDev.LastSynchronized:d}[/]")); $"{dbDev.LastSynchronized:d}"));
if(dbDev.OptimalMultipleSectorsRead > 0) if(dbDev.OptimalMultipleSectorsRead > 0)
AaruLogging.WriteLine(string.Format($"[slateblue1]{UI.Optimal_multiple_read_is_0_sectors}[/]", {
$"[aqua]{dbDev.OptimalMultipleSectorsRead}[/]")); AaruLogging.WriteLine(string.Format(UI.Optimal_multiple_read_is_0_sectors,
dbDev.OptimalMultipleSectorsRead));
}
} }
if(dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice) return (int)ErrorNumber.NoError; if(dev.ScsiType != PeripheralDeviceTypes.MultiMediaDevice) return (int)ErrorNumber.NoError;
@@ -1346,10 +1327,10 @@ sealed class DeviceInfoCommand : Command<DeviceInfoCommand.Settings>
(d.Model == dev.Model || d.Model == dev.Model.Replace('/', '-'))); (d.Model == dev.Model || d.Model == dev.Model.Replace('/', '-')));
AaruLogging.WriteLine(cdOffset is null AaruLogging.WriteLine(cdOffset is null
? $"[slateblue1]{UI.CD_reading_offset_not_found_in_database}[/]" ? UI.CD_reading_offset_not_found_in_database
: string.Format($"[slateblue1]{UI.CD_reading_offset_is_0_samples_1_bytes}[/]", : string.Format(UI.CD_reading_offset_is_0_samples_1_bytes,
$"[lime]{cdOffset.Offset}[/]", cdOffset.Offset,
$"[lime]{cdOffset.Offset * 4}[/]")); cdOffset.Offset * 4));
return (int)ErrorNumber.NoError; return (int)ErrorNumber.NoError;
} }