subghz_protocol_princeton.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #pragma once
  2. #include "subghz_protocol_common.h"
  3. struct SubGhzDecoderPrinceton {
  4. SubGhzProtocolCommon common;
  5. uint32_t te;
  6. };
  7. /** SubGhzEncoderPrinceton anonymous type */
  8. typedef struct SubGhzEncoderPrinceton SubGhzEncoderPrinceton;
  9. /** Allocate SubGhzEncoderPrinceton
  10. * @return pointer to SubGhzEncoderPrinceton instance
  11. */
  12. SubGhzEncoderPrinceton* subghz_encoder_princeton_alloc();
  13. /** Free SubGhzEncoderPrinceton instance
  14. * @param instance - SubGhzEncoderPrinceton instance
  15. */
  16. void subghz_encoder_princeton_free(SubGhzEncoderPrinceton* instance);
  17. void subghz_encoder_princeton_stop(SubGhzEncoderPrinceton* instance, uint32_t time_stop);
  18. /** Set new encoder params
  19. * @param instance - SubGhzEncoderPrinceton instance
  20. * @param key - 24bit key
  21. * @param repeat - how many times to repeat
  22. * @param frequency - frequency
  23. */
  24. void subghz_encoder_princeton_set(
  25. SubGhzEncoderPrinceton* instance,
  26. uint32_t key,
  27. size_t repeat,
  28. uint32_t frequency);
  29. /** Get repeat count left
  30. * @param instance - SubGhzEncoderPrinceton instance
  31. * @return repeat count left
  32. */
  33. size_t subghz_encoder_princeton_get_repeat_left(SubGhzEncoderPrinceton* instance);
  34. /** Print encoder log
  35. * @param instance - SubGhzEncoderPrinceton instance
  36. */
  37. void subghz_encoder_princeton_print_log(void* context);
  38. /** Get level duration
  39. * @param instance - SubGhzEncoderPrinceton instance
  40. * @return level duration
  41. */
  42. LevelDuration subghz_encoder_princeton_yield(void* context);
  43. /** SubGhzDecoderPrinceton anonymous type */
  44. typedef struct SubGhzDecoderPrinceton SubGhzDecoderPrinceton;
  45. void subghz_encoder_princeton_set_te(SubGhzEncoderPrinceton* instance, void* decoder);
  46. /** Allocate SubGhzDecoderPrinceton
  47. *
  48. * @return SubGhzDecoderPrinceton*
  49. */
  50. SubGhzDecoderPrinceton* subghz_decoder_princeton_alloc();
  51. /** Free SubGhzDecoderPrinceton
  52. *
  53. * @param instance
  54. */
  55. void subghz_decoder_princeton_free(SubGhzDecoderPrinceton* instance);
  56. /** Get Te interval protocol
  57. *
  58. * @param context - SubGhzDecoderPrinceton context
  59. * @return Te interval (us)
  60. */
  61. uint16_t subghz_protocol_princeton_get_te(void* context);
  62. /** Get upload protocol
  63. *
  64. * @param instance - SubGhzDecoderPrinceton instance
  65. * @param encoder - SubGhzProtocolCommonEncoder encoder
  66. * @return bool
  67. */
  68. bool subghz_protocol_princeton_send_key(
  69. SubGhzDecoderPrinceton* instance,
  70. SubGhzProtocolCommonEncoder* encoder);
  71. /** Reset internal state
  72. * @param instance - SubGhzDecoderPrinceton instance
  73. */
  74. void subghz_decoder_princeton_reset(SubGhzDecoderPrinceton* instance);
  75. /** Parse accepted duration
  76. *
  77. * @param instance - SubGhzDecoderPrinceton instance
  78. * @param data - LevelDuration level_duration
  79. */
  80. void subghz_decoder_princeton_parse(
  81. SubGhzDecoderPrinceton* instance,
  82. bool level,
  83. uint32_t duration);
  84. /** Outputting information from the parser
  85. *
  86. * @param instance - SubGhzDecoderPrinceton* instance
  87. * @param output - output string
  88. */
  89. void subghz_decoder_princeton_to_str(SubGhzDecoderPrinceton* instance, string_t output);
  90. /** Adding data to a file
  91. *
  92. * @param instance - SubGhzDecoderPrinceton instance
  93. * @param flipper_file - FlipperFile
  94. * @return bool
  95. */
  96. bool subghz_decoder_princeton_to_save_file(
  97. SubGhzDecoderPrinceton* instance,
  98. FlipperFile* flipper_file);
  99. /** Loading protocol from file
  100. *
  101. * @param flipper_file - FlipperFile
  102. * @param instance - SubGhzDecoderPrinceton instance
  103. * @param file_path - file path
  104. * @return bool
  105. */
  106. bool subghz_decoder_princeton_to_load_protocol_from_file(
  107. FlipperFile* flipper_file,
  108. SubGhzDecoderPrinceton* instance,
  109. const char* file_path);
  110. /** Loading protocol from bin data
  111. *
  112. * @param instance - SubGhzDecoderPrinceton instance
  113. * @param context - SubGhzProtocolCommonLoad context
  114. */
  115. void subghz_decoder_princeton_to_load_protocol(SubGhzDecoderPrinceton* instance, void* context);