hal_get_property.c revision 18c2aff776a775d34a4c9893a4c72e0434d68e36
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CVSID: $Id$
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * hal_get_property.c : Get property for a device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2003 David Zeuthen, <david@fubar.dk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is free software; you can redistribute it and/or modify
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it under the terms of the GNU General Public License as published by
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the Free Software Foundation; either version 2 of the License, or
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (at your option) any later version.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is distributed in the hope that it will be useful,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * but WITHOUT ANY WARRANTY; without even the implied warranty of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * GNU General Public License for more details.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You should have received a copy of the GNU General Public License
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * along with this program; if not, write to the Free Software
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @defgroup HalGetProperty Get HAL device property
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ingroup HalMisc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @brief A commandline tool getting a property of a device. Uses libhal
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Print out program usage.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "usage : hal-get-property --udi <udi> --key <key> \n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " [--hex] [--help] [--verbose] [--version]\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --udi Unique Device Id\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --key Key of the property to get\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --hex Show integer values in hex (without leading 0x)\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --verbose Be verbose\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --version Show version and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --help Show this information and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "This program retrieves a property from a device. If the property exist\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "then it is printed on stdout and this program exits with exit code 0.\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "On error, the program exits with an exit code different from 0\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Entry point
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @return Return code
18c2aff776a775d34a4c9893a4c72e0434d68e36artem while (1) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *opt;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (c == -1)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem switch (c) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "Could not initialise connection to hald.\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "Normally this means the HAL daemon (hald) is not running or not ready.\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem type = libhal_device_get_property_type (hal_ctx, udi, key, &error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_device_get_property_type: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* emit the value to stdout */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem str = libhal_device_get_property_string (hal_ctx, udi, key, &error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_int (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (long long unsigned int) libhal_device_get_property_uint64 (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_double (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_bool (hal_ctx, udi, key, &error) ? "true" : "false");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem unsigned int i;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((strlist = libhal_device_get_property_strlist (hal_ctx, udi, key, &error)) != NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem for (i = 0; strlist[i] != 0; i++) {