bt_i.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include "bt.h"
  3. #include <furi.h>
  4. #include <furi_hal.h>
  5. #include <gui/gui.h>
  6. #include <gui/view_port.h>
  7. #include <gui/view.h>
  8. #include <dialogs/dialogs.h>
  9. #include <power/power_service/power.h>
  10. #include <rpc/rpc.h>
  11. #include <notification/notification.h>
  12. #include <storage/storage.h>
  13. #include <bt/bt_settings.h>
  14. #include <bt/bt_service/bt_keys_storage.h>
  15. #include "bt_keys_filename.h"
  16. #define BT_KEYS_STORAGE_PATH INT_PATH(BT_KEYS_STORAGE_FILE_NAME)
  17. #define BT_API_UNLOCK_EVENT (1UL << 0)
  18. typedef enum {
  19. BtMessageTypeUpdateStatus,
  20. BtMessageTypeUpdateBatteryLevel,
  21. BtMessageTypeUpdatePowerState,
  22. BtMessageTypePinCodeShow,
  23. BtMessageTypeKeysStorageUpdated,
  24. BtMessageTypeSetProfile,
  25. BtMessageTypeDisconnect,
  26. BtMessageTypeForgetBondedDevices,
  27. } BtMessageType;
  28. typedef struct {
  29. uint8_t* start_address;
  30. uint16_t size;
  31. } BtKeyStorageUpdateData;
  32. typedef union {
  33. uint32_t pin_code;
  34. uint8_t battery_level;
  35. BtProfile profile;
  36. BtKeyStorageUpdateData key_storage_data;
  37. } BtMessageData;
  38. typedef struct {
  39. BtMessageType type;
  40. BtMessageData data;
  41. bool* result;
  42. } BtMessage;
  43. struct Bt {
  44. uint8_t* bt_keys_addr_start;
  45. uint16_t bt_keys_size;
  46. uint16_t max_packet_size;
  47. BtSettings bt_settings;
  48. BtKeysStorage* keys_storage;
  49. BtStatus status;
  50. BtProfile profile;
  51. FuriMessageQueue* message_queue;
  52. NotificationApp* notification;
  53. Gui* gui;
  54. ViewPort* statusbar_view_port;
  55. ViewPort* pin_code_view_port;
  56. uint32_t pin_code;
  57. DialogsApp* dialogs;
  58. DialogMessage* dialog_message;
  59. Power* power;
  60. Rpc* rpc;
  61. RpcSession* rpc_session;
  62. FuriEventFlag* rpc_event;
  63. FuriEventFlag* api_event;
  64. BtStatusChangedCallback status_changed_cb;
  65. void* status_changed_ctx;
  66. };