Rework error reporting infrastructure.

This commit is contained in:
Romain Tartiere 2010-10-29 13:10:23 +00:00
parent b932c923d5
commit d9b2deebe2
4 changed files with 14 additions and 7 deletions

View file

@ -214,10 +214,17 @@ const char *
freefare_strerror (MifareTag tag)
{
const char *p = "Unkown error";
if (tag->device->iLastError > 0)
if (tag->device->iLastError > 0) {
p = nfc_strerror (tag->device);
else if (tag->tag_info->type == DESFIRE)
p = mifare_desfire_error_lookup (MIFARE_DESFIRE (tag)->last_picc_error);
} else {
if (tag->tag_info->type == DESFIRE) {
if (MIFARE_DESFIRE (tag)->last_pcd_error) {
p = mifare_desfire_error_lookup (MIFARE_DESFIRE (tag)->last_pcd_error);
} else if (MIFARE_DESFIRE (tag)->last_picc_error) {
p = mifare_desfire_error_lookup (MIFARE_DESFIRE (tag)->last_picc_error);
}
}
}
return p;
}

View file

@ -183,7 +183,7 @@ struct mifare_desfire_tag {
struct mifare_tag __tag;
uint8_t last_picc_error;
char *last_pcd_error;
uint8_t last_pcd_error;
MifareDESFireKey session_key;
uint8_t authenticated_key_no;
uint8_t ivect[MAX_CRYPTO_BLOCK_SIZE];

View file

@ -243,7 +243,7 @@ mifare_desfire_tag_new (void)
MifareTag tag;
if ((tag= malloc (sizeof (struct mifare_desfire_tag)))) {
MIFARE_DESFIRE (tag)->last_picc_error = OPERATION_OK;
MIFARE_DESFIRE (tag)->last_pcd_error = NULL;
MIFARE_DESFIRE (tag)->last_pcd_error = OPERATION_OK;
MIFARE_DESFIRE (tag)->session_key = NULL;
MIFARE_DESFIRE (tag)->crypto_buffer = NULL;
MIFARE_DESFIRE (tag)->crypto_buffer_size = 0;
@ -258,7 +258,6 @@ void
mifare_desfire_tag_free (MifareTag tag)
{
free (MIFARE_DESFIRE (tag)->session_key);
free (MIFARE_DESFIRE (tag)->last_pcd_error);
free (MIFARE_DESFIRE (tag)->crypto_buffer);
free (tag);
}
@ -291,7 +290,7 @@ mifare_desfire_connect (MifareTag tag)
free (MIFARE_DESFIRE (tag)->session_key);
MIFARE_DESFIRE (tag)->session_key = NULL;
MIFARE_DESFIRE (tag)->last_picc_error = OPERATION_OK;
MIFARE_DESFIRE (tag)->last_pcd_error = NULL;
MIFARE_DESFIRE (tag)->last_pcd_error = OPERATION_OK;
MIFARE_DESFIRE (tag)->authenticated_key_no = NOT_YET_AUTHENTICATED;
MIFARE_DESFIRE (tag)->block_number = 0;
} else {