summaryrefslogtreecommitdiff
path: root/src/libclient
diff options
context:
space:
mode:
Diffstat (limited to 'src/libclient')
-rw-r--r--src/libclient/client.c25
-rw-r--r--src/libclient/client.h5
-rw-r--r--src/libclient/common.h3
3 files changed, 30 insertions, 3 deletions
diff --git a/src/libclient/client.c b/src/libclient/client.c
index 7350df2..ddcc1db 100644
--- a/src/libclient/client.c
+++ b/src/libclient/client.c
@@ -44,9 +44,24 @@ static bool meta_callback(void *userdata, struct nn_rpc_connection *conn,
return false;
}
+static bool visual_data_callback(void *userdata, struct nn_rpc_connection *conn,
+ struct nn_packet *packet, struct nn_packet *rpacket)
+{
+ struct camu_client *client = (struct camu_client *)userdata;
+ (void)conn;
+ (void)rpacket;
+
+ client->callback(client->userdata, CAMU_CLIENT_GOT_VISUAL_DATA, packet);
+
+ nn_packet_stream_return_packet(conn->stream, packet);
+
+ return false;
+}
+
static struct nn_rpc_command commands[] = {
{ .op = CAMU_CLIENT_RESULTS, .callback = results_callback, .userdata = NULL },
- { .op = CAMU_CLIENT_META, .callback = meta_callback, .userdata = NULL }
+ { .op = CAMU_CLIENT_META, .callback = meta_callback, .userdata = NULL },
+ { .op = CAMU_CLIENT_VISUAL_DATA, .callback = visual_data_callback, .userdata = NULL }
};
static void idd_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet)
@@ -135,6 +150,14 @@ void camu_client_get_page(struct camu_client *client, s32 id, u32 num)
nn_rpc_connection_command(client->conn, packet, NULL, NULL);
}
+void camu_client_request_visual_data(struct camu_client *client, u32 node_id)
+{
+ struct nn_packet *packet = nn_rpc_get_packet(&client->client, CAMU_SERVER_CLIENT_COMMAND);
+ nn_packet_write_u8(packet, CAMU_CLIENT_REQUEST_VISUAL_DATA);
+ nn_packet_write_u32(packet, node_id);
+ nn_rpc_connection_command(client->conn, packet, NULL, NULL);
+}
+
void camu_client_skipto(struct camu_client *client, str *list, s32 i)
{
struct nn_packet *packet = nn_rpc_get_packet(&client->client, CAMU_SERVER_LIST_ACTION);
diff --git a/src/libclient/client.h b/src/libclient/client.h
index 892bf0d..70b5b27 100644
--- a/src/libclient/client.h
+++ b/src/libclient/client.h
@@ -6,7 +6,8 @@ enum {
CAMU_CLIENT_LOGGED_IN = 0,
CAMU_CLIENT_SEARCH_CREATED,
CAMU_CLIENT_GOT_RESULTS,
- CAMU_CLIENT_GOT_META
+ CAMU_CLIENT_GOT_META,
+ CAMU_CLIENT_GOT_VISUAL_DATA
};
struct camu_client {
@@ -29,6 +30,8 @@ void camu_client_toggle_sink(struct camu_client *client, str *sink, str *list, b
void camu_client_create_search(struct camu_client *client, str *module, str *query);
void camu_client_get_page(struct camu_client *client, s32 id, u32 num);
+void camu_client_request_visual_data(struct camu_client *client, u32 node_id);
+
void camu_client_skipto(struct camu_client *client, str *list, s32 i);
void camu_client_seek(struct camu_client *client, str *list, u32 id, u64 pos);
diff --git a/src/libclient/common.h b/src/libclient/common.h
index b074277..677e6b2 100644
--- a/src/libclient/common.h
+++ b/src/libclient/common.h
@@ -2,5 +2,6 @@
enum {
CAMU_CLIENT_RESULTS = 0,
- CAMU_CLIENT_META
+ CAMU_CLIENT_META,
+ CAMU_CLIENT_VISUAL_DATA
};