bt_keys_storage.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "bt_keys_storage.h"
  2. #include <furi.h>
  3. #include <lib/toolbox/saved_struct.h>
  4. #include <storage/storage.h>
  5. #define BT_KEYS_STORAGE_PATH INT_PATH(BT_KEYS_STORAGE_FILE_NAME)
  6. #define BT_KEYS_STORAGE_VERSION (0)
  7. #define BT_KEYS_STORAGE_MAGIC (0x18)
  8. bool bt_keys_storage_load(Bt* bt) {
  9. furi_assert(bt);
  10. bool file_loaded = false;
  11. furi_hal_bt_get_key_storage_buff(&bt->bt_keys_addr_start, &bt->bt_keys_size);
  12. furi_hal_bt_nvm_sram_sem_acquire();
  13. file_loaded = saved_struct_load(
  14. BT_KEYS_STORAGE_PATH,
  15. bt->bt_keys_addr_start,
  16. bt->bt_keys_size,
  17. BT_KEYS_STORAGE_MAGIC,
  18. BT_KEYS_STORAGE_VERSION);
  19. furi_hal_bt_nvm_sram_sem_release();
  20. return file_loaded;
  21. }
  22. bool bt_keys_storage_save(Bt* bt) {
  23. furi_assert(bt);
  24. furi_assert(bt->bt_keys_addr_start);
  25. bool file_saved = false;
  26. furi_hal_bt_nvm_sram_sem_acquire();
  27. file_saved = saved_struct_save(
  28. BT_KEYS_STORAGE_PATH,
  29. bt->bt_keys_addr_start,
  30. bt->bt_keys_size,
  31. BT_KEYS_STORAGE_MAGIC,
  32. BT_KEYS_STORAGE_VERSION);
  33. furi_hal_bt_nvm_sram_sem_release();
  34. return file_saved;
  35. }
  36. bool bt_keys_storage_delete(Bt* bt) {
  37. furi_assert(bt);
  38. bool delete_succeed = false;
  39. bool bt_is_active = furi_hal_bt_is_active();
  40. furi_hal_bt_stop_advertising();
  41. delete_succeed = furi_hal_bt_clear_white_list();
  42. if(bt_is_active) {
  43. furi_hal_bt_start_advertising();
  44. }
  45. return delete_succeed;
  46. }