subghz_protocol_princeton.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. /** Set new encoder params
  18. * @param instance - SubGhzEncoderPrinceton instance
  19. * @param key - 24bit key
  20. * @param repeat - how many times to repeat
  21. */
  22. void subghz_encoder_princeton_set(SubGhzEncoderPrinceton* instance, uint32_t key, size_t repeat);
  23. /** Get repeat count left
  24. * @param instance - SubGhzEncoderPrinceton instance
  25. * @return repeat count left
  26. */
  27. size_t subghz_encoder_princeton_get_repeat_left(SubGhzEncoderPrinceton* instance);
  28. /** Print encoder log
  29. * @param instance - SubGhzEncoderPrinceton instance
  30. */
  31. void subghz_encoder_princeton_print_log(void* context);
  32. /** Get level duration
  33. * @param instance - SubGhzEncoderPrinceton instance
  34. * @return level duration
  35. */
  36. LevelDuration subghz_encoder_princeton_yield(void* context);
  37. /** SubGhzDecoderPrinceton anonymous type */
  38. typedef struct SubGhzDecoderPrinceton SubGhzDecoderPrinceton;
  39. void subghz_encoder_princeton_set_te(SubGhzEncoderPrinceton* instance, void* decoder);
  40. /** Allocate SubGhzDecoderPrinceton
  41. *
  42. * @return SubGhzDecoderPrinceton*
  43. */
  44. SubGhzDecoderPrinceton* subghz_decoder_princeton_alloc();
  45. /** Free SubGhzDecoderPrinceton
  46. *
  47. * @param instance
  48. */
  49. void subghz_decoder_princeton_free(SubGhzDecoderPrinceton* instance);
  50. /** Get Te interval protocol
  51. *
  52. * @param context - SubGhzDecoderPrinceton context
  53. * @return Te interval (us)
  54. */
  55. uint16_t subghz_protocol_princeton_get_te(void* context);
  56. /** Get upload protocol
  57. *
  58. * @param instance - SubGhzDecoderPrinceton instance
  59. * @param encoder - SubGhzProtocolCommonEncoder encoder
  60. * @return bool
  61. */
  62. bool subghz_protocol_princeton_send_key(
  63. SubGhzDecoderPrinceton* instance,
  64. SubGhzProtocolCommonEncoder* encoder);
  65. /** Reset internal state
  66. * @param instance - SubGhzDecoderPrinceton instance
  67. */
  68. void subghz_decoder_princeton_reset(SubGhzDecoderPrinceton* instance);
  69. /** Parse accepted duration
  70. *
  71. * @param instance - SubGhzDecoderPrinceton instance
  72. * @param data - LevelDuration level_duration
  73. */
  74. void subghz_decoder_princeton_parse(
  75. SubGhzDecoderPrinceton* instance,
  76. bool level,
  77. uint32_t duration);
  78. /** Outputting information from the parser
  79. *
  80. * @param instance - SubGhzDecoderPrinceton* instance
  81. * @param output - output string
  82. */
  83. void subghz_decoder_princeton_to_str(SubGhzDecoderPrinceton* instance, string_t output);
  84. /** Get a string to save the protocol
  85. *
  86. * @param instance - SubGhzDecoderPrinceton instance
  87. * @param output - the resulting string
  88. */
  89. void subghz_decoder_princeton_to_save_str(SubGhzDecoderPrinceton* instance, string_t output);
  90. /** Loading protocol from file
  91. *
  92. * @param file_worker - FileWorker file_worker
  93. * @param instance - SubGhzDecoderPrinceton instance
  94. * @return bool
  95. */
  96. bool subghz_decoder_princeton_to_load_protocol_from_file(FileWorker* file_worker, SubGhzDecoderPrinceton* instance);
  97. /** Loading protocol from bin data
  98. *
  99. * @param instance - SubGhzDecoderPrinceton instance
  100. * @param context - SubGhzProtocolCommonLoad context
  101. */
  102. void subghz_decoder_princeton_to_load_protocol(
  103. SubGhzDecoderPrinceton* instance,
  104. void* context) ;