protocol_group_base.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <flipper_format.h>
  4. #include "protocol_common_i.h"
  5. typedef void iButtonProtocolGroupData;
  6. typedef int32_t iButtonProtocolGroupId;
  7. typedef iButtonProtocolGroupData* (*iButtonProtocolGroupAllocFunc)(void);
  8. typedef void (*iButtonProtocolGroupFreeFunc)(iButtonProtocolGroupData*);
  9. typedef void (*iButtonProtocolGroupRenderFunc)(
  10. iButtonProtocolGroupData*,
  11. const iButtonProtocolData*,
  12. iButtonProtocolLocalId,
  13. FuriString*);
  14. typedef bool (*iButtonProtocolGroupIsValidFunc)(
  15. iButtonProtocolGroupData*,
  16. const iButtonProtocolData*,
  17. iButtonProtocolLocalId);
  18. typedef void (*iButtonProtocolGroupGetDataFunc)(
  19. iButtonProtocolGroupData*,
  20. iButtonProtocolData*,
  21. iButtonProtocolLocalId,
  22. iButtonEditableData*);
  23. typedef void (*iButtonProtocolGroupApplyFunc)(
  24. iButtonProtocolGroupData*,
  25. iButtonProtocolData*,
  26. iButtonProtocolLocalId);
  27. typedef size_t (*iButtonProtocolGropuGetSizeFunc)(iButtonProtocolGroupData*);
  28. typedef uint32_t (
  29. *iButtonProtocolGroupGetFeaturesFunc)(iButtonProtocolGroupData*, iButtonProtocolLocalId);
  30. typedef const char* (
  31. *iButtonProtocolGroupGetStringFunc)(iButtonProtocolGroupData*, iButtonProtocolLocalId);
  32. typedef bool (*iButtonProtocolGroupGetIdFunc)(
  33. iButtonProtocolGroupData*,
  34. iButtonProtocolLocalId*,
  35. const char*);
  36. typedef bool (*iButtonProtocolGroupReadFunc)(
  37. iButtonProtocolGroupData*,
  38. iButtonProtocolData*,
  39. iButtonProtocolLocalId*);
  40. typedef bool (*iButtonProtocolGroupWriteFunc)(
  41. iButtonProtocolGroupData*,
  42. iButtonProtocolData*,
  43. iButtonProtocolLocalId);
  44. typedef bool (*iButtonProtocolGroupSaveFunc)(
  45. iButtonProtocolGroupData*,
  46. const iButtonProtocolData*,
  47. iButtonProtocolLocalId,
  48. FlipperFormat*);
  49. typedef bool (*iButtonProtocolGroupLoadFunc)(
  50. iButtonProtocolGroupData*,
  51. iButtonProtocolData*,
  52. iButtonProtocolLocalId,
  53. uint32_t,
  54. FlipperFormat*);
  55. typedef struct {
  56. const uint32_t protocol_count;
  57. iButtonProtocolGroupAllocFunc alloc;
  58. iButtonProtocolGroupFreeFunc free;
  59. iButtonProtocolGropuGetSizeFunc get_max_data_size;
  60. iButtonProtocolGroupGetIdFunc get_id_by_name;
  61. iButtonProtocolGroupGetFeaturesFunc get_features;
  62. iButtonProtocolGroupGetStringFunc get_manufacturer;
  63. iButtonProtocolGroupGetStringFunc get_name;
  64. iButtonProtocolGroupReadFunc read;
  65. iButtonProtocolGroupWriteFunc write_blank;
  66. iButtonProtocolGroupWriteFunc write_copy;
  67. iButtonProtocolGroupApplyFunc emulate_start;
  68. iButtonProtocolGroupApplyFunc emulate_stop;
  69. iButtonProtocolGroupSaveFunc save;
  70. iButtonProtocolGroupLoadFunc load;
  71. iButtonProtocolGroupRenderFunc render_data;
  72. iButtonProtocolGroupRenderFunc render_brief_data;
  73. iButtonProtocolGroupRenderFunc render_error;
  74. iButtonProtocolGroupIsValidFunc is_valid;
  75. iButtonProtocolGroupGetDataFunc get_editable_data;
  76. iButtonProtocolGroupApplyFunc apply_edits;
  77. } iButtonProtocolGroupBase;