static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; //g_print ("Acquired a message bus connection: %s\n",name); cmdline *cmd = user_data; if (cmd->argc < 2) { g_print("No objects created. Put object name(s) on command line\n"); return; } manager = g_dbus_object_manager_server_new (dbus_object_path); int i=0; for (i=1;i<cmd->argc;i++) { gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]); object = object_skeleton_new (s); g_free (s); ControlHost* control_host = control_host_skeleton_new (); object_skeleton_set_control_host (object, control_host); g_object_unref (control_host); Control* control = control_skeleton_new (); object_skeleton_set_control (object, control); g_object_unref (control); //define method callbacks here g_signal_connect (control_host, "handle-boot", G_CALLBACK (on_boot), object); /* user_data */ g_signal_connect (control, "handle-init", G_CALLBACK (on_init), NULL); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); } /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); gpio_init(connection,&fsi_data); gpio_init(connection,&fsi_clk); gpio_init(connection,&fsi_enable); gpio_init(connection,&cronus_sel); }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; //g_print ("Acquired a message bus connection: %s\n",name); manager = g_dbus_object_manager_server_new(dbus_object_path); gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new(s); g_free(s); ControlHost* control_host = control_host_skeleton_new(); object_skeleton_set_control_host(object, control_host); g_object_unref(control_host); Control* control = control_skeleton_new(); object_skeleton_set_control(object, control); g_object_unref(control); //define method callbacks here g_signal_connect(control_host, "handle-boot", G_CALLBACK(on_boot), object); /* user_data */ g_signal_connect(control, "handle-init", G_CALLBACK(on_init), NULL); /* user_data */ control_host_set_debug_mode(control_host,0); control_host_set_flash_side(control_host,"primary"); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); gpio_init(connection,&fsi_data); gpio_init(connection,&fsi_clk); gpio_init(connection,&fsi_enable); gpio_init(connection,&cronus_sel); gpio_init(connection,&Throttle); gpio_init(connection,&idbtn); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; manager = g_dbus_object_manager_server_new (dbus_object_path); gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new (s); g_free (s); ControlBmc* control_bmc = control_bmc_skeleton_new (); object_skeleton_set_control_bmc (object, control_bmc); g_object_unref (control_bmc); Control* control = control_skeleton_new (); object_skeleton_set_control (object, control); g_object_unref (control); //define method callbacks here g_signal_connect (control, "handle-init", G_CALLBACK (on_init), NULL); /* user_data */ g_signal_connect (control_bmc, "handle-warm-reset", G_CALLBACK (on_warm_reset), NULL); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); //TODO: This is a bad hack to wait for object to be on bus //sleep(1); cmd->user_data = object; //g_idle_add(go,cmd); }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; if(cmd->argc < 3) { g_print("Usage: power_control.exe [poll interval] [timeout]\n"); return; } manager = g_dbus_object_manager_server_new(dbus_object_path); gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new(s); g_free(s); ControlPower* control_power = control_power_skeleton_new(); object_skeleton_set_control_power(object, control_power); g_object_unref(control_power); Control* control = control_skeleton_new(); object_skeleton_set_control(object, control); g_object_unref(control); //define method callbacks here g_signal_connect(control_power, "handle-set-power-state", G_CALLBACK(on_set_power_state), object); /* user_data */ g_signal_connect(control_power, "handle-get-power-state", G_CALLBACK(on_get_power_state), NULL); /* user_data */ g_signal_connect(control, "handle-init", G_CALLBACK(on_init), object); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); // get gpio device paths int rc = GPIO_OK; do { rc = gpio_init(connection,&power_pin); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&pgood); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&pcie_reset); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&usb_reset); if(rc != GPIO_OK) { break; } uint8_t gpio; rc = gpio_open(&pgood); if(rc != GPIO_OK) { break; } rc = gpio_read(&pgood,&gpio); if(rc != GPIO_OK) { break; } gpio_close(&pgood); control_power_set_pgood(control_power,gpio); control_power_set_state(control_power,gpio); printf("Pgood state: %d\n",gpio); } while(0); if(rc != GPIO_OK) { printf("ERROR PowerControl: GPIO setup (rc=%d)\n",rc); } //start poll pgood_timeout_start = 0; int poll_interval = atoi(cmd->argv[1]); int pgood_timeout = atoi(cmd->argv[2]); if(poll_interval < 1000 || pgood_timeout <5) { printf("ERROR PowerControl: poll_interval < 1000 or pgood_timeout < 5\n"); } else { control_set_poll_interval(control,poll_interval); control_power_set_pgood_timeout(control_power,pgood_timeout); g_timeout_add(poll_interval, poll_pgood, object); } }