dbus_dict_helpers.h revision 214501
1214501Srpaulo/* 2214501Srpaulo * WPA Supplicant / dbus-based control interface 3214501Srpaulo * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc. 4214501Srpaulo * 5214501Srpaulo * This program is free software; you can redistribute it and/or modify 6214501Srpaulo * it under the terms of the GNU General Public License version 2 as 7214501Srpaulo * published by the Free Software Foundation. 8214501Srpaulo * 9214501Srpaulo * Alternatively, this software may be distributed under the terms of BSD 10214501Srpaulo * license. 11214501Srpaulo * 12214501Srpaulo * See README and COPYING for more details. 13214501Srpaulo */ 14214501Srpaulo 15214501Srpaulo#ifndef DBUS_DICT_HELPERS_H 16214501Srpaulo#define DBUS_DICT_HELPERS_H 17214501Srpaulo 18214501Srpaulo/* 19214501Srpaulo * Adding a dict to a DBusMessage 20214501Srpaulo */ 21214501Srpaulo 22214501Srpaulodbus_bool_t wpa_dbus_dict_open_write(DBusMessageIter *iter, 23214501Srpaulo DBusMessageIter *iter_dict); 24214501Srpaulo 25214501Srpaulodbus_bool_t wpa_dbus_dict_close_write(DBusMessageIter *iter, 26214501Srpaulo DBusMessageIter *iter_dict); 27214501Srpaulo 28214501Srpauloconst char * wpa_dbus_type_as_string(const int type); 29214501Srpaulo 30214501Srpaulodbus_bool_t wpa_dbus_dict_append_string(DBusMessageIter *iter_dict, 31214501Srpaulo const char *key, const char *value); 32214501Srpaulo 33214501Srpaulodbus_bool_t wpa_dbus_dict_append_byte(DBusMessageIter *iter_dict, 34214501Srpaulo const char *key, const char value); 35214501Srpaulo 36214501Srpaulodbus_bool_t wpa_dbus_dict_append_bool(DBusMessageIter *iter_dict, 37214501Srpaulo const char *key, 38214501Srpaulo const dbus_bool_t value); 39214501Srpaulo 40214501Srpaulodbus_bool_t wpa_dbus_dict_append_int16(DBusMessageIter *iter_dict, 41214501Srpaulo const char *key, 42214501Srpaulo const dbus_int16_t value); 43214501Srpaulo 44214501Srpaulodbus_bool_t wpa_dbus_dict_append_uint16(DBusMessageIter *iter_dict, 45214501Srpaulo const char *key, 46214501Srpaulo const dbus_uint16_t value); 47214501Srpaulo 48214501Srpaulodbus_bool_t wpa_dbus_dict_append_int32(DBusMessageIter *iter_dict, 49214501Srpaulo const char *key, 50214501Srpaulo const dbus_int32_t value); 51214501Srpaulo 52214501Srpaulodbus_bool_t wpa_dbus_dict_append_uint32(DBusMessageIter *iter_dict, 53214501Srpaulo const char *key, 54214501Srpaulo const dbus_uint32_t value); 55214501Srpaulo 56214501Srpaulodbus_bool_t wpa_dbus_dict_append_int64(DBusMessageIter *iter_dict, 57214501Srpaulo const char *key, 58214501Srpaulo const dbus_int64_t value); 59214501Srpaulo 60214501Srpaulodbus_bool_t wpa_dbus_dict_append_uint64(DBusMessageIter *iter_dict, 61214501Srpaulo const char *key, 62214501Srpaulo const dbus_uint64_t value); 63214501Srpaulo 64214501Srpaulodbus_bool_t wpa_dbus_dict_append_double(DBusMessageIter *iter_dict, 65214501Srpaulo const char *key, 66214501Srpaulo const double value); 67214501Srpaulo 68214501Srpaulodbus_bool_t wpa_dbus_dict_append_object_path(DBusMessageIter *iter_dict, 69214501Srpaulo const char *key, 70214501Srpaulo const char *value); 71214501Srpaulo 72214501Srpaulodbus_bool_t wpa_dbus_dict_append_byte_array(DBusMessageIter *iter_dict, 73214501Srpaulo const char *key, 74214501Srpaulo const char *value, 75214501Srpaulo const dbus_uint32_t value_len); 76214501Srpaulo 77214501Srpaulo/* Manual construction and addition of string array elements */ 78214501Srpaulodbus_bool_t wpa_dbus_dict_begin_string_array(DBusMessageIter *iter_dict, 79214501Srpaulo const char *key, 80214501Srpaulo DBusMessageIter *iter_dict_entry, 81214501Srpaulo DBusMessageIter *iter_dict_val, 82214501Srpaulo DBusMessageIter *iter_array); 83214501Srpaulo 84214501Srpaulodbus_bool_t wpa_dbus_dict_string_array_add_element(DBusMessageIter *iter_array, 85214501Srpaulo const char *elem); 86214501Srpaulo 87214501Srpaulodbus_bool_t wpa_dbus_dict_end_string_array(DBusMessageIter *iter_dict, 88214501Srpaulo DBusMessageIter *iter_dict_entry, 89214501Srpaulo DBusMessageIter *iter_dict_val, 90214501Srpaulo DBusMessageIter *iter_array); 91214501Srpaulo 92214501Srpaulo/* Convenience function to add a whole string list */ 93214501Srpaulodbus_bool_t wpa_dbus_dict_append_string_array(DBusMessageIter *iter_dict, 94214501Srpaulo const char *key, 95214501Srpaulo const char **items, 96214501Srpaulo const dbus_uint32_t num_items); 97214501Srpaulo 98214501Srpaulo/* 99214501Srpaulo * Reading a dict from a DBusMessage 100214501Srpaulo */ 101214501Srpaulo 102214501Srpaulostruct wpa_dbus_dict_entry { 103214501Srpaulo int type; /** the dbus type of the dict entry's value */ 104214501Srpaulo int array_type; /** the dbus type of the array elements if the dict 105214501Srpaulo entry value contains an array */ 106214501Srpaulo const char *key; /** key of the dict entry */ 107214501Srpaulo 108214501Srpaulo /** Possible values of the property */ 109214501Srpaulo union { 110214501Srpaulo char *str_value; 111214501Srpaulo char byte_value; 112214501Srpaulo dbus_bool_t bool_value; 113214501Srpaulo dbus_int16_t int16_value; 114214501Srpaulo dbus_uint16_t uint16_value; 115214501Srpaulo dbus_int32_t int32_value; 116214501Srpaulo dbus_uint32_t uint32_value; 117214501Srpaulo dbus_int64_t int64_value; 118214501Srpaulo dbus_uint64_t uint64_value; 119214501Srpaulo double double_value; 120214501Srpaulo char *bytearray_value; 121214501Srpaulo char **strarray_value; 122214501Srpaulo }; 123214501Srpaulo dbus_uint32_t array_len; /** length of the array if the dict entry's 124214501Srpaulo value contains an array */ 125214501Srpaulo}; 126214501Srpaulo 127214501Srpaulodbus_bool_t wpa_dbus_dict_open_read(DBusMessageIter *iter, 128214501Srpaulo DBusMessageIter *iter_dict); 129214501Srpaulo 130214501Srpaulodbus_bool_t wpa_dbus_dict_get_entry(DBusMessageIter *iter_dict, 131214501Srpaulo struct wpa_dbus_dict_entry *entry); 132214501Srpaulo 133214501Srpaulodbus_bool_t wpa_dbus_dict_has_dict_entry(DBusMessageIter *iter_dict); 134214501Srpaulo 135214501Srpaulovoid wpa_dbus_dict_entry_clear(struct wpa_dbus_dict_entry *entry); 136214501Srpaulo 137214501Srpaulo#endif /* DBUS_DICT_HELPERS_H */ 138