summaryrefslogtreecommitdiffstats
path: root/boardvpd/board_vpd_obj.c
blob: b6c2119435f0d2c37ab159b42edd75de53f3488f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "interfaces/openbmc_intf.h"
#include "openbmc.h"


/* ------------------------------------------------------------------------- */

gint
main(gint argc, gchar *argv[])
{
	GMainLoop *loop;
	GDBusConnection *c;
	GDBusProxy *p;
	GError *error;
	GVariant *parm;

	loop = g_main_loop_new(NULL, FALSE);

	error = NULL;
	c = g_bus_get_sync(DBUS_TYPE, NULL, &error);

	error = NULL;
	p = g_dbus_proxy_new_sync(c,
			G_DBUS_PROXY_FLAGS_NONE,
			NULL, /* GDBusInterfaceInfo* */
			"org.openbmc.managers.Inventory", /* name */
			"/org/openbmc/inventory/items/system/io_board", /* object path */
			"org.openbmc.InventoryItem", /* interface name */
			NULL, /* GCancellable */
			&error);
	g_assert_no_error(error);

	//TODO: Read actual vpd
	g_print("Reading VPD\n");
	GVariantBuilder *b;
	GVariant *dict;

	b = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
	g_variant_builder_add(b, "{sv}", "manufacturer", g_variant_new_string("ibm"));
	g_variant_builder_add(b, "{sv}", "part_num", g_variant_new_string("3N0001"));
	dict = g_variant_builder_end(b);

	//proxy_call wants parm as an array
	parm = g_variant_new("(v)",dict);

	error = NULL;
	g_dbus_proxy_call_sync(p,
			"update",
			parm,
			G_DBUS_CALL_FLAGS_NONE,
			-1,
			NULL,
			&error);
	g_assert_no_error(error);

	g_object_unref(p);
	g_object_unref(c);
	g_main_loop_unref(loop);
	return 0;
}
OpenPOWER on IntegriCloud