[FL-935] Queue-based SD app cycle. File select widget. (#388)

* SD App: more specific sd api
* Gui: view dispatcher fix api documentation
* Gui: view holder thingy
* SD App: do not sleep when working with sd card bus
* SD App: queue-based lifecycle
* Assets: sd-card assets
* SD App: init file select api

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
SG
2021-03-24 19:30:29 +10:00
committed by GitHub
parent 5866be8455
commit cc263d743b
11 changed files with 803 additions and 352 deletions

View File

@@ -4,6 +4,9 @@
#include <api-hal.h>
#include <gui/gui.h>
#include <input/input.h>
#include <m-string.h>
#include "sd-card-api.h"
#include "view_holder.h"
#define SD_FS_MAX_FILES _FS_LOCK
#define SD_STATE_LINES_COUNT 6
@@ -77,14 +80,30 @@ typedef struct {
FATFS fat_fs;
} SdFsInfo;
typedef struct {
typedef enum {
SdAppStateBackground,
SdAppStateFormat,
SdAppStateFormatInProgress,
SdAppStateFormatCompleted,
SdAppStateInfo,
SdAppStateEject,
SdAppStateEjected,
SdAppStateFileSelect,
} SdAppState;
struct SdApp {
SdFsInfo info;
SdFsIcon icon;
ViewPort* view_port;
const char* line[SD_STATE_LINES_COUNT];
SdCard_Api sd_card_api;
SdAppState sd_app_state;
ViewHolder* view_holder;
osMessageQueueId_t result_receiver;
osMessageQueueId_t event_queue;
} SdApp;
string_t text_holder;
};
/* core api fns */
bool _fs_init(SdFsInfo* _fs_info);