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 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");
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems /* check UDI exists */
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems udi_exists = libhal_device_exists (hal_ctx, udi, &error);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: UDI %s does not exist\n", udi);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_exists: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem type = libhal_device_get_property_type (hal_ctx, udi, key, &error);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_get_property_type: %s: %s\n", error.name, error.message);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_get_property_type: invalid params.\n");
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++) {