lots of changes
diff --git a/objects/chassis_identify_obj.c b/objects/chassis_identify_obj.c
deleted file mode 100644
index 1206d17..0000000
--- a/objects/chassis_identify_obj.c
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "interfaces/openbmc_intf.h"
-#include <stdio.h>
-#include "openbmc.h"
-#include "gpio.h"
-
-/* ---------------------------------------------------------------------------------------------------- */
-static const gchar* dbus_object_path = "/org/openbmc/leds";
-static const gchar* dbus_name = "org.openbmc.leds.ChassisIdentify";
-
-static GDBusObjectManagerServer *manager = NULL;
-
-GPIO led_gpio = (GPIO){"IDENTIFY"};
-
-static gboolean
-on_set_on (Led *led,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
- printf("Turn on chassis identify led\n");
- led_complete_set_on(led,invocation);
- int rc = GPIO_OK;
- do {
- rc = gpio_open(&led_gpio);
- if (rc != GPIO_OK) { break; }
- rc = gpio_write(&led_gpio,1);
- if (rc != GPIO_OK) { break; }
- } while(0);
- gpio_close(&led_gpio);
- if (rc != GPIO_OK)
- {
- printf("ERROR ChassisIdentify: GPIO error %s (rc=%d)\n",led_gpio.name,rc);
- }
-
- return TRUE;
-
-}
-
-static gboolean
-on_set_off (Led *led,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
- g_print("Turn off chassis identify led\n");
- led_complete_set_off(led,invocation);
- int rc = GPIO_OK;
- do {
- rc = gpio_open(&led_gpio);
- if (rc != GPIO_OK) { break; }
- rc = gpio_write(&led_gpio,0);
- if (rc != GPIO_OK) { break; }
- } while(0);
- gpio_close(&led_gpio);
- if (rc != GPIO_OK)
- {
- printf("ERROR ChassisIdentify: GPIO error %s (rc=%d)\n",led_gpio.name,rc);
- }
- return TRUE;
-}
-
-static void
-on_bus_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- ObjectSkeleton *object;
-
- 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);
-
- Led *led = led_skeleton_new ();
- object_skeleton_set_led (object, led);
- g_object_unref (led);
-
- //define method callbacks
- g_signal_connect (led,
- "handle-set-on",
- G_CALLBACK (on_set_on),
- NULL); /* user_data */
- g_signal_connect (led,
- "handle-set-off",
- G_CALLBACK (on_set_off),
- NULL);
-
- led_set_color(led,0);
- led_set_function(led,"CHASSIS_IDENTIFY");
-
- /* 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,&led_gpio);
-
-}
-
-static void
-on_name_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
-}
-
-static void
-on_name_lost (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
-}
-
-
-gint
-main (gint argc, gchar *argv[])
-{
- GMainLoop *loop;
- cmdline cmd;
- cmd.argc = argc;
- cmd.argv = argv;
-
- guint id;
- loop = g_main_loop_new (NULL, FALSE);
-
- id = g_bus_own_name (DBUS_TYPE,
- dbus_name,
- G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
- G_BUS_NAME_OWNER_FLAGS_REPLACE,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- &cmd,
- NULL);
-
- g_main_loop_run (loop);
-
- g_bus_unown_name (id);
- g_main_loop_unref (loop);
- return 0;
-}
diff --git a/objects/control_bmc_obj.c b/objects/control_bmc_obj.c
index 4355f63..caba185 100644
--- a/objects/control_bmc_obj.c
+++ b/objects/control_bmc_obj.c
@@ -108,7 +108,7 @@
reg_init();
#endif
control_complete_init(control,invocation);
- control_emit_goto_system_state(control,"STANDBY");
+ control_emit_goto_system_state(control,"BMC_STARTING");
return TRUE;
}
diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index 928d11b..ebc71aa 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -24,10 +24,10 @@
const gchar* name = flash_get_flasher_name(flash);
const gchar* inst = flash_get_flasher_instance(flash);
const gchar* filename = flash_get_filename(flash);
-
status = execl(path, name, inst, filename, NULL);
+ return status;
}
- return status;
+ return 0;
}
static gboolean
@@ -53,9 +53,18 @@
gchar* name,
gpointer user_data)
{
- printf("Locking BIOS Flash: %s\n",name);
- shared_resource_set_lock(lock,true);
- shared_resource_set_name(lock,name);
+ gboolean locked = shared_resource_get_lock(lock);
+ if (locked)
+ {
+ const gchar* name = shared_resource_get_name(lock);
+ printf("ERROR: BIOS Flash is already locked: %s\n",name);
+ }
+ else
+ {
+ printf("Locking BIOS Flash: %s\n",name);
+ shared_resource_set_lock(lock,true);
+ shared_resource_set_name(lock,name);
+ }
shared_resource_complete_lock(lock,invocation);
return TRUE;
}
@@ -347,7 +356,7 @@
object,
NULL );
g_free(s);
- s = g_strdup_printf ("/org/openbmc/control/%s\0",cmd->argv[i]);
+ s = g_strdup_printf ("/org/openbmc/control/%s",cmd->argv[i]);
g_dbus_connection_signal_subscribe(connection,
NULL,
"org.openbmc.FlashControl",
diff --git a/objects/pcie_slot_present_obj.c b/objects/pcie_slot_present_obj.c
index cceb637..f1f882b 100644
--- a/objects/pcie_slot_present_obj.c
+++ b/objects/pcie_slot_present_obj.c
@@ -2,6 +2,7 @@
#include "openbmc.h"
#include <stdio.h>
#include <stdbool.h>
+#include <string.h>
#include "gpio.h"
#define NUM_SLOTS 4
@@ -48,7 +49,7 @@
g_variant_get(v_result,"(sss)",&obj_info->bus_name,&obj_info->path,&obj_info->intf_name);
int rc=0;
- if (strcmp(obj_info->bus_name,"") == 0) {
+ if (strlen(obj_info->bus_name) == 0) {
rc = 1;
}
g_variant_unref(v_result);
@@ -78,7 +79,7 @@
return rc;
}
-void update_fru_obj(GDBusConnection* connection, object_info* obj_info, bool present)
+void update_fru_obj(GDBusConnection* connection, object_info* obj_info, const char* present)
{
GDBusProxy *proxy;
GError *error;
@@ -97,7 +98,7 @@
g_assert_no_error (error);
error = NULL;
- parm = g_variant_new("(b)",present);
+ parm = g_variant_new("(s)",present);
result = g_dbus_proxy_call_sync (proxy,
"setPresent",
@@ -142,15 +143,18 @@
{
object_info obj_info;
uint8_t present;
- bool b_present=false;
+ char* chr_present;
do {
rc = get_object(sys_proxy,&slots[i],&obj_info);
if (rc) { break; }
rc = get_presence(c,&slots[i],&present);
- if (present==1) { b_present=true; }
//if (rc) { break; }
// TODO: send correct state
- update_fru_obj(c,&obj_info,b_present);
+ if (present == 1) {
+ update_fru_obj(c,&obj_info,"PRESENT");
+ } else {
+ update_fru_obj(c,&obj_info,"NOT PRESENT");
+ }
} while(0);
}
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index a943b5e..bdb7c9a 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -64,16 +64,18 @@
if (gpio==0)
{
control_power_emit_power_lost(control_power);
- control_emit_goto_system_state(control,"POWERED_OFF");
+ control_emit_goto_system_state(control,"HOST_POWERED_OFF");
}
else
{
control_power_emit_power_good(control_power);
- control_emit_goto_system_state(control,"POWERED_ON");
+ control_emit_goto_system_state(control,"HOST_POWERED_ON");
}
}
} else {
printf("ERROR PowerControl: GPIO read error (gpio=%s,rc=%d)\n",pgood.name,rc);
+ //return false so poll won't get called anymore
+ return FALSE;
}
//pgood is not at desired state yet
if (gpio != control_power_get_state(control_power) &&
@@ -118,9 +120,9 @@
int error = 0;
do {
if (state == 1) {
- control_emit_goto_system_state(control,"POWERING_ON");
+ control_emit_goto_system_state(control,"HOST_POWERING_ON");
} else {
- control_emit_goto_system_state(control,"POWERING_OFF");
+ control_emit_goto_system_state(control,"HOST_POWERING_OFF");
}
error = gpio_open(&power_pin);
if (error != GPIO_OK) { break; }
diff --git a/objects/sensor_host_status_obj.c b/objects/sensor_host_status_obj.c
deleted file mode 100644
index d631200..0000000
--- a/objects/sensor_host_status_obj.c
+++ /dev/null
@@ -1,181 +0,0 @@
-#include "interfaces/openbmc_intf.h"
-#include "openbmc.h"
-
-#define BOOTED 100
-/* ---------------------------------------------------------------------------------------------------- */
-
-static const gchar* dbus_object_path = "/org/openbmc/sensors";
-static const gchar* dbus_name = "org.openbmc.sensors.HostStatus";
-static guint heartbeat = 0;
-
-static GDBusObjectManagerServer *manager = NULL;
-
-static gboolean
-on_init (SensorValue *sen,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
- sensor_value_complete_init(sen,invocation);
- return TRUE;
-}
-
-static gboolean
-on_init_control (Control *control,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
- control_complete_init(control,invocation);
- return TRUE;
-}
-static gboolean
-on_set_value (SensorValue *sen,
- GDBusMethodInvocation *invocation,
- guchar host_status,
- gpointer user_data)
-{
- SensorValue *v = object_get_sensor_value((Object*)user_data);
- SensorMatch *match = object_get_sensor_match((Object*)user_data);
- Control* control = object_get_control((Object*)user_data);
-
- GVariant *old_value = sensor_value_get_value(sen);
- GVariant *value = NEW_VARIANT_B(host_status);
- if (VARIANT_COMPARE(old_value,value) != 0)
- {
- sensor_value_set_value(sen, value);
- sensor_value_emit_changed(sen, value, "");
- if (host_status == BOOTED)
- {
- sensor_match_set_state(match,host_status);
- sensor_match_emit_sensor_match(match,host_status);
- control_emit_goto_system_state(control,"BOOTED");
- }
- }
- sensor_value_complete_set_value(sen,invocation);
- return TRUE;
-}
-
-static void
-on_bus_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
-// 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]);
- ObjectSkeleton *object = object_skeleton_new (s);
- g_free (s);
-
- SensorValue *sensor = sensor_value_skeleton_new ();
- object_skeleton_set_sensor_value (object, sensor);
- g_object_unref (sensor);
-
- SensorMatch *match = sensor_match_skeleton_new ();
- object_skeleton_set_sensor_match (object, match);
- g_object_unref (match);
-
- Control *control = control_skeleton_new ();
- object_skeleton_set_control (object, control);
- g_object_unref (control);
-
- //must init variant
- GVariant* v = NEW_VARIANT_B(0);
- sensor_value_set_value(sensor,v);
-
- // set units
- sensor_value_set_units(sensor,"");
- sensor_value_set_settable(sensor,TRUE);
- //must emit change so sensor manager sees initial value
- sensor_value_emit_changed(sensor,v,"");
-
- //signal handlers
- /*g_dbus_connection_signal_subscribe(connection,
- "org.openbmc.sensors.IpmiBt",
- "org.openbmc.sensors.IpmiBt",
- "SetSensor",
- "/org/openbmc/sensors/IpmiBt",
- NULL,
- G_DBUS_SIGNAL_FLAGS_NONE,
- (GDBusSignalCallback) on_set_ipmi,
- object,
- NULL );
- */
- //define method callbacks here
- g_signal_connect (sensor,
- "handle-init",
- G_CALLBACK (on_init),
- NULL); /* user_data */
-
- g_signal_connect (control,
- "handle-init",
- G_CALLBACK (on_init_control),
- NULL); /* user_data */
-
- g_signal_connect (sensor,
- "handle-set-value",
- G_CALLBACK (on_set_value),
- object); /* 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);
-}
-
-static void
-on_name_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- //g_print ("Acquired the name %s\n", name);
-}
-
-static void
-on_name_lost (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- //g_print ("Lost the name %s\n", name);
-}
-
-
-gint
-main (gint argc, gchar *argv[])
-{
- GMainLoop *loop;
- cmdline cmd;
- cmd.argc = argc;
- cmd.argv = argv;
- guint id;
- loop = g_main_loop_new (NULL, FALSE);
-
- id = g_bus_own_name (DBUS_TYPE,
- dbus_name,
- G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
- G_BUS_NAME_OWNER_FLAGS_REPLACE,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- &cmd,
- NULL);
-
- g_main_loop_run (loop);
-
- g_bus_unown_name (id);
- g_main_loop_unref (loop);
- return 0;
-}