uint8_t nfcid[NFC_NFCID1_MAXSIZE];
} __attribute__((packed));
-/* Common free func */
-static int mifare_release(int err, struct mifare_cookie *cookie)
+static int mifare_release(int err, void *data)
{
+ struct mifare_cookie *cookie = data;
+
DBG("%p", cookie);
if (cookie == NULL)
memcpy(cmd->uid, tag->uid, UID_LENGTH);
}
-static void t1_cookie_release(struct t1_cookie *cookie)
+static int t1_cookie_release(int err, void *data)
{
+ struct t1_cookie *cookie = data;
+
+ DBG("%p", cookie);
+
if (cookie == NULL)
- return;
+ return err;
if (cookie->ndef)
g_free(cookie->ndef->data);
g_free(cookie->ndef);
g_free(cookie);
cookie = NULL;
+
+ return err;
}
/* Read segments (128 bytes) and store them to the tag data block */
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
/*
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int nfctype1_read_meta(uint32_t adapter_idx, uint32_t target_idx,
}
if (err < 0)
- t1_cookie_release(cookie);
+ t1_cookie_release(err, cookie);
return err;
}
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int write_nmn_e1(struct t1_cookie *cookie)
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int data_write(uint32_t adapter_idx, uint32_t target_idx,
return 0;
out_err:
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
/*
cookie->cb(cookie->adapter_idx,
cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int nfctype1_check_presence(uint32_t adapter_idx,
return 0;
out_err:
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int format_resp(uint8_t *resp, int length, void *data)
if (cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t1_cookie_release(cookie);
-
- return err;
+ return t1_cookie_release(err, cookie);
}
static int nfctype1_format(uint32_t adapter_idx, uint32_t target_idx,
uint8_t read_write;
};
-static void t2_cookie_release(struct t2_cookie *cookie)
+static int t2_cookie_release(int err, void *data)
{
+ struct t2_cookie *cookie = data;
+
+ DBG("%p", cookie);
+
if (cookie == NULL)
- return;
+ return err;
if (cookie->ndef)
g_free(cookie->ndef->data);
g_free(cookie->ndef);
g_free(cookie);
cookie = NULL;
+
+ return err;
}
static int data_recv(uint8_t *resp, int length, void *data)
if (err < 0)
goto out_tag;
- t2_cookie_release(cookie);
-
- return 0;
+ return t2_cookie_release(err, cookie);
out_tag:
g_free(t2_tag);
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int nfctype2_read_meta(uint32_t adapter_idx, uint32_t target_idx,
if (cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, 0);
- t2_cookie_release(cookie);
-
- return 0;
+ return t2_cookie_release(0, cookie);
}
cmd.cmd = CMD_WRITE;
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int data_write(uint32_t adapter_idx, uint32_t target_idx,
return 0;
out_err:
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int nfctype2_write(uint32_t adapter_idx, uint32_t target_idx,
cookie->cb(cookie->adapter_idx,
cookie->target_idx, err);
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int nfctype2_check_presence(uint32_t adapter_idx, uint32_t target_idx,
return err;
out_err:
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int format_resp(uint8_t *resp, int length, void *data)
if (cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t2_cookie_release(cookie);
-
- return err;
+ return t2_cookie_release(err, cookie);
}
static int nfctype2_format(uint32_t adapter_idx, uint32_t target_idx,
uint8_t mc_block[BLOCK_SIZE];
};
-static void t3_cookie_release(struct t3_cookie *cookie)
+static int t3_cookie_release(int err, void *data)
{
+ struct t3_cookie *cookie = data;
+
+ DBG("%p", cookie);
+
if (cookie == NULL)
- return;
+ return err;
if (cookie->ndef != NULL)
g_free(cookie->ndef->data);
g_free(cookie->ndef);
g_free(cookie);
cookie = NULL;
+
+ return err;
}
/* common: Initialize structure to write block */
g_free(t3_tag);
}
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int poll_ndef_system_code(uint8_t *resp, int length, void *data)
cookie->cb(cookie->adapter_idx,
cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int check_sys_op_in_mc_block(uint8_t *resp, int length, void *data)
cookie->cb(cookie->adapter_idx,
cookie->target_idx, 0);
- t3_cookie_release(cookie);
-
- return 0;
+ return t3_cookie_release(0, cookie);
} else {
/* CMD POLL */
cmd.cmd = CMD_POLL; /* POLL command */
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int receive_system_code(uint8_t *resp, int length, void *data)
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int nfctype3_read(uint32_t adapter_idx,
if (cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int update_attr_block(struct t3_cookie *cookie)
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int data_write(uint32_t adapter_idx, uint32_t target_idx,
return 0;
out_err:
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int nfctype3_write(uint32_t adapter_idx, uint32_t target_idx,
cookie->cb(cookie->adapter_idx,
cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int nfctype3_check_presence(uint32_t adapter_idx,
return 0;
out_err:
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int format_resp(uint8_t *resp, int length, void *data)
if (cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int write_attr_block(uint8_t *resp, int length , void *data)
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int write_mc_block(uint8_t *resp, int length, void *data)
if (err < 0 && cookie->cb)
cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static int nfctype3_format(uint32_t adapter_idx,
return 0;
out_err:
- t3_cookie_release(cookie);
-
- return err;
+ return t3_cookie_release(err, cookie);
}
static struct near_tag_driver type1_driver = {
cookie);
}
-static int t4_cookie_release(int err, struct t4_cookie *cookie)
+static int t4_cookie_release(int err, void *data)
{
+ struct t4_cookie *cookie = data;
+
+ DBG("%p", cookie);
+
if (cookie == NULL)
return err;
return 0;
out_err:
- t4_cookie_release(err, cookie);
-
- return err;
+ return t4_cookie_release(err, cookie);
}
static int nfctype4_write(uint32_t adapter_idx, uint32_t target_idx,