uhf_tag.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #include "uhf_tag.h"
  2. #include <stdlib.h>
  3. #include <string.h>
  4. UHFTagWrapper* uhf_tag_wrapper_alloc() {
  5. UHFTagWrapper* uhf_tag_wrapper = (UHFTagWrapper*)malloc(sizeof(UHFTagWrapper));
  6. uhf_tag_wrapper->uhf_tag = NULL;
  7. return uhf_tag_wrapper;
  8. }
  9. void uhf_tag_wrapper_set_tag(UHFTagWrapper* uhf_tag_wrapper, UHFTag* uhf_tag) {
  10. if(uhf_tag_wrapper->uhf_tag != NULL) {
  11. uhf_tag_free(uhf_tag_wrapper->uhf_tag);
  12. }
  13. uhf_tag_wrapper->uhf_tag = uhf_tag;
  14. }
  15. void uhf_tag_wrapper_free(UHFTagWrapper* uhf_tag_wrapper) {
  16. uhf_tag_free(uhf_tag_wrapper->uhf_tag);
  17. free(uhf_tag_wrapper);
  18. }
  19. UHFTag* uhf_tag_alloc() {
  20. UHFTag* uhf_tag = (UHFTag*)malloc(sizeof(UHFTag));
  21. uhf_tag->reserved = (ReservedMemoryBank*)malloc(sizeof(ReservedMemoryBank));
  22. uhf_tag->epc = (EPCMemoryBank*)malloc(sizeof(EPCMemoryBank));
  23. uhf_tag->tid = (TIDMemoryBank*)malloc(sizeof(TIDMemoryBank));
  24. uhf_tag->user = (UserMemoryBank*)malloc(sizeof(UserMemoryBank));
  25. return uhf_tag;
  26. }
  27. void uhf_tag_reset(UHFTag* uhf_tag) {
  28. uhf_tag->epc->crc = 0;
  29. uhf_tag->epc->pc = 0;
  30. uhf_tag->epc->size = 0;
  31. uhf_tag->tid->size = 0;
  32. uhf_tag->user->size = 0;
  33. }
  34. void uhf_tag_free(UHFTag* uhf_tag) {
  35. if(uhf_tag == NULL) return;
  36. free(uhf_tag->reserved);
  37. free(uhf_tag->epc);
  38. free(uhf_tag->tid);
  39. free(uhf_tag->user);
  40. free(uhf_tag);
  41. }
  42. void uhf_tag_set_epc_pc(UHFTag* uhf_tag, uint16_t pc) {
  43. uhf_tag->epc->pc = pc;
  44. }
  45. void uhf_tag_set_epc_crc(UHFTag* uhf_tag, uint16_t crc) {
  46. uhf_tag->epc->crc = crc;
  47. }
  48. void uhf_tag_set_epc(UHFTag* uhf_tag, uint8_t* data_in, size_t size) {
  49. memcpy(uhf_tag->epc->data, data_in, size);
  50. uhf_tag->epc->size = size;
  51. }
  52. void uhf_tag_set_epc_size(UHFTag* uhf_tag, size_t size) {
  53. uhf_tag->epc->size = size;
  54. }
  55. void uhf_tag_set_tid(UHFTag* uhf_tag, uint8_t* data_in, size_t size) {
  56. memcpy(uhf_tag->tid->data, data_in, size);
  57. uhf_tag->tid->size = size;
  58. }
  59. void uhf_tag_set_tid_size(UHFTag* uhf_tag, size_t size) {
  60. uhf_tag->tid->size = size;
  61. }
  62. void uhf_tag_set_user(UHFTag* uhf_tag, uint8_t* data_in, size_t size) {
  63. memcpy(uhf_tag->user->data, data_in, size);
  64. uhf_tag->user->size = size;
  65. }
  66. void uhf_tag_set_user_size(UHFTag* uhf_tag, size_t size) {
  67. uhf_tag->user->size = size;
  68. }
  69. // getters
  70. uint8_t* uhf_tag_get_epc(UHFTag* uhf_tag) {
  71. return uhf_tag->epc->data;
  72. }
  73. size_t uhf_tag_get_epc_size(UHFTag* uhf_tag) {
  74. return uhf_tag->epc->size;
  75. }
  76. uint16_t uhf_tag_get_epc_pc(UHFTag* uhf_tag) {
  77. return uhf_tag->epc->pc;
  78. }
  79. uint16_t uhf_tag_get_epc_crc(UHFTag* uhf_tag) {
  80. return uhf_tag->epc->crc;
  81. }
  82. uint8_t* uhf_tag_get_tid(UHFTag* uhf_tag) {
  83. return uhf_tag->tid->data;
  84. }
  85. size_t uhf_tag_get_tid_size(UHFTag* uhf_tag) {
  86. return uhf_tag->tid->size;
  87. }
  88. uint8_t* uhf_tag_get_user(UHFTag* uhf_tag) {
  89. return uhf_tag->user->data;
  90. }
  91. size_t uhf_tag_get_user_size(UHFTag* uhf_tag) {
  92. return uhf_tag->user->size;
  93. }