diff options
author | Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com> | 2012-01-25 15:41:48 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-01-27 19:31:58 +0100 |
commit | 2b42e25bfad80de03ade5677df14472f7021c87c (patch) | |
tree | f91bb30c4f3f1d5bb5f9c439853f2873474502e7 | |
parent | 260aaf1629a7f27e0e727cabc82f8f5dc6d52d73 (diff) | |
download | neard-2b42e25bfad80de03ade5677df14472f7021c87c.tar.gz neard-2b42e25bfad80de03ade5677df14472f7021c87c.tar.bz2 neard-2b42e25bfad80de03ade5677df14472f7021c87c.zip |
tag: Add memory layout enum to tag structure
Added memory(static, dynamic, other ..) layout enum to tag
structure. Helpful to check the tag layout when writing data
on tag.
-rw-r--r-- | include/tag.h | 10 | ||||
-rw-r--r-- | plugins/nfctype1.c | 4 | ||||
-rw-r--r-- | plugins/nfctype2.c | 2 | ||||
-rw-r--r-- | src/tag.c | 18 |
4 files changed, 33 insertions, 1 deletions
diff --git a/include/tag.h b/include/tag.h index 7fae9ce..a8e4b77 100644 --- a/include/tag.h +++ b/include/tag.h @@ -48,6 +48,13 @@ enum near_target_sub_type { NEAR_TAG_NFC_SUBTYPE_UNKNOWN = 0xFF }; +enum near_tag_memory_layout { + NEAR_TAG_MEMORY_STATIC = 0, + NEAR_TAG_MEMORY_DYNAMIC, + NEAR_TAG_MEMORY_OTHER, + NEAR_TAG_MEMORY_UNKNOWN = 0xFF +}; + typedef void (*near_tag_io_cb) (uint32_t adapter_idx, uint32_t target_idx, int status); @@ -74,5 +81,8 @@ uint32_t near_tag_get_target_idx(struct near_tag *tag); int near_tag_add_ndef(struct near_tag *tag, uint8_t *ndef_data, size_t ndef_length); int near_tag_driver_register(struct near_tag_driver *driver); void near_tag_driver_unregister(struct near_tag_driver *driver); +void near_tag_set_memory_layout(struct near_tag *tag, + enum near_tag_memory_layout); +enum near_tag_memory_layout near_tag_get_memory_layout(struct near_tag *tag); #endif diff --git a/plugins/nfctype1.c b/plugins/nfctype1.c index 83fe498..e166dba 100644 --- a/plugins/nfctype1.c +++ b/plugins/nfctype1.c @@ -248,6 +248,7 @@ static int meta_recv(uint8_t *resp, int length, void *data) /* Check Static or Dynamic memory model */ if (resp[OFFSET_HEADER_ROM] == HR0_TYPE1_STATIC) { DBG("READ Static complete"); + near_tag_set_memory_layout(tag, NEAR_TAG_MEMORY_STATIC); err = near_tlv_parse(t1_tag->tag, t1_tag->cb, cc + LEN_CC_BYTES, TAG_T1_DATA_LENGTH(cc)); if (err < 0) @@ -255,7 +256,8 @@ static int meta_recv(uint8_t *resp, int length, void *data) g_free(t1_tag); } else if ((resp[OFFSET_HEADER_ROM] & 0xF0) == HR0_TYPE2_HIGH) { - err = read_dynamic_tag(cc, length, t1_tag); + near_tag_set_memory_layout(tag, NEAR_TAG_MEMORY_DYNAMIC); + err = read_dynamic_tag(cc, length, t1_tag); } else { err = -EOPNOTSUPP ; } diff --git a/plugins/nfctype2.c b/plugins/nfctype2.c index 32ae537..4a78fa3 100644 --- a/plugins/nfctype2.c +++ b/plugins/nfctype2.c @@ -201,6 +201,8 @@ static int meta_recv(uint8_t *resp, int length, void *data) else near_tag_set_ro(tag, FALSE); + near_tag_set_memory_layout(tag, NEAR_TAG_MEMORY_STATIC); + err = data_read(t2_tag); out: @@ -42,6 +42,7 @@ struct near_tag { uint8_t uid[TAG_UID_MAX_LEN]; near_bool_t readonly; + enum near_tag_memory_layout layout; size_t data_length; uint8_t *data; @@ -180,6 +181,23 @@ uint32_t near_tag_get_target_idx(struct near_tag *tag) return tag->target_idx; } +enum near_tag_memory_layout near_tag_get_memory_layout(struct near_tag *tag) +{ + if (tag == NULL) + return NEAR_TAG_MEMORY_UNKNOWN; + + return tag->layout; +} + +void near_tag_set_memory_layout(struct near_tag *tag, + enum near_tag_memory_layout layout) +{ + if (tag == NULL) + return; + + tag->layout = layout; +} + int near_tag_driver_register(struct near_tag_driver *driver) { DBG(""); |