uhf_data.c 1.4 KB

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