public string GetHtmlTable(ECUConnection connection) { ECUMetadata metadata = connection.ConnectionProtocol.QueryECUMetadata(connection); string[][] rows = new string[][] { new string[] { "Variant ID", metadata.VariantID.ToString("X4") }, new string[] { "Gateway Mode", metadata.GatewayMode.ToString() }, new string[] { "Boot Version", metadata.BootVersion }, new string[] { "Serial Number", metadata.SerialNumber }, new string[] { "Chassis Number (Current)", metadata.ChassisNumberCurrent }, new string[] { "Chassis Number (Original)", metadata.ChassisNumberOriginal }, new string[] { "Hardware Part Number", metadata.HardwarePartNumber }, new string[] { "Hardware Version", metadata.HardwareVersion }, new string[] { "Hardware Supplier", ECUMetadata.GetVendorName(metadata.VendorID) }, }; StringBuilder ecuTableRows = new StringBuilder(); foreach (string[] row in rows) { ecuTableRows.AppendLine($"<tr><td>{row[0]}</td><td>{row[1]}</td></tr>"); } StringBuilder swBlockRows = new StringBuilder(); foreach (ECUFlashMetadata flash in metadata.FlashMetadata) { string flashStatus = flash.StatusID == 1 ? "Valid" : "Invalid"; swBlockRows.AppendLine($@" <h3>SW Block #{flash.Index}</h3> <table> <tr><td>Part Number</td><td>{flash.PartNumber}</td></tr> <tr><td>Version</td><td>{flash.Version}</td></tr> <tr><td>Vendor</td><td>{ECUMetadata.GetVendorName(flash.VendorID)}</td></tr> <tr><td>Status</td><td>{flashStatus}</td></tr> <tr><td>Last Flash Vendor</td><td>{ECUMetadata.GetVendorName(flash.LastFlashVendor)}</td></tr> <tr><td>Last Flash Date</td><td>{flash.FlashDate}</td></tr> <tr><td>Flash Fingerprint</td><td>{flash.FlashFingerprint}</td></tr> </table> "); } return($@" <hr> <h3>Hardware</h3> <table> {ecuTableRows} </table> {swBlockRows} "); }
public static void ShowMetadataModal(ECUConnection connection) { if (connection.ConnectionProtocol is null) { Console.WriteLine("Please initiate contact with a target first."); return; } ECUMetadata metadata = connection.ConnectionProtocol.QueryECUMetadata(connection); string[][] rows = new string[][] { new string[] { "Variant ID", metadata.VariantID.ToString("X4") }, new string[] { "Gateway Mode", metadata.GatewayMode.ToString() }, new string[] { "Boot Version", metadata.BootVersion }, new string[] { "Serial Number", metadata.SerialNumber }, new string[] { "Chassis Number (Current)", metadata.ChassisNumberCurrent }, new string[] { "Chassis Number (Original)", metadata.ChassisNumberOriginal }, new string[] { "Hardware Part Number", metadata.HardwarePartNumber }, new string[] { "Hardware Version", metadata.HardwareVersion }, new string[] { "Hardware Supplier", ECUMetadata.GetVendorName(metadata.VendorID) }, }; List <string[]> rowsAsList = new List <string[]>(rows); foreach (ECUFlashMetadata flash in metadata.FlashMetadata) { string blockPrefix = $"SW Block #{flash.Index} : "; string flashStatus = flash.StatusID == 1 ? "Valid" : "Invalid"; rowsAsList.Add(new string[] { $"{blockPrefix}Descriptor", $"{flash.PartNumber} [Version {flash.Version} from {ECUMetadata.GetVendorName(flash.VendorID)}]" }); rowsAsList.Add(new string[] { $"{blockPrefix}Status", $"{flashStatus}, Last flashed by {ECUMetadata.GetVendorName(flash.LastFlashVendor)} on {flash.FlashDate} (Fingerprint: {flash.FlashFingerprint})" }); } GenericPicker picker = new GenericPicker(rowsAsList.ToArray(), new string[] { "Attribute", "Value" }); picker.Text = "ECU Metadata"; picker.ShowDialog(); }
private void viewECUMetadataToolStripMenuItem_Click(object sender, EventArgs e) { ECUMetadata.ShowMetadataModal(Connection); }