2018-08-12 10:13:49 +08:00
|
|
|
#ifndef FILE_HANDLER_H
|
2018-09-13 22:27:19 +08:00
|
|
|
#define FILE_HANDLER_H
|
2018-08-12 10:13:49 +08:00
|
|
|
|
2021-01-09 02:24:51 +08:00
|
|
|
#include "common.h"
|
|
|
|
|
2019-03-03 06:52:22 +08:00
|
|
|
#include <stdbool.h>
|
|
|
|
|
2021-01-03 21:55:15 +08:00
|
|
|
#include "adb.h"
|
2019-11-24 18:53:00 +08:00
|
|
|
#include "util/cbuf.h"
|
2021-02-01 01:24:35 +08:00
|
|
|
#include "util/thread.h"
|
2021-11-19 04:33:25 +08:00
|
|
|
#include "util/intr.h"
|
2018-08-12 10:13:49 +08:00
|
|
|
|
2018-08-12 10:40:00 +08:00
|
|
|
typedef enum {
|
|
|
|
ACTION_INSTALL_APK,
|
|
|
|
ACTION_PUSH_FILE,
|
|
|
|
} file_handler_action_t;
|
2018-08-12 10:13:49 +08:00
|
|
|
|
2019-05-30 03:46:16 +08:00
|
|
|
struct file_handler_request {
|
|
|
|
file_handler_action_t action;
|
|
|
|
char *file;
|
2018-08-12 10:13:49 +08:00
|
|
|
};
|
|
|
|
|
2019-05-30 03:46:16 +08:00
|
|
|
struct file_handler_request_queue CBUF(struct file_handler_request, 16);
|
|
|
|
|
2018-08-12 10:13:49 +08:00
|
|
|
struct file_handler {
|
2019-05-24 23:24:17 +08:00
|
|
|
char *serial;
|
2019-07-31 07:48:32 +08:00
|
|
|
const char *push_target;
|
2021-02-01 01:24:35 +08:00
|
|
|
sc_thread thread;
|
|
|
|
sc_mutex mutex;
|
|
|
|
sc_cond event_cond;
|
2019-03-03 06:52:22 +08:00
|
|
|
bool stopped;
|
|
|
|
bool initialized;
|
2019-05-30 03:46:16 +08:00
|
|
|
struct file_handler_request_queue queue;
|
2021-11-19 04:33:25 +08:00
|
|
|
|
|
|
|
struct sc_intr intr;
|
2018-08-12 10:13:49 +08:00
|
|
|
};
|
|
|
|
|
2019-03-03 06:52:22 +08:00
|
|
|
bool
|
2019-07-31 07:48:32 +08:00
|
|
|
file_handler_init(struct file_handler *file_handler, const char *serial,
|
|
|
|
const char *push_target);
|
2018-08-12 10:13:49 +08:00
|
|
|
|
2019-03-03 03:09:56 +08:00
|
|
|
void
|
|
|
|
file_handler_destroy(struct file_handler *file_handler);
|
2018-08-12 10:13:49 +08:00
|
|
|
|
2019-03-03 06:52:22 +08:00
|
|
|
bool
|
2019-03-03 03:09:56 +08:00
|
|
|
file_handler_start(struct file_handler *file_handler);
|
|
|
|
|
|
|
|
void
|
|
|
|
file_handler_stop(struct file_handler *file_handler);
|
|
|
|
|
|
|
|
void
|
|
|
|
file_handler_join(struct file_handler *file_handler);
|
|
|
|
|
2021-01-24 22:14:53 +08:00
|
|
|
// take ownership of file, and will free() it
|
2019-03-03 06:52:22 +08:00
|
|
|
bool
|
2019-03-03 03:09:56 +08:00
|
|
|
file_handler_request(struct file_handler *file_handler,
|
|
|
|
file_handler_action_t action,
|
2019-05-24 23:25:31 +08:00
|
|
|
char *file);
|
2018-08-12 10:13:49 +08:00
|
|
|
|
|
|
|
#endif
|