uhf_data.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "uhf_data.h"
  2. #include <furi.h>
  3. UHFData* uhf_data_alloc() {
  4. UHFData* uhf_data = (UHFData*)malloc(sizeof(UHFData));
  5. uhf_data->length = 0;
  6. uhf_data->next = NULL;
  7. return uhf_data;
  8. }
  9. int uhf_data_append(UHFData* uhf_data, uint8_t data) {
  10. if(uhf_data->length >= 32) return 0;
  11. uhf_data->data[uhf_data->length++] = data;
  12. return 1;
  13. }
  14. void uhf_data_free(UHFData* uhf_data) {
  15. if(uhf_data != NULL) {
  16. FURI_LOG_E("LL", "Freeing linked list");
  17. while(uhf_data != NULL) {
  18. FURI_LOG_E("LL", "Freeing node in linked list");
  19. UHFData* next = uhf_data->next;
  20. free(uhf_data);
  21. uhf_data = next;
  22. }
  23. }
  24. }
  25. UHFResponseData* uhf_response_data_alloc() {
  26. UHFResponseData* uhf_response_data = (UHFResponseData*)malloc(sizeof(UHFResponseData));
  27. uhf_response_data->data = uhf_data_alloc();
  28. uhf_response_data->size = 0;
  29. return uhf_response_data;
  30. }
  31. UHFData* add_uhf_data_to_uhf_response_data(UHFResponseData* uhf_response_data) {
  32. UHFData* next = uhf_response_data->data;
  33. while(next->next != NULL) {
  34. next = next->next;
  35. }
  36. next->next = uhf_data_alloc();
  37. uhf_response_data->size++;
  38. return next->next;
  39. }
  40. void uhf_response_data_free(UHFResponseData* uhf_response_data) {
  41. uhf_data_free(uhf_response_data->data);
  42. free(uhf_response_data);
  43. }