plugins: Refactor functions for releasing cookies
authorWiktor Lawski <wiktor.lawski@tieto.com>
Wed, 19 Sep 2012 13:20:48 +0000 (15:20 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 21 Sep 2012 07:21:15 +0000 (09:21 +0200)
Now all plugins will release their cookies in an analogous manner. This
approach will simplify and reduce the amount of code because those functions
will be called by refactored version of near_adapter_send.

plugins/mifare.c
plugins/nfctype1.c
plugins/nfctype2.c
plugins/nfctype3.c
plugins/nfctype4.c

index 0040a2a..72120fe 100644 (file)
@@ -187,9 +187,10 @@ struct mifare_cmd {
        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)
index ca88a05..4042429 100644 (file)
@@ -119,10 +119,14 @@ static void t1_init_cmd(struct type1_tag *tag, struct type1_cmd *cmd)
        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);
@@ -130,6 +134,8 @@ static void t1_cookie_release(struct t1_cookie *cookie)
        g_free(cookie->ndef);
        g_free(cookie);
        cookie = NULL;
+
+       return err;
 }
 
 /* Read segments (128 bytes) and store them to the tag data block */
@@ -345,9 +351,7 @@ out_err:
        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);
 }
 
 /*
@@ -395,9 +399,7 @@ out_err:
        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,
@@ -434,7 +436,7 @@ 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;
 }
@@ -485,9 +487,7 @@ static int write_nmn_e1_resp(uint8_t *resp, int length, void *data)
 
        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)
@@ -551,9 +551,7 @@ out_err:
        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,
@@ -602,9 +600,7 @@ 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);
 }
 
 /*
@@ -659,9 +655,7 @@ static int check_presence(uint8_t *resp, int length, void *data)
                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,
@@ -703,9 +697,7 @@ 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)
@@ -752,9 +744,7 @@ out_err:
        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,
index 8b0d33c..62f6d0e 100644 (file)
@@ -104,10 +104,14 @@ struct type2_cc {
        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);
@@ -115,6 +119,8 @@ static void t2_cookie_release(struct t2_cookie *cookie)
        g_free(cookie->ndef);
        g_free(cookie);
        cookie = NULL;
+
+       return err;
 }
 
 static int data_recv(uint8_t *resp, int length, void *data)
@@ -257,9 +263,7 @@ static int meta_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);
@@ -268,9 +272,7 @@ out_err:
        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,
@@ -351,9 +353,7 @@ static int data_write_resp(uint8_t *resp, int length, void *data)
                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;
@@ -383,9 +383,7 @@ out_err:
        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,
@@ -423,9 +421,7 @@ 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,
@@ -492,9 +488,7 @@ static int check_presence(uint8_t *resp, int length, void *data)
                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,
@@ -544,9 +538,7 @@ 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)
@@ -575,9 +567,7 @@ out_err:
        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,
index 5ada84c..ffb401a 100644 (file)
@@ -135,10 +135,14 @@ struct t3_cookie {
        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);
@@ -146,6 +150,8 @@ static void t3_cookie_release(struct t3_cookie *cookie)
        g_free(cookie->ndef);
        g_free(cookie);
        cookie = NULL;
+
+       return err;
 }
 
 /* common: Initialize structure to write block */
@@ -368,9 +374,7 @@ out_err:
                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)
@@ -404,9 +408,7 @@ out_err:
                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)
@@ -451,9 +453,7 @@ 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 */
@@ -477,9 +477,7 @@ out_err:
        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)
@@ -537,9 +535,7 @@ out_err:
        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,
@@ -599,9 +595,7 @@ out_err:
        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)
@@ -681,9 +675,7 @@ out_err:
        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,
@@ -756,9 +748,7 @@ 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,
@@ -793,9 +783,7 @@ static int check_presence(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 nfctype3_check_presence(uint32_t adapter_idx,
@@ -834,9 +822,7 @@ 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)
@@ -873,9 +859,7 @@ out_err:
        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)
@@ -931,9 +915,7 @@ out_err:
        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)
@@ -978,9 +960,7 @@ out_err:
        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,
@@ -1029,9 +1009,7 @@ 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 = {
index 8a4943d..8a00e3d 100644 (file)
@@ -274,8 +274,12 @@ static int ISO_Update(uint16_t offset, uint8_t nlen,
                        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;
 
@@ -760,9 +764,7 @@ static int data_write(uint32_t adapter_idx, uint32_t target_idx,
        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,