+#include <unistd.h>
+
#include "libubus.h"
static struct ubus_context *ctx;
static const struct ubus_signature test_object_sig[] = {
UBUS_METHOD_START("hello"),
- UBUS_ARRAY("test"),
- UBUS_TABLE_START(NULL),
- UBUS_FIELD(INT32, "id"),
- UBUS_FIELD(STRING, "msg"),
- UBUS_TABLE_END(),
+ UBUS_TABLE_START(NULL),
+ UBUS_FIELD(INT32, "id"),
+ UBUS_FIELD(STRING, "msg"),
+ UBUS_TABLE_END(),
UBUS_METHOD_END(),
};
int main(int argc, char **argv)
{
- int ret;
+ const char *progname, *ubus_socket = NULL;
+ int ret = 0;
+ int ch;
+
+ progname = argv[0];
+
+ while ((ch = getopt(argc, argv, "s:")) != -1) {
+ switch (ch) {
+ case 's':
+ ubus_socket = optarg;
+ break;
+ default:
+ break;
+ }
+ }
- ctx = ubus_connect(NULL);
+ argc -= optind;
+ argv += optind;
+
+ ctx = ubus_connect(ubus_socket);
if (!ctx) {
fprintf(stderr, "Failed to connect to ubus\n");
return -1;
}
- fprintf(stderr, "Connected as ID 0x%08x\n", ctx->local_id);
-
- fprintf(stderr, "Publishing object\n");
- ret = ubus_publish(ctx, &test_object);
+ ret = ubus_add_object(ctx, &test_object);
if (ret)
- fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
- else {
- fprintf(stderr, "Object ID: %08x\n", test_object.id);
- fprintf(stderr, "Object Type ID: %08x\n", test_object.type->id);
- }
+ fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
- fprintf(stderr, "Publishing object\n");
- ret = ubus_publish(ctx, &test_object2);
+ ret = ubus_add_object(ctx, &test_object2);
if (ret)
- fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
- else {
- fprintf(stderr, "Object ID: %08x\n", test_object2.id);
- fprintf(stderr, "Object Type ID: %08x\n", test_object2.type->id);
- }
+ fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
+
uloop_init();
ubus_add_uloop(ctx);
uloop_run();
+ uloop_done();
ubus_free(ctx);
return 0;