static int acpi_capm_get_pwstatus(apm_pwstatus_t app) { int batt_unit; int acline; struct acpi_battinfo batt; if (app->ap_device != PMDV_ALLDEV && (app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL)) { return (1); } if (app->ap_device == PMDV_ALLDEV) { batt_unit = -1; /* all units */ } else { batt_unit = app->ap_device - PMDV_BATT0; } if (acpi_battery_get_battinfo(batt_unit, &batt)) { return (1); } app->ap_batt_stat = acpi_capm_convert_battstate(&batt); app->ap_batt_flag = acpi_capm_convert_battflags(&batt); app->ap_batt_life = batt.cap; app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60; if (acpi_acad_get_acline(&acline)) { app->ap_acline = 0xff; /* unknown */ } else { app->ap_acline = acline; /* on/off */ } return (0); }
static int acpi_capm_get_pwstatus(apm_pwstatus_t app) { device_t dev; int acline, unit, error; struct acpi_battinfo batt; if (app->ap_device != PMDV_ALLDEV && (app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL)) return (1); if (app->ap_device == PMDV_ALLDEV) error = acpi_battery_get_battinfo(NULL, &batt); else { unit = app->ap_device - PMDV_BATT0; dev = devclass_get_device(devclass_find("battery"), unit); if (dev != NULL) error = acpi_battery_get_battinfo(dev, &batt); else error = ENXIO; } if (error) return (1); app->ap_batt_stat = acpi_capm_convert_battstate(&batt); app->ap_batt_flag = acpi_capm_convert_battflags(&batt); app->ap_batt_life = batt.cap; app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60; if (acpi_acad_get_acline(&acline)) app->ap_acline = 0xff; /* unknown */ else app->ap_acline = acline; /* on/off */ return (0); }