api-hal-subghz.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /** Radio Presets */
  8. typedef enum {
  9. ApiHalSubGhzPresetOokAsync, /** OOK, asynchronous */
  10. ApiHalSubGhzPreset2FskPacket, /** 2FSK, 115kBaud, variable packet length */
  11. } ApiHalSubGhzPreset;
  12. /** Switchable Radio Paths */
  13. typedef enum {
  14. ApiHalSubGhzPathIsolate, /** Isolate Radio from antenna */
  15. ApiHalSubGhzPath1, /** Path 1: SW1RF1-SW2RF2, LCLCL */
  16. ApiHalSubGhzPath2, /** Path 2: SW1RF2-SW2RF1, LCLCLCL */
  17. ApiHalSubGhzPath3, /** Path 3: SW1RF3-SW2RF3, LCLC */
  18. } ApiHalSubGhzPath;
  19. /** Initialize and switch to power save mode
  20. * Used by internal API-HAL initalization routine
  21. * Can be used to reinitialize device to safe state and send it to sleep
  22. */
  23. void api_hal_subghz_init();
  24. /** Dump info to stdout */
  25. void api_hal_subghz_dump_state();
  26. /** Load registers from preset by preset name
  27. * @param preset to load
  28. */
  29. void api_hal_subghz_load_preset(ApiHalSubGhzPreset preset);
  30. /** Load registers
  31. * @param register-value pairs array, terminated with {0,0}
  32. */
  33. void api_hal_subghz_load_registers(const uint8_t data[][2]);
  34. /** Load PATABLE
  35. * @param data, 8 uint8_t values
  36. */
  37. void api_hal_subghz_load_patable(const uint8_t data[8]);
  38. /** Write packet to FIFO
  39. * @param data, bytes array
  40. * @param size, size
  41. */
  42. void api_hal_subghz_write_packet(const uint8_t* data, uint8_t size);
  43. /** Read packet from FIFO
  44. * @param data, pointer
  45. * @param size, size
  46. */
  47. void api_hal_subghz_read_packet(uint8_t* data, uint8_t size);
  48. /** Shutdown
  49. * Issue spwd command
  50. * @warning registers content will be lost
  51. */
  52. void api_hal_subghz_shutdown();
  53. /** Reset
  54. * Issue reset command
  55. * @warning registers content will be lost
  56. */
  57. void api_hal_subghz_reset();
  58. /** Switch to Idle */
  59. void api_hal_subghz_idle();
  60. /** Switch to Recieve */
  61. void api_hal_subghz_rx();
  62. /** Switch to Transmit */
  63. void api_hal_subghz_tx();
  64. /** Get RSSI value in dBm */
  65. float api_hal_subghz_get_rssi();
  66. /** Set frequency
  67. * @param frequency in herz
  68. * @return real frequency in herz
  69. */
  70. uint32_t api_hal_subghz_set_frequency(uint32_t value);
  71. /** Set path
  72. * @param radio path to use
  73. */
  74. void api_hal_subghz_set_path(ApiHalSubGhzPath path);
  75. #ifdef __cplusplus
  76. }
  77. #endif