scan media
This commit is contained in:
@@ -80,6 +80,13 @@ control_msg_serialize(const struct control_msg *msg, unsigned char *buf) {
|
||||
case CONTROL_MSG_TYPE_SET_SCREEN_POWER_MODE:
|
||||
buf[1] = msg->set_screen_power_mode.mode;
|
||||
return 2;
|
||||
case CONTROL_MSG_TYPE_SCAN_MEDIA:
|
||||
{
|
||||
size_t len = write_string(msg->scan_media.path,
|
||||
CONTROL_MSG_SCAN_MEDIA_PATH_MAX_LENGTH,
|
||||
&buf[1]);
|
||||
return 1 + len;
|
||||
}
|
||||
case CONTROL_MSG_TYPE_EXPAND_NOTIFICATION_PANEL:
|
||||
case CONTROL_MSG_TYPE_EXPAND_SETTINGS_PANEL:
|
||||
case CONTROL_MSG_TYPE_COLLAPSE_PANELS:
|
||||
@@ -102,6 +109,9 @@ control_msg_destroy(struct control_msg *msg) {
|
||||
case CONTROL_MSG_TYPE_SET_CLIPBOARD:
|
||||
free(msg->set_clipboard.text);
|
||||
break;
|
||||
case CONTROL_MSG_TYPE_SCAN_MEDIA:
|
||||
free(msg->scan_media.path);
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
// type: 1 byte; paste flag: 1 byte; length: 4 bytes
|
||||
#define CONTROL_MSG_CLIPBOARD_TEXT_MAX_LENGTH (CONTROL_MSG_MAX_SIZE - 6)
|
||||
|
||||
#define CONTROL_MSG_SCAN_MEDIA_PATH_MAX_LENGTH 256
|
||||
|
||||
#define POINTER_ID_MOUSE UINT64_C(-1);
|
||||
#define POINTER_ID_VIRTUAL_FINGER UINT64_C(-2);
|
||||
|
||||
@@ -33,6 +35,7 @@ enum control_msg_type {
|
||||
CONTROL_MSG_TYPE_SET_CLIPBOARD,
|
||||
CONTROL_MSG_TYPE_SET_SCREEN_POWER_MODE,
|
||||
CONTROL_MSG_TYPE_ROTATE_DEVICE,
|
||||
CONTROL_MSG_TYPE_SCAN_MEDIA,
|
||||
};
|
||||
|
||||
enum screen_power_mode {
|
||||
@@ -76,6 +79,9 @@ struct control_msg {
|
||||
struct {
|
||||
enum screen_power_mode mode;
|
||||
} set_screen_power_mode;
|
||||
struct {
|
||||
char *path; // owned, to be freed by free()
|
||||
} scan_media;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -278,6 +278,28 @@ static void test_serialize_rotate_device(void) {
|
||||
assert(!memcmp(buf, expected, sizeof(expected)));
|
||||
}
|
||||
|
||||
static void test_serialize_scan_media(void) {
|
||||
struct control_msg msg = {
|
||||
.type = CONTROL_MSG_TYPE_SCAN_MEDIA,
|
||||
.scan_media = {
|
||||
.path = "/sdcard/Download/",
|
||||
},
|
||||
};
|
||||
|
||||
unsigned char buf[CONTROL_MSG_MAX_SIZE];
|
||||
size_t size = control_msg_serialize(&msg, buf);
|
||||
assert(size == 22);
|
||||
|
||||
const unsigned char expected[] = {
|
||||
CONTROL_MSG_TYPE_SCAN_MEDIA,
|
||||
0x00, 0x00, 0x00, 0x11, // path length
|
||||
'/', 's', 'd', 'c', 'a', 'r', 'd', '/',
|
||||
'D', 'o', 'w', 'n', 'l', 'o', 'a', 'd',
|
||||
'/' // path
|
||||
};
|
||||
assert(!memcmp(buf, expected, sizeof(expected)));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
@@ -295,5 +317,6 @@ int main(int argc, char *argv[]) {
|
||||
test_serialize_set_clipboard();
|
||||
test_serialize_set_screen_power_mode();
|
||||
test_serialize_rotate_device();
|
||||
test_serialize_scan_media();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user