7b840e52d558c34b70cbcde044d8d79852d169d2phitran/***************************************************************************
7b840e52d558c34b70cbcde044d8d79852d169d2phitran *
7b840e52d558c34b70cbcde044d8d79852d169d2phitran * addon-acpi.c : Poll battery and AC adapter devices and update
7b840e52d558c34b70cbcde044d8d79852d169d2phitran * properties
7b840e52d558c34b70cbcde044d8d79852d169d2phitran *
d2ec54f7875f7e05edd56195adbeb593c947763fphitran * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
7b840e52d558c34b70cbcde044d8d79852d169d2phitran * Use is subject to license terms.
7b840e52d558c34b70cbcde044d8d79852d169d2phitran *
7b840e52d558c34b70cbcde044d8d79852d169d2phitran * Licensed under the Academic Free License version 2.1
7b840e52d558c34b70cbcde044d8d79852d169d2phitran *
7b840e52d558c34b70cbcde044d8d79852d169d2phitran **************************************************************************/
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#pragma ident "%Z%%M% %I% %E% SMI"
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#ifdef HAVE_CONFIG_H
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <config.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#endif
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <stdio.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <unistd.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <stdlib.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <fcntl.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <sys/dkio.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <sys/stat.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <glib.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include <libhal.h>
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include "../../hald/logger.h"
7b840e52d558c34b70cbcde044d8d79852d169d2phitran#include "../../hald/util_helper.h"
d2ec54f7875f7e05edd56195adbeb593c947763fphitran#include "../../utils/acpi.h"
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitranint
7b840e52d558c34b70cbcde044d8d79852d169d2phitranmain(int argc, char **argv)
7b840e52d558c34b70cbcde044d8d79852d169d2phitran{
7b840e52d558c34b70cbcde044d8d79852d169d2phitran LibHalContext *ctx = NULL;
7b840e52d558c34b70cbcde044d8d79852d169d2phitran DBusError error;
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran GMainLoop *loop = g_main_loop_new(NULL, FALSE);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran drop_privileges(0);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran setup_logger();
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran dbus_error_init(&error);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran if ((ctx = libhal_ctx_init_direct(&error)) == NULL) {
7b840e52d558c34b70cbcde044d8d79852d169d2phitran printf("main(): init_direct failed\n");
7b840e52d558c34b70cbcde044d8d79852d169d2phitran return (0);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran }
7b840e52d558c34b70cbcde044d8d79852d169d2phitran dbus_error_init(&error);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran if (!libhal_device_addon_is_ready(ctx, getenv("UDI"), &error)) {
7b840e52d558c34b70cbcde044d8d79852d169d2phitran return (0);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran }
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran g_timeout_add(BATTERY_POLL_TIMER, update_devices, ctx);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
7b840e52d558c34b70cbcde044d8d79852d169d2phitran g_main_loop_run(loop);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran}