Skip to content

Commit c6fa1dd

Browse files
anoo1bradbishop
authored andcommitted
fan_control: Move to using xyz.openbmc_project.Sensors
The org.openbmc.Sensors interface has been replaced with xyz.openbmc_project.Sensors: https://github.com/openbmc/docs/blob/master/sensor-architecture.md Update the fan control app to use the supported sensor interface. This fan control provides two D-Bus methods that are not used by any current supported platform, but some platforms still include this app in their image so update it to serve as a reference. Also add an empty string as the second argument to the GetObject method call, otherwise the call fails to find the object. Tested: Booted Romulus and verified the fan control app started. Change-Id: I9e576e126a80863f47cab622d0029a389cddb644 Signed-off-by: Adriana Kobylak <[email protected]>
1 parent f070b1c commit c6fa1dd

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

fanctl/fan_control.c

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ int get_connection(sd_bus *bus, char *connection, const char *obj_path)
5252
"GetObject",
5353
&bus_error,
5454
&m,
55-
"s",
56-
obj_path);
55+
"ss",
56+
obj_path,
57+
"");
5758
if (rc < 0) {
5859
fprintf(stderr,
5960
"Failed to GetObject: %s\n", bus_error.message);
@@ -90,13 +91,12 @@ int set_dbus_sensor(sd_bus *bus, const char *obj_path, int val)
9091
goto finish;
9192
}
9293

93-
rc = sd_bus_call_method(bus,
94+
rc = sd_bus_set_property(bus,
9495
connection,
9596
obj_path,
96-
"org.openbmc.SensorValue",
97-
"setValue",
97+
"xyz.openbmc_project.Control.FanSpeed",
98+
"Target",
9899
&bus_error,
99-
&response,
100100
"i",
101101
val);
102102
if (rc < 0)
@@ -112,8 +112,8 @@ int set_dbus_sensor(sd_bus *bus, const char *obj_path, int val)
112112
return rc;
113113
}
114114

115-
/* Read sensor value from "org.openbmc.Sensors" */
116-
int read_dbus_sensor(sd_bus *bus, const char *obj_path)
115+
/* Read sensor value from "xyz.openbmc_projects.Sensors" */
116+
int read_dbus_sensor(sd_bus *bus, const char *obj_path, const char *property)
117117
{
118118
char connection[DBUS_MAX_NAME_LEN];
119119
sd_bus_error bus_error = SD_BUS_ERROR_NULL;
@@ -132,14 +132,14 @@ int read_dbus_sensor(sd_bus *bus, const char *obj_path)
132132
goto finish;
133133
}
134134

135-
rc = sd_bus_call_method(bus,
135+
rc = sd_bus_get_property(bus,
136136
connection,
137137
obj_path,
138-
"org.openbmc.SensorValue",
139-
"getValue",
138+
"xyz.openbmc_project.Sensor.Value",
139+
property,
140140
&bus_error,
141141
&response,
142-
NULL);
142+
"i");
143143
if (rc < 0) {
144144
val = 0;
145145
fprintf(stderr,
@@ -148,7 +148,7 @@ int read_dbus_sensor(sd_bus *bus, const char *obj_path)
148148
goto finish;
149149
}
150150

151-
rc = sd_bus_message_read(response, "v","i", &val);
151+
rc = sd_bus_message_read(response, "i", &val);
152152
if (rc < 0) {
153153
val = 0;
154154
fprintf(stderr,
@@ -165,7 +165,7 @@ int read_dbus_sensor(sd_bus *bus, const char *obj_path)
165165
return val;
166166
}
167167

168-
/* set fan speed with /org/openbmc/sensors/speed/fan* object */
168+
/* set fan speed with /xyz/openbmc_project/sensors/fan_tach/fan* object */
169169
static int fan_set_speed(sd_bus *bus, int fan_id, uint8_t fan_speed)
170170
{
171171
char obj_path[DBUS_MAX_NAME_LEN];
@@ -175,7 +175,7 @@ static int fan_set_speed(sd_bus *bus, int fan_id, uint8_t fan_speed)
175175
return -1;
176176

177177
snprintf(obj_path, sizeof(obj_path),
178-
"/org/openbmc/sensors/speed/fan%d", fan_id);
178+
"/xyz/openbmc_project/sensors/fan_tach/fan%d_0", fan_id);
179179
rc = set_dbus_sensor(bus, obj_path, fan_speed);
180180
if (rc < 0)
181181
fprintf(stderr, "fanctl: Failed to set fan[%d] speed[%d]\n",
@@ -215,13 +215,10 @@ static int fan_get_speed(sd_bus *bus, int fan_id)
215215
int fan_speed;
216216

217217
/* get fan tach */
218-
/* The object path is specific to Barreleye */
219218
snprintf(obj_path, sizeof(obj_path),
220-
"/org/openbmc/sensors/tach/fan%dH", fan_id);
221-
fan_tach_H = read_dbus_sensor(bus, obj_path);
222-
snprintf(obj_path, sizeof(obj_path),
223-
"/org/openbmc/sensors/tach/fan%dL", fan_id);
224-
fan_tach_L = read_dbus_sensor(bus, obj_path);
219+
"/xyz/openbmc_project/sensors/fan_tach/fan%d_0", fan_id);
220+
fan_tach_H = read_dbus_sensor(bus, obj_path, "MaxValue");
221+
fan_tach_L = read_dbus_sensor(bus, obj_path, "MinValue");
225222

226223
/* invalid sensor value is -1 */
227224
if (fan_tach_H <= 0 || fan_tach_L <= 0)
@@ -243,7 +240,8 @@ int fan_set_present(sd_bus *bus, int fan_id, int val)
243240
char connection[DBUS_MAX_NAME_LEN];
244241

245242
snprintf(obj_path, sizeof(obj_path),
246-
"/org/openbmc/inventory/system/chassis/fan%d", fan_id);
243+
"/xyz/openbmc_project/inventory/system/chassis/motherboard/fan%d",
244+
fan_id);
247245

248246
rc = get_connection(bus, connection, obj_path);
249247
if (rc < 0) {
@@ -252,15 +250,14 @@ int fan_set_present(sd_bus *bus, int fan_id, int val)
252250
goto finish;
253251
}
254252

255-
rc = sd_bus_call_method(bus,
253+
rc = sd_bus_set_property(bus,
256254
connection,
257255
obj_path,
258-
"org.openbmc.InventoryItem",
259-
"setPresent",
256+
"xyz.openbmc_project.Inventory.Item",
257+
"Present",
260258
&bus_error,
261-
&response,
262-
"s",
263-
(val == 1 ? "True" : "False"));
259+
"b",
260+
val);
264261
if(rc < 0)
265262
fprintf(stderr,
266263
"fanctl: Failed to update fan presence via dbus: %s\n",

0 commit comments

Comments
 (0)