Parse all PD information, given a binary file (buffer)
(file_buffer: &[u8], ccgx: SiliconId)
| 170 | |
| 171 | /// Parse all PD information, given a binary file (buffer) |
| 172 | pub fn read_versions(file_buffer: &[u8], ccgx: SiliconId) -> Option<PdFirmwareFile> { |
| 173 | let (flash_row_size, f1_metadata_row, fw2_metadata_row) = match ccgx { |
| 174 | SiliconId::Ccg3 => (SMALL_ROW, 0x03FF, 0x03FE), |
| 175 | SiliconId::Ccg5 => (LARGE_ROW, FW1_METADATA_ROW, FW2_METADATA_ROW_CCG5), |
| 176 | SiliconId::Ccg6Adl => (SMALL_ROW, FW1_METADATA_ROW, FW2_METADATA_ROW_CCG6), |
| 177 | SiliconId::Ccg6 => (SMALL_ROW, FW1_METADATA_ROW, FW2_METADATA_ROW_CCG6), |
| 178 | SiliconId::Ccg8 => (LARGE_ROW, FW1_METADATA_ROW_CCG8, FW2_METADATA_ROW_CCG8), |
| 179 | }; |
| 180 | let backup_fw = read_version(file_buffer, flash_row_size, f1_metadata_row, ccgx)?; |
| 181 | let main_fw = read_version(file_buffer, flash_row_size, fw2_metadata_row, ccgx)?; |
| 182 | |
| 183 | Some(PdFirmwareFile { backup_fw, main_fw }) |
| 184 | } |
| 185 | |
| 186 | /// Pretty print information about PD firmware |
| 187 | pub fn print_fw(fw: &PdFirmware) { |