furi-hal-bt.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * @file furi-hal-bt.h
  3. * BT/BLE HAL API
  4. */
  5. #pragma once
  6. #include <m-string.h>
  7. #include <stdbool.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /** Initialize
  12. */
  13. void furi_hal_bt_init();
  14. /** Start BLE app
  15. *
  16. * @return true if app inited
  17. */
  18. bool furi_hal_bt_init_app();
  19. /** Start advertising
  20. */
  21. void furi_hal_bt_start_advertising();
  22. /** Stop advertising
  23. */
  24. void furi_hal_bt_stop_advertising();
  25. /** Returns true if BLE is advertising
  26. *
  27. * @return true if BLE advertising
  28. */
  29. bool furi_hal_bt_is_active();
  30. /** Get BT/BLE system component state
  31. *
  32. * @param[in] buffer string_t buffer to write to
  33. */
  34. void furi_hal_bt_dump_state(string_t buffer);
  35. /** Get BT/BLE system component state
  36. *
  37. * @return true if core2 is alive
  38. */
  39. bool furi_hal_bt_is_alive();
  40. /** Wait for Core2 startup
  41. *
  42. * @return true if success, otherwise timeouted
  43. */
  44. bool furi_hal_bt_wait_startup();
  45. /** Lock shared access to flash controller
  46. *
  47. * @param[in] erase_flag true if erase operation
  48. *
  49. * @return true if lock was successful, false if not
  50. */
  51. bool furi_hal_bt_lock_flash(bool erase_flag);
  52. /** Unlock shared access to flash controller
  53. *
  54. * @param[in] erase_flag true if erase operation
  55. */
  56. void furi_hal_bt_unlock_flash(bool erase_flag);
  57. /** Start ble tone tx at given channel and power
  58. *
  59. * @param[in] channel The channel
  60. * @param[in] power The power
  61. */
  62. void furi_hal_bt_start_tone_tx(uint8_t channel, uint8_t power);
  63. /** Stop ble tone tx
  64. */
  65. void furi_hal_bt_stop_tone_tx();
  66. /** Start sending ble packets at a given frequency and datarate
  67. *
  68. * @param[in] channel The channel
  69. * @param[in] pattern The pattern
  70. * @param[in] datarate The datarate
  71. */
  72. void furi_hal_bt_start_packet_tx(uint8_t channel, uint8_t pattern, uint8_t datarate);
  73. /** Stop sending ble packets
  74. *
  75. * @return sent packet count
  76. */
  77. uint16_t furi_hal_bt_stop_packet_test();
  78. /** Start receiving packets
  79. *
  80. * @param[in] channel RX channel
  81. * @param[in] datarate Datarate
  82. */
  83. void furi_hal_bt_start_packet_rx(uint8_t channel, uint8_t datarate);
  84. /** Set up the RF to listen to a given RF channel
  85. *
  86. * @param[in] channel RX channel
  87. */
  88. void furi_hal_bt_start_rx(uint8_t channel);
  89. /** Stop RF listenning
  90. */
  91. void furi_hal_bt_stop_rx();
  92. /** Get RSSI
  93. *
  94. * @return RSSI in dBm
  95. */
  96. float furi_hal_bt_get_rssi();
  97. /** Get number of transmitted packets
  98. *
  99. * @return packet count
  100. */
  101. uint32_t furi_hal_bt_get_transmitted_packets();
  102. #ifdef __cplusplus
  103. }
  104. #endif