Add more detail to saved info screen (#2548)
* Add more detail to saved info screen * PR feedback * Format sources and add pvs temp files to gitignore Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									f192ccce2c
								
							
						
					
					
						commit
						f98ac4c48a
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -60,5 +60,6 @@ openocd.log | |||||||
| # PVS Studio temporary files | # PVS Studio temporary files | ||||||
| .PVS-Studio/ | .PVS-Studio/ | ||||||
| PVS-Studio.log | PVS-Studio.log | ||||||
|  | *.PVS-Studio.* | ||||||
| 
 | 
 | ||||||
| .gdbinit | .gdbinit | ||||||
|  | |||||||
| @ -14,43 +14,69 @@ void picopass_scene_device_info_widget_callback( | |||||||
| void picopass_scene_device_info_on_enter(void* context) { | void picopass_scene_device_info_on_enter(void* context) { | ||||||
|     Picopass* picopass = context; |     Picopass* picopass = context; | ||||||
| 
 | 
 | ||||||
|     FuriString* credential_str; |     FuriString* csn_str = furi_string_alloc_set("CSN:"); | ||||||
|     FuriString* wiegand_str; |     FuriString* credential_str = furi_string_alloc(); | ||||||
|     credential_str = furi_string_alloc(); |     FuriString* wiegand_str = furi_string_alloc(); | ||||||
|     wiegand_str = furi_string_alloc(); |     FuriString* sio_str = furi_string_alloc(); | ||||||
| 
 | 
 | ||||||
|     DOLPHIN_DEED(DolphinDeedNfcReadSuccess); |     DOLPHIN_DEED(DolphinDeedNfcReadSuccess); | ||||||
| 
 | 
 | ||||||
|     // Setup view
 |     // Setup view
 | ||||||
|  |     PicopassBlock* AA1 = picopass->dev->dev_data.AA1; | ||||||
|     PicopassPacs* pacs = &picopass->dev->dev_data.pacs; |     PicopassPacs* pacs = &picopass->dev->dev_data.pacs; | ||||||
|     Widget* widget = picopass->widget; |     Widget* widget = picopass->widget; | ||||||
| 
 | 
 | ||||||
|     size_t bytesLength = 1 + pacs->record.bitLength / 8; |     uint8_t csn[PICOPASS_BLOCK_LEN] = {0}; | ||||||
|     furi_string_set(credential_str, ""); |     memcpy(csn, AA1[PICOPASS_CSN_BLOCK_INDEX].data, PICOPASS_BLOCK_LEN); | ||||||
|     for(uint8_t i = PICOPASS_BLOCK_LEN - bytesLength; i < PICOPASS_BLOCK_LEN; i++) { |     for(uint8_t i = 0; i < PICOPASS_BLOCK_LEN; i++) { | ||||||
|         furi_string_cat_printf(credential_str, " %02X", pacs->credential[i]); |         furi_string_cat_printf(csn_str, "%02X ", csn[i]); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if(pacs->record.valid) { |     if(pacs->record.bitLength == 0 || pacs->record.bitLength == 255) { | ||||||
|         furi_string_cat_printf( |         // Neither of these are valid.  Indicates the block was all 0x00 or all 0xff
 | ||||||
|             wiegand_str, "FC: %u CN: %u", pacs->record.FacilityCode, pacs->record.CardNumber); |         furi_string_cat_printf(wiegand_str, "Invalid PACS"); | ||||||
|     } else { |     } else { | ||||||
|         furi_string_cat_printf(wiegand_str, "%d bits", pacs->record.bitLength); |         size_t bytesLength = pacs->record.bitLength / 8; | ||||||
|  |         if(pacs->record.bitLength % 8 > 0) { | ||||||
|  |             // Add extra byte if there are bits remaining
 | ||||||
|  |             bytesLength++; | ||||||
|  |         } | ||||||
|  |         furi_string_set(credential_str, ""); | ||||||
|  |         for(uint8_t i = PICOPASS_BLOCK_LEN - bytesLength; i < PICOPASS_BLOCK_LEN; i++) { | ||||||
|  |             furi_string_cat_printf(credential_str, " %02X", pacs->credential[i]); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if(pacs->record.valid) { | ||||||
|  |             furi_string_cat_printf( | ||||||
|  |                 wiegand_str, "FC: %u CN: %u", pacs->record.FacilityCode, pacs->record.CardNumber); | ||||||
|  |         } else { | ||||||
|  |             furi_string_cat_printf(wiegand_str, "%d bits", pacs->record.bitLength); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if(pacs->sio) { | ||||||
|  |             furi_string_cat_printf(sio_str, "+SIO"); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     widget_add_string_element( |     widget_add_string_element( | ||||||
|         widget, 64, 12, AlignCenter, AlignCenter, FontPrimary, furi_string_get_cstr(wiegand_str)); |         widget, 64, 5, AlignCenter, AlignCenter, FontSecondary, furi_string_get_cstr(csn_str)); | ||||||
|  |     widget_add_string_element( | ||||||
|  |         widget, 64, 20, AlignCenter, AlignCenter, FontPrimary, furi_string_get_cstr(wiegand_str)); | ||||||
|     widget_add_string_element( |     widget_add_string_element( | ||||||
|         widget, |         widget, | ||||||
|         64, |         64, | ||||||
|         32, |         36, | ||||||
|         AlignCenter, |         AlignCenter, | ||||||
|         AlignCenter, |         AlignCenter, | ||||||
|         FontSecondary, |         FontSecondary, | ||||||
|         furi_string_get_cstr(credential_str)); |         furi_string_get_cstr(credential_str)); | ||||||
|  |     widget_add_string_element( | ||||||
|  |         widget, 64, 46, AlignCenter, AlignCenter, FontSecondary, furi_string_get_cstr(sio_str)); | ||||||
| 
 | 
 | ||||||
|  |     furi_string_free(csn_str); | ||||||
|     furi_string_free(credential_str); |     furi_string_free(credential_str); | ||||||
|     furi_string_free(wiegand_str); |     furi_string_free(wiegand_str); | ||||||
|  |     furi_string_free(sio_str); | ||||||
| 
 | 
 | ||||||
|     widget_add_button_element( |     widget_add_button_element( | ||||||
|         picopass->widget, |         picopass->widget, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Eric Betts
						Eric Betts