diff --git a/gisi/client.c b/gisi/client.c index 1407dff4..464ed3a2 100644 --- a/gisi/client.c +++ b/gisi/client.c @@ -65,6 +65,7 @@ typedef struct _GIsiIndication GIsiIndication; struct _GIsiClient { uint8_t resource; + uint16_t server_obj; struct { int major; int minor; @@ -202,6 +203,31 @@ int g_isi_version_minor(GIsiClient *client) return client ? client->version.minor : -1; } +/** + * Set the server object for the resource associated with @a + * client. + * @param client client for the resource + * @param server object + */ +void g_isi_server_object_set(GIsiClient *client, uint16_t obj) +{ + if (!client) + return; + + client->server_obj = obj; +} + +/** + * Returns the server object for the the resource associated with @a + * client. + * @param client client for the resource + * @return server object + */ +uint8_t g_isi_server_object(GIsiClient *client) +{ + return client ? client->server_obj : 0; +} + /** * Returns the resource associated with @a client * @param client client for the resource diff --git a/gisi/client.h b/gisi/client.h index a6d09006..c189e8a6 100644 --- a/gisi/client.h +++ b/gisi/client.h @@ -59,6 +59,9 @@ void g_isi_version_set(GIsiClient *client, int major, int minor); int g_isi_version_major(GIsiClient *client); int g_isi_version_minor(GIsiClient *client); +void g_isi_server_object_set(GIsiClient *client, uint16_t obj); +uint8_t g_isi_server_object(GIsiClient *client); + void g_isi_client_set_debug(GIsiClient *client, GIsiDebugFunc func, void *opaque); diff --git a/gisi/verify.c b/gisi/verify.c index b70b89e0..02d310b5 100644 --- a/gisi/verify.c +++ b/gisi/verify.c @@ -84,6 +84,7 @@ static gboolean verify_cb(GIsiClient *client, const void *restrict data, if (msg[1] == COMM_ISI_VERSION_GET_RESP && len >= 4) { g_isi_version_set(client, msg[2], msg[3]); + g_isi_server_object_set(client, object); alive = TRUE; goto out; }