@@ -92,7 +92,7 @@ int discover_client_process(struct disco
pb_log("%s: no device?\n", __func__);
return 0;
}
- client->ops.add_device(dev);
+ client->ops.add_device(dev, client->ops.cb_arg);
talloc_free(dev);
break;
case PB_PROTOCOL_ACTION_REMOVE:
@@ -101,7 +101,7 @@ int discover_client_process(struct disco
pb_log("%s: no device id?\n", __func__);
return 0;
}
- client->ops.remove_device(dev_id);
+ client->ops.remove_device(dev_id, client->ops.cb_arg);
break;
default:
pb_log("%s: unknown action %d\n", __func__, message->action);
@@ -5,9 +5,17 @@
struct discover_client;
+/**
+ * struct discover_client_ops - Application supplied client info.
+ * @add_device: PB_PROTOCOL_ACTION_ADD event callback.
+ * @remove_device: PB_PROTOCOL_ACTION_REMOVE event callback.
+ * @cb_arg: Client managed convenience variable passed to callbacks.
+ */
+
struct discover_client_ops {
- int (*add_device)(struct device *);
- void (*remove_device)(char *);
+ int (*add_device)(struct device *device, void *arg);
+ void (*remove_device)(char *dev_id, void *arg);
+ void *cb_arg;
};
struct discover_client *discover_client_init(struct discover_client_ops *ops);
@@ -3,7 +3,8 @@
#include "ui/common/discover-client.h"
-static int print_device_add(struct device *device)
+static int print_device_add(struct device *device,
+ void __attribute__((unused)) *arg)
{
struct boot_option *opt;
@@ -27,13 +28,13 @@ static int print_device_add(struct devic
return 0;
}
-static void print_device_remove(char *dev_id)
+static void print_device_remove(char *dev_id, void __attribute__((unused)) *arg)
{
printf("removed device:\n");
printf("\tid: %s\n", dev_id);
}
-struct discover_client_ops client_ops = {
+static struct discover_client_ops client_ops = {
.add_device = print_device_add,
.remove_device = print_device_remove,
};
Add a user supplied agument to the struct discover_client_ops callback routines that is suitable for managing client instance data. Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> --- ui/common/discover-client.c | 4 ++-- ui/common/discover-client.h | 12 ++++++++++-- ui/test/pb-test.c | 7 ++++--- 3 files changed, 16 insertions(+), 7 deletions(-)