file-worker.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "file-worker.h"
  2. FileWorker::FileWorker()
  3. : fs_api{"sdcard"}
  4. , sd_ex_api{"sdcard-ex"} {
  5. string_init(error_string);
  6. }
  7. FileWorker::~FileWorker() {
  8. string_clear(error_string);
  9. }
  10. bool FileWorker::open(const char* filename, FS_AccessMode access_mode, FS_OpenMode open_mode) {
  11. bool result = fs_api.get()->file.open(&file, filename, access_mode, open_mode);
  12. if(!result) {
  13. show_error_message("Cannot open\nfile");
  14. close();
  15. return false;
  16. }
  17. return check_common_errors();
  18. }
  19. bool FileWorker::close() {
  20. fs_api.get()->file.close(&file);
  21. return check_common_errors();
  22. }
  23. bool FileWorker::mkdir(const char* dirname) {
  24. FS_Error fs_result = fs_api.get()->common.mkdir(dirname);
  25. if(fs_result != FSE_OK && fs_result != FSE_EXIST) {
  26. show_error_message("Cannot create\nfolder");
  27. return false;
  28. };
  29. return check_common_errors();
  30. }
  31. bool FileWorker::remove(const char* filename) {
  32. FS_Error fs_result = fs_api.get()->common.remove(filename);
  33. if(fs_result != FSE_OK && fs_result != FSE_NOT_EXIST) {
  34. show_error_message("Cannot remove\nold file");
  35. return false;
  36. };
  37. return check_common_errors();
  38. }
  39. bool FileWorker::check_common_errors() {
  40. sd_ex_api.get()->check_error(sd_ex_api.get()->context);
  41. return true;
  42. }
  43. void FileWorker::show_error_message(const char* error_text) {
  44. string_set_str(error_string, error_text);
  45. sd_ex_api.get()->show_error(sd_ex_api.get()->context, string_get_cstr(error_string));
  46. }