LibDriver MIFARE_CLASSIC
Loading...
Searching...
No Matches
mifare classic basic driver function

mifare classic basic driver modules More...

Collaboration diagram for mifare classic basic driver function:

Data Structures

struct  mifare_classic_handle_s
 mifare_classic handle structure definition More...
struct  mifare_classic_info_s
 mifare_classic information structure definition More...

Typedefs

typedef struct mifare_classic_handle_s mifare_classic_handle_t
 mifare_classic handle structure definition
typedef struct mifare_classic_info_s mifare_classic_info_t
 mifare_classic information structure definition

Enumerations

enum  mifare_classic_type_t { MIFARE_CLASSIC_TYPE_INVALID = 0x00 , MIFARE_CLASSIC_TYPE_S50 = 0x01 , MIFARE_CLASSIC_TYPE_S70 = 0x02 }
 mifare_classic type enumeration definition More...
enum  mifare_classic_load_modulation_t { MIFARE_CLASSIC_LOAD_MODULATION_NORMAL = 0x00 , MIFARE_CLASSIC_LOAD_MODULATION_STRONG = 0x01 }
 mifare_classic load modulation enumeration definition More...
enum  mifare_classic_personalized_uid_t { MIFARE_CLASSIC_PERSONALIZED_UID_0 = 0x00 , MIFARE_CLASSIC_PERSONALIZED_UID_1 = 0x40 , MIFARE_CLASSIC_PERSONALIZED_UID_2 = 0x20 , MIFARE_CLASSIC_PERSONALIZED_UID_3 = 0x60 }
 mifare_classic personalized uid enumeration definition More...
enum  mifare_classic_authentication_key_t { MIFARE_CLASSIC_AUTHENTICATION_KEY_A = 0x00 , MIFARE_CLASSIC_AUTHENTICATION_KEY_B = 0x01 }
 mifare_classic authentication key enumeration definition More...

Functions

uint8_t mifare_classic_info (mifare_classic_info_t *info)
 get chip information
uint8_t mifare_classic_init (mifare_classic_handle_t *handle)
 initialize the chip
uint8_t mifare_classic_deinit (mifare_classic_handle_t *handle)
 close the chip
uint8_t mifare_classic_request (mifare_classic_handle_t *handle, mifare_classic_type_t *type)
 mifare request
uint8_t mifare_classic_wake_up (mifare_classic_handle_t *handle, mifare_classic_type_t *type)
 mifare wake up
uint8_t mifare_classic_halt (mifare_classic_handle_t *handle)
 mifare halt
uint8_t mifare_classic_set_modulation (mifare_classic_handle_t *handle, mifare_classic_load_modulation_t mod)
 mifare set the load modulation
uint8_t mifare_classic_set_personalized_uid (mifare_classic_handle_t *handle, mifare_classic_personalized_uid_t type)
 mifare set the personalized uid
uint8_t mifare_classic_anticollision_cl1 (mifare_classic_handle_t *handle, uint8_t id[4])
 mifare anti collision cl1
uint8_t mifare_classic_anticollision_cl2 (mifare_classic_handle_t *handle, uint8_t id[4])
 mifare anti collision cl2
uint8_t mifare_classic_select_cl1 (mifare_classic_handle_t *handle, uint8_t id[4])
 mifare select cl1
uint8_t mifare_classic_select_cl2 (mifare_classic_handle_t *handle, uint8_t id[4])
 mifare select cl2
uint8_t mifare_classic_authentication (mifare_classic_handle_t *handle, uint8_t id[4], uint8_t block, mifare_classic_authentication_key_t key_type, uint8_t key[6])
 mifare authentication
uint8_t mifare_classic_read (mifare_classic_handle_t *handle, uint8_t block, uint8_t data[16])
 mifare read
uint8_t mifare_classic_write (mifare_classic_handle_t *handle, uint8_t block, uint8_t data[16])
 mifare write
uint8_t mifare_classic_value_init (mifare_classic_handle_t *handle, uint8_t block, int32_t value, uint8_t addr)
 mifare init one block as a value block
uint8_t mifare_classic_value_write (mifare_classic_handle_t *handle, uint8_t block, int32_t value, uint8_t addr)
 mifare value write
uint8_t mifare_classic_value_read (mifare_classic_handle_t *handle, uint8_t block, int32_t *value, uint8_t *addr)
 mifare value read
uint8_t mifare_classic_increment (mifare_classic_handle_t *handle, uint8_t block, uint32_t value)
 mifare increment
uint8_t mifare_classic_decrement (mifare_classic_handle_t *handle, uint8_t block, uint32_t value)
 mifare decrement
uint8_t mifare_classic_transfer (mifare_classic_handle_t *handle, uint8_t block)
 mifare transfer
uint8_t mifare_classic_restore (mifare_classic_handle_t *handle, uint8_t block)
 mifare restore
uint8_t mifare_classic_block_to_sector (mifare_classic_handle_t *handle, uint8_t block, uint8_t *sector)
 mifare block number to sector number
uint8_t mifare_classic_sector_block_count (mifare_classic_handle_t *handle, uint8_t sector, uint8_t *count)
 mifare get the sector's block counter
uint8_t mifare_classic_sector_first_block (mifare_classic_handle_t *handle, uint8_t sector, uint8_t *block)
 mifare get the sector's first block
uint8_t mifare_classic_sector_last_block (mifare_classic_handle_t *handle, uint8_t sector, uint8_t *block)
 mifare get the sector's last block
uint8_t mifare_classic_set_sector_permission (mifare_classic_handle_t *handle, uint8_t sector, uint8_t key_a[6], uint8_t block_0_0_4, uint8_t block_1_5_9, uint8_t block_2_10_14, uint8_t block_3_15, uint8_t user_data, uint8_t key_b[6])
 mifare set the sector permission
uint8_t mifare_classic_get_sector_permission (mifare_classic_handle_t *handle, uint8_t sector, uint8_t *block_0_0_4, uint8_t *block_1_5_9, uint8_t *block_2_10_14, uint8_t *block_3_15, uint8_t *user_data, uint8_t key_b[6])
 mifare get the sector permission

Detailed Description

mifare classic basic driver modules

Typedef Documentation

◆ mifare_classic_handle_t

mifare_classic handle structure definition

◆ mifare_classic_info_t

mifare_classic information structure definition

Enumeration Type Documentation

◆ mifare_classic_authentication_key_t

mifare_classic authentication key enumeration definition

Enumerator
MIFARE_CLASSIC_AUTHENTICATION_KEY_A 

authentication key a

MIFARE_CLASSIC_AUTHENTICATION_KEY_B 

authentication key b

Definition at line 96 of file driver_mifare_classic.h.

◆ mifare_classic_load_modulation_t

mifare_classic load modulation enumeration definition

Enumerator
MIFARE_CLASSIC_LOAD_MODULATION_NORMAL 

normal load modulation

MIFARE_CLASSIC_LOAD_MODULATION_STRONG 

strong load modulation

Definition at line 72 of file driver_mifare_classic.h.

◆ mifare_classic_personalized_uid_t

mifare_classic personalized uid enumeration definition

Enumerator
MIFARE_CLASSIC_PERSONALIZED_UID_0 

anti-collision and selection with the double size UID according to ISO/IEC 14443-3

MIFARE_CLASSIC_PERSONALIZED_UID_1 

anti-collision and selection with the double size UID according to ISO/IEC 14443-3 and optional usage of a selection process shortcut

MIFARE_CLASSIC_PERSONALIZED_UID_2 

anti-collision and selection with a single size random ID according to ISO/IEC 14443-3

MIFARE_CLASSIC_PERSONALIZED_UID_3 

anti-collision and selection with a single size NUID according to ISO/IEC 14443-3 where the NUID is calculated out of the 7-byte UID

Definition at line 81 of file driver_mifare_classic.h.

◆ mifare_classic_type_t

mifare_classic type enumeration definition

Enumerator
MIFARE_CLASSIC_TYPE_INVALID 

invalid

MIFARE_CLASSIC_TYPE_S50 

s50

MIFARE_CLASSIC_TYPE_S70 

s70

Definition at line 62 of file driver_mifare_classic.h.

Function Documentation

◆ mifare_classic_anticollision_cl1()

uint8_t mifare_classic_anticollision_cl1 ( mifare_classic_handle_t * handle,
uint8_t id[4] )

mifare anti collision cl1

Parameters
[in]*handlepointer to a mifare_classic handle structure
[out]*idpointer to an id buffer
Returns
status code
  • 0 success
  • 1 anti collision cl1 failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 check error
Note
none

Definition at line 503 of file driver_mifare_classic.c.

◆ mifare_classic_anticollision_cl2()

uint8_t mifare_classic_anticollision_cl2 ( mifare_classic_handle_t * handle,
uint8_t id[4] )

mifare anti collision cl2

Parameters
[in]*handlepointer to a mifare_classic handle structure
[out]*idpointer to an id buffer
Returns
status code
  • 0 success
  • 1 anti collision cl2 failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 check error
Note
none

Definition at line 568 of file driver_mifare_classic.c.

◆ mifare_classic_authentication()

uint8_t mifare_classic_authentication ( mifare_classic_handle_t * handle,
uint8_t id[4],
uint8_t block,
mifare_classic_authentication_key_t key_type,
uint8_t key[6] )

mifare authentication

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]*idpointer to an id buffer
[in]blockblock of authentication
[in]key_typeauthentication key type
[in]*keypointer to a key buffer
Returns
status code
  • 0 success
  • 1 authentication failed
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 768 of file driver_mifare_classic.c.

◆ mifare_classic_block_to_sector()

uint8_t mifare_classic_block_to_sector ( mifare_classic_handle_t * handle,
uint8_t block,
uint8_t * sector )

mifare block number to sector number

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock number
[out]*sectorpointer to a sector number buffer
Returns
status code
  • 0 success
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 1589 of file driver_mifare_classic.c.

◆ mifare_classic_decrement()

uint8_t mifare_classic_decrement ( mifare_classic_handle_t * handle,
uint8_t block,
uint32_t value )

mifare decrement

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of decrement
[in]valuedecrement value
Returns
status code
  • 0 success
  • 1 decrement failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
  • 6 invalid operation
Note
none

Definition at line 1376 of file driver_mifare_classic.c.

◆ mifare_classic_deinit()

uint8_t mifare_classic_deinit ( mifare_classic_handle_t * handle)

close the chip

Parameters
[in]*handlepointer to a mifare_classic handle structure
Returns
status code
  • 0 success
  • 1 contactless deinit failed
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 166 of file driver_mifare_classic.c.

◆ mifare_classic_get_sector_permission()

uint8_t mifare_classic_get_sector_permission ( mifare_classic_handle_t * handle,
uint8_t sector,
uint8_t * block_0_0_4,
uint8_t * block_1_5_9,
uint8_t * block_2_10_14,
uint8_t * block_3_15,
uint8_t * user_data,
uint8_t key_b[6] )

mifare get the sector permission

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]sectorget sector
[out]*block_0_0_4pointer to a block0(block0-4) permission buffer
[out]*block_1_5_9pointer to a block1(block5-9) permission buffer
[out]*block_2_10_14pointer to a block2(block10-14) permission buffer
[out]*block_3_15pointer to a block3(block15) permission buffer
[out]*user_datapointer to a user data buffer
[out]*key_bpointer to a key b buffer
Returns
status code
  • 0 success
  • 1 get sector permission failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 crc error
  • 6 data is invalid
Note
none

Definition at line 1883 of file driver_mifare_classic.c.

◆ mifare_classic_halt()

uint8_t mifare_classic_halt ( mifare_classic_handle_t * handle)

mifare halt

Parameters
[in]*handlepointer to a mifare_classic handle structure
Returns
status code
  • 0 success
  • 1 halt failed
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 341 of file driver_mifare_classic.c.

◆ mifare_classic_increment()

uint8_t mifare_classic_increment ( mifare_classic_handle_t * handle,
uint8_t block,
uint32_t value )

mifare increment

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of increment
[in]valueincrement value
Returns
status code
  • 0 success
  • 1 increment failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
  • 6 invalid operation
Note
none

Definition at line 1298 of file driver_mifare_classic.c.

◆ mifare_classic_info()

uint8_t mifare_classic_info ( mifare_classic_info_t * info)

get chip information

Parameters
[out]*infopointer to a mifare_classic info structure
Returns
status code
  • 0 success
  • 2 handle is NULL
Note
none

Definition at line 2032 of file driver_mifare_classic.c.

◆ mifare_classic_init()

uint8_t mifare_classic_init ( mifare_classic_handle_t * handle)

initialize the chip

Parameters
[in]*handlepointer to a mifare_classic handle structure
Returns
status code
  • 0 success
  • 1 contactless initialization failed
  • 2 handle is NULL
  • 3 linked functions is NULL
Note
none

Definition at line 106 of file driver_mifare_classic.c.

◆ mifare_classic_read()

uint8_t mifare_classic_read ( mifare_classic_handle_t * handle,
uint8_t block,
uint8_t data[16] )

mifare read

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of read
[out]*datapointer to a data buffer
Returns
status code
  • 0 success
  • 1 read failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 crc error
Note
none

Definition at line 832 of file driver_mifare_classic.c.

◆ mifare_classic_request()

uint8_t mifare_classic_request ( mifare_classic_handle_t * handle,
mifare_classic_type_t * type )

mifare request

Parameters
[in]*handlepointer to a mifare_classic handle structure
[out]*typepointer to a type buffer
Returns
status code
  • 0 success
  • 1 request failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 type is invalid
Note
none

Definition at line 204 of file driver_mifare_classic.c.

◆ mifare_classic_restore()

uint8_t mifare_classic_restore ( mifare_classic_handle_t * handle,
uint8_t block )

mifare restore

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of restore
Returns
status code
  • 0 success
  • 1 restore failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
  • 6 invalid operation
Note
none

Definition at line 1518 of file driver_mifare_classic.c.

◆ mifare_classic_sector_block_count()

uint8_t mifare_classic_sector_block_count ( mifare_classic_handle_t * handle,
uint8_t sector,
uint8_t * count )

mifare get the sector's block counter

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]sectorsector number
[out]*countpointer to a count buffer
Returns
status code
  • 0 success
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 1623 of file driver_mifare_classic.c.

◆ mifare_classic_sector_first_block()

uint8_t mifare_classic_sector_first_block ( mifare_classic_handle_t * handle,
uint8_t sector,
uint8_t * block )

mifare get the sector's first block

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]sectorsector number
[out]*blockpointer to a block number buffer
Returns
status code
  • 0 success
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 1657 of file driver_mifare_classic.c.

◆ mifare_classic_sector_last_block()

uint8_t mifare_classic_sector_last_block ( mifare_classic_handle_t * handle,
uint8_t sector,
uint8_t * block )

mifare get the sector's last block

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]sectorsector number
[out]*blockpointer to a block number buffer
Returns
status code
  • 0 success
  • 2 handle is NULL
  • 3 handle is not initialized
Note
none

Definition at line 1691 of file driver_mifare_classic.c.

◆ mifare_classic_select_cl1()

uint8_t mifare_classic_select_cl1 ( mifare_classic_handle_t * handle,
uint8_t id[4] )

mifare select cl1

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]*idpointer to an id buffer
Returns
status code
  • 0 success
  • 1 select cl1 failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 sak error
Note
none

Definition at line 633 of file driver_mifare_classic.c.

◆ mifare_classic_select_cl2()

uint8_t mifare_classic_select_cl2 ( mifare_classic_handle_t * handle,
uint8_t id[4] )

mifare select cl2

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]*idpointer to an id buffer
Returns
status code
  • 0 success
  • 1 select cl2 failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 sak error
Note
none

Definition at line 700 of file driver_mifare_classic.c.

◆ mifare_classic_set_modulation()

uint8_t mifare_classic_set_modulation ( mifare_classic_handle_t * handle,
mifare_classic_load_modulation_t mod )

mifare set the load modulation

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]modload modulation
Returns
status code
  • 0 success
  • 1 set modulation failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
none

Definition at line 381 of file driver_mifare_classic.c.

◆ mifare_classic_set_personalized_uid()

uint8_t mifare_classic_set_personalized_uid ( mifare_classic_handle_t * handle,
mifare_classic_personalized_uid_t type )

mifare set the personalized uid

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]typepersonalized uid type
Returns
status code
  • 0 success
  • 1 set personalized uid failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
none

Definition at line 442 of file driver_mifare_classic.c.

◆ mifare_classic_set_sector_permission()

uint8_t mifare_classic_set_sector_permission ( mifare_classic_handle_t * handle,
uint8_t sector,
uint8_t key_a[6],
uint8_t block_0_0_4,
uint8_t block_1_5_9,
uint8_t block_2_10_14,
uint8_t block_3_15,
uint8_t user_data,
uint8_t key_b[6] )

mifare set the sector permission

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]sectorset sector
[in]*key_apointer to a key a buffer
[in]block_0_0_4block0(block0-4) permission
[in]block_1_5_9block1(block5-9) permission
[in]block_2_10_14block2(block10-14) permission
[in]block_3_15is block3(block15) permission
[in]user_datauser data
[in]*key_bpointer to a key b buffer
Returns
status code
  • 0 success
  • 1 set sector permission failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
block_0_0_4, block_1_5_9, block_2_10_14, permission(c1_c2_c3) definition is below c1 c2 c3 read write increment decrement/transfer/restore 0 0 0 keya|b keya|b keya|b keya|b 0 1 0 keya|b never never never 1 0 0 keya|b keyb never never 1 1 0 keya|b keyb keyb keya|b 0 0 1 keya|b never never keya|b 0 1 1 keyb keyb never never 1 0 1 keyb never never never 1 1 1 never never never never

block_3_15 permission(c1_c2_c3) definition is below c1 c2 c3 keya_read keya_write access_read access_write keyb_read keyb_write 0 0 0 never keya keya never keya keya 0 1 0 never never keya never keya never 1 0 0 never keyb keya|b never never keyb 1 1 0 never never keya|b never never never 0 0 1 never keya keya keya keya keya 0 1 1 never keyb keya|b keyb never keyb 1 0 1 never never keya|b keyb never never 1 1 1 never never keya|b never never never

Definition at line 1755 of file driver_mifare_classic.c.

◆ mifare_classic_transfer()

uint8_t mifare_classic_transfer ( mifare_classic_handle_t * handle,
uint8_t block )

mifare transfer

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of transfer
Returns
status code
  • 0 success
  • 1 transfer failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
  • 6 invalid operation
Note
none

Definition at line 1453 of file driver_mifare_classic.c.

◆ mifare_classic_value_init()

uint8_t mifare_classic_value_init ( mifare_classic_handle_t * handle,
uint8_t block,
int32_t value,
uint8_t addr )

mifare init one block as a value block

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockset block
[in]valueinited value
[in]addraddress
Returns
status code
  • 0 success
  • 1 value init failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
none

Definition at line 979 of file driver_mifare_classic.c.

◆ mifare_classic_value_read()

uint8_t mifare_classic_value_read ( mifare_classic_handle_t * handle,
uint8_t block,
int32_t * value,
uint8_t * addr )

mifare value read

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of read
[out]*valuepointer to a value buffer
[out]*addrpointer to an address buffer
Returns
status code
  • 0 success
  • 1 value read failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 crc error
  • 6 value is invalid
  • 7 block is invalid
Note
none

Definition at line 1189 of file driver_mifare_classic.c.

◆ mifare_classic_value_write()

uint8_t mifare_classic_value_write ( mifare_classic_handle_t * handle,
uint8_t block,
int32_t value,
uint8_t addr )

mifare value write

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockset block
[in]valuewritten value
[in]addraddress
Returns
status code
  • 0 success
  • 1 value write failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
none

Definition at line 1083 of file driver_mifare_classic.c.

◆ mifare_classic_wake_up()

uint8_t mifare_classic_wake_up ( mifare_classic_handle_t * handle,
mifare_classic_type_t * type )

mifare wake up

Parameters
[in]*handlepointer to a mifare_classic handle structure
[out]*typepointer to a type buffer
Returns
status code
  • 0 success
  • 1 wake up failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 type is invalid
Note
none

Definition at line 274 of file driver_mifare_classic.c.

◆ mifare_classic_write()

uint8_t mifare_classic_write ( mifare_classic_handle_t * handle,
uint8_t block,
uint8_t data[16] )

mifare write

Parameters
[in]*handlepointer to a mifare_classic handle structure
[in]blockblock of write
[in]*datapointer to a data buffer
Returns
status code
  • 0 success
  • 1 write failed
  • 2 handle is NULL
  • 3 handle is not initialized
  • 4 output_len is invalid
  • 5 ack error
Note
none

Definition at line 897 of file driver_mifare_classic.c.