bt_settings.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "bt_settings.h"
  2. #include <furi.h>
  3. #include <file_worker.h>
  4. #define TAG "BtSettings"
  5. #define BT_SETTINGS_PATH "/int/bt.settings"
  6. bool bt_settings_load(BtSettings* bt_settings) {
  7. furi_assert(bt_settings);
  8. bool file_loaded = false;
  9. BtSettings settings = {};
  10. FURI_LOG_I(TAG, "Loading settings from \"%s\"", BT_SETTINGS_PATH);
  11. FileWorker* file_worker = file_worker_alloc(true);
  12. if(file_worker_open(file_worker, BT_SETTINGS_PATH, FSAM_READ, FSOM_OPEN_EXISTING)) {
  13. if(file_worker_read(file_worker, &settings, sizeof(settings))) {
  14. file_loaded = true;
  15. }
  16. }
  17. file_worker_free(file_worker);
  18. if(file_loaded) {
  19. FURI_LOG_I(TAG, "Settings load success");
  20. if(settings.version != BT_SETTINGS_VERSION) {
  21. FURI_LOG_E(TAG, "Settings version mismatch");
  22. } else {
  23. osKernelLock();
  24. *bt_settings = settings;
  25. osKernelUnlock();
  26. }
  27. } else {
  28. FURI_LOG_E(TAG, "Settings load failed");
  29. }
  30. return file_loaded;
  31. }
  32. bool bt_settings_save(BtSettings* bt_settings) {
  33. furi_assert(bt_settings);
  34. bool result = false;
  35. FileWorker* file_worker = file_worker_alloc(true);
  36. if(file_worker_open(file_worker, BT_SETTINGS_PATH, FSAM_WRITE, FSOM_OPEN_ALWAYS)) {
  37. if(file_worker_write(file_worker, bt_settings, sizeof(BtSettings))) {
  38. FURI_LOG_I(TAG, "Settings saved to \"%s\"", BT_SETTINGS_PATH);
  39. result = true;
  40. }
  41. }
  42. file_worker_free(file_worker);
  43. return result;
  44. }