uhf_data.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. free(uhf_data->data);
  18. uhf_data_free((UHFData*)uhf_data->next);
  19. free(uhf_data->next);
  20. free(uhf_data);
  21. }
  22. }
  23. UHFResponseData* uhf_response_data_alloc() {
  24. UHFResponseData* uhf_response_data = (UHFResponseData*)malloc(sizeof(UHFResponseData));
  25. uhf_response_data->data = uhf_data_alloc();
  26. uhf_response_data->size = 0;
  27. return uhf_response_data;
  28. }
  29. UHFData* add_uhf_data_to_uhf_response_data(UHFResponseData* uhf_response_data) {
  30. UHFData* next = uhf_response_data->data;
  31. while(next->next != NULL) {
  32. next = next->next;
  33. }
  34. next->next = uhf_data_alloc();
  35. uhf_response_data->size++;
  36. return next->next;
  37. }
  38. void uhf_response_data_free(UHFResponseData* uhf_response_data) {
  39. uhf_data_free(uhf_response_data->data);
  40. free(uhf_response_data);
  41. }