 b9a766d909
			
		
	
	
		b9a766d909
		
	
	
	
	
		
			
			* Added support for running applications from SD card (FAPs - Flipper Application Packages) * Added plugin_dist target for fbt to build FAPs * All apps of type FlipperAppType.EXTERNAL and FlipperAppType.PLUGIN are built as FAPs by default * Updated VSCode configuration for new fbt features - re-deploy stock configuration to use them * Added debugging support for FAPs with fbt debug & VSCode * Added public firmware API with automated versioning Co-authored-by: hedger <hedger@users.noreply.github.com> Co-authored-by: SG <who.just.the.doctor@gmail.com> Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <furi_hal_nfc.h>
 | |
| 
 | |
| #define RFAL_PICOPASS_UID_LEN 8
 | |
| #define RFAL_PICOPASS_MAX_BLOCK_LEN 8
 | |
| 
 | |
| enum {
 | |
|     RFAL_PICOPASS_CMD_ACTALL = 0x0A,
 | |
|     RFAL_PICOPASS_CMD_IDENTIFY = 0x0C,
 | |
|     RFAL_PICOPASS_CMD_SELECT = 0x81,
 | |
|     RFAL_PICOPASS_CMD_READCHECK = 0x88,
 | |
|     RFAL_PICOPASS_CMD_CHECK = 0x05,
 | |
|     RFAL_PICOPASS_CMD_READ = 0x0C,
 | |
|     RFAL_PICOPASS_CMD_WRITE = 0x87,
 | |
| };
 | |
| 
 | |
| typedef struct {
 | |
|     uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Anti-collision CSN
 | |
|     uint8_t crc[2];
 | |
| } rfalPicoPassIdentifyRes;
 | |
| 
 | |
| typedef struct {
 | |
|     uint8_t CSN[RFAL_PICOPASS_UID_LEN]; // Real CSN
 | |
|     uint8_t crc[2];
 | |
| } rfalPicoPassSelectRes;
 | |
| 
 | |
| typedef struct {
 | |
|     uint8_t CCNR[8];
 | |
| } rfalPicoPassReadCheckRes;
 | |
| 
 | |
| typedef struct {
 | |
|     uint8_t mac[4];
 | |
| } rfalPicoPassCheckRes;
 | |
| 
 | |
| typedef struct {
 | |
|     uint8_t data[RFAL_PICOPASS_MAX_BLOCK_LEN];
 | |
|     uint8_t crc[2];
 | |
| } rfalPicoPassReadBlockRes;
 | |
| 
 | |
| FuriHalNfcReturn rfalPicoPassPollerInitialize(void);
 | |
| FuriHalNfcReturn rfalPicoPassPollerCheckPresence(void);
 | |
| FuriHalNfcReturn rfalPicoPassPollerIdentify(rfalPicoPassIdentifyRes* idRes);
 | |
| FuriHalNfcReturn rfalPicoPassPollerSelect(uint8_t* csn, rfalPicoPassSelectRes* selRes);
 | |
| FuriHalNfcReturn rfalPicoPassPollerReadCheck(rfalPicoPassReadCheckRes* rcRes);
 | |
| FuriHalNfcReturn rfalPicoPassPollerCheck(uint8_t* mac, rfalPicoPassCheckRes* chkRes);
 | |
| FuriHalNfcReturn rfalPicoPassPollerReadBlock(uint8_t blockNum, rfalPicoPassReadBlockRes* readRes);
 | |
| FuriHalNfcReturn rfalPicoPassPollerWriteBlock(uint8_t blockNum, uint8_t data[8], uint8_t mac[4]);
 |