static void hdaps_set_defaults(HdapsPlugin *hdaps) {
DBG("Configuring all settings to defaults.");
- hdaps->device_name = g_strdup(DEFAULT_DEVICE_NAME);
+
+ /* Here we determine the default device name. There are essentially
+ two "defaults," one soft, and the other hard. The soft default
+ is to choose the first supported HDAPS device in the system. This
+ would benefit users who, for example, only have one supported drive
+ named hda. If we can't find any supported HDAPS devices, we use the
+ hard default of DEFAULT_DEVICE_NAME. */
+ char hdaps_devices[MAX_HDAPS_DEVICES][FILENAME_MAX];
+ int found_devices = get_hdaps_device_list(hdaps_devices);
+
+ if (found_devices > 0) {
+ hdaps->device_name = g_strdup(hdaps_devices[0]);
+ }
+ else {
+ hdaps->device_name = g_strdup(DEFAULT_DEVICE_NAME);
+ }
+
snprintf(hdaps->sysfs_file, FILENAME_MAX, UNLOAD_HEADS_FMT, hdaps->device_name);
+
+ /* The other default is easier. */
hdaps->poll_frequency = DEFAULT_POLL_FREQUENCY;
}