iso14443a_select_card resp_data -> p_card

This commit is contained in:
Philippe Teuwen 2019-04-07 12:18:15 +02:00
commit 9c3a520300
2 changed files with 17 additions and 17 deletions

View file

@ -2029,7 +2029,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par) {
// if anticollision is false, then the UID must be provided in uid_ptr[] // if anticollision is false, then the UID must be provided in uid_ptr[]
// and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID)
// requests ATS unless no_rats is true // requests ATS unless no_rats is true
int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *resp_data, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) { int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) {
uint8_t sel_all[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x20 }; uint8_t sel_all[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x20 };
uint8_t sel_uid[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; uint8_t sel_uid[] = { ISO14443A_CMD_ANTICOLL_OR_SELECT, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
@ -2043,19 +2043,19 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *resp_data, uin
int cascade_level = 0; int cascade_level = 0;
int len; int len;
if (resp_data) { if (p_card) {
resp_data->uidlen = 0; p_card->uidlen = 0;
memset(resp_data->uid, 0, 10); memset(p_card->uid, 0, 10);
resp_data->ats_len = 0; p_card->ats_len = 0;
} }
if (!GetATQA(resp, resp_par)) { if (!GetATQA(resp, resp_par)) {
return 0; return 0;
} }
if (resp_data) { if (p_card) {
resp_data->atqa[0] = resp[0]; p_card->atqa[0] = resp[0];
resp_data->atqa[1] = resp[1]; p_card->atqa[1] = resp[1];
} }
if (anticollision) { if (anticollision) {
@ -2150,14 +2150,14 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *resp_data, uin
if (uid_ptr && anticollision) if (uid_ptr && anticollision)
memcpy(uid_ptr + (cascade_level * 3), uid_resp, uid_resp_len); memcpy(uid_ptr + (cascade_level * 3), uid_resp, uid_resp_len);
if (resp_data) { if (p_card) {
memcpy(resp_data->uid + (cascade_level * 3), uid_resp, uid_resp_len); memcpy(p_card->uid + (cascade_level * 3), uid_resp, uid_resp_len);
resp_data->uidlen += uid_resp_len; p_card->uidlen += uid_resp_len;
} }
} }
if (resp_data) { if (p_card) {
resp_data->sak = sak; p_card->sak = sak;
} }
// PICC compilant with iso14443a-4 ---> (SAK & 0x20 != 0) // PICC compilant with iso14443a-4 ---> (SAK & 0x20 != 0)
@ -2172,9 +2172,9 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *resp_data, uin
if (!len) return 0; if (!len) return 0;
if (resp_data) { if (p_card) {
memcpy(resp_data->ats, resp, sizeof(resp_data->ats)); memcpy(p_card->ats, resp, sizeof(p_card->ats));
resp_data->ats_len = len; p_card->ats_len = len;
} }
// reset the PCB block number // reset the PCB block number

View file

@ -129,7 +129,7 @@ int ReaderReceive(uint8_t *receivedAnswer, uint8_t *par);
void iso14443a_setup(uint8_t fpga_minor_mode); void iso14443a_setup(uint8_t fpga_minor_mode);
int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res);
int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *resp_data, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats);
int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades); int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades);
void iso14a_set_trigger(bool enable); void iso14a_set_trigger(bool enable);