subghz_protocol_princeton.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #pragma once
  2. #include "subghz_protocol_common.h"
  3. struct SubGhzDecoderPrinceton {
  4. SubGhzProtocolCommon common;
  5. uint16_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. /** Get level duration
  29. * @param instance - SubGhzEncoderPrinceton instance
  30. * @return level duration
  31. */
  32. LevelDuration subghz_encoder_princeton_yield(void* context);
  33. /** SubGhzDecoderPrinceton anonymous type */
  34. typedef struct SubGhzDecoderPrinceton SubGhzDecoderPrinceton;
  35. void subghz_encoder_princeton_set_te(SubGhzEncoderPrinceton* instance, void* decoder);
  36. /** Allocate SubGhzDecoderPrinceton
  37. *
  38. * @return SubGhzDecoderPrinceton*
  39. */
  40. SubGhzDecoderPrinceton* subghz_decoder_princeton_alloc();
  41. /** Free SubGhzDecoderPrinceton
  42. *
  43. * @param instance
  44. */
  45. void subghz_decoder_princeton_free(SubGhzDecoderPrinceton* instance);
  46. /** Get Te interval protocol
  47. *
  48. * @param context - SubGhzDecoderPrinceton context
  49. * @return Te interval (us)
  50. */
  51. uint16_t subghz_protocol_princeton_get_te(void* context);
  52. /** Get upload protocol
  53. *
  54. * @param instance - SubGhzDecoderPrinceton instance
  55. * @param encoder - SubGhzProtocolCommonEncoder encoder
  56. * @return bool
  57. */
  58. bool subghz_protocol_princeton_send_key(
  59. SubGhzDecoderPrinceton* instance,
  60. SubGhzProtocolCommonEncoder* encoder);
  61. /** Reset internal state
  62. * @param instance - SubGhzDecoderPrinceton instance
  63. */
  64. void subghz_decoder_princeton_reset(SubGhzDecoderPrinceton* instance);
  65. /** Parse accepted duration
  66. *
  67. * @param instance - SubGhzDecoderPrinceton instance
  68. * @param data - LevelDuration level_duration
  69. */
  70. void subghz_decoder_princeton_parse(
  71. SubGhzDecoderPrinceton* instance,
  72. bool level,
  73. uint32_t duration);
  74. /** Outputting information from the parser
  75. *
  76. * @param instance - SubGhzDecoderPrinceton* instance
  77. * @param output - output string
  78. */
  79. void subghz_decoder_princeton_to_str(SubGhzDecoderPrinceton* instance, string_t output);
  80. /** Get a string to save the protocol
  81. *
  82. * @param instance - SubGhzDecoderPrinceton instance
  83. * @param output - the resulting string
  84. */
  85. void subghz_decoder_princeton_to_save_str(SubGhzDecoderPrinceton* instance, string_t output);
  86. /** Loading protocol from file
  87. *
  88. * @param file_worker - FileWorker file_worker
  89. * @param instance - SubGhzDecoderPrinceton instance
  90. * @return bool
  91. */
  92. bool subghz_decoder_princeton_to_load_protocol_from_file(FileWorker* file_worker, SubGhzDecoderPrinceton* instance);
  93. /** Loading protocol from bin data
  94. *
  95. * @param instance - SubGhzDecoderPrinceton instance
  96. * @param context - SubGhzProtocolCommonLoad context
  97. */
  98. void subghz_decoder_princeton_to_load_protocol(
  99. SubGhzDecoderPrinceton* instance,
  100. void* context) ;