lib/connman0_7x/e_connman_private.h
Go to the documentation of this file.
00001 #ifdef HAVE_CONFIG_H
00002 #include "config.h"
00003 #endif
00004 
00005 #ifdef HAVE_ALLOCA_H
00006 # include <alloca.h>
00007 #elif defined __GNUC__
00008 # define alloca __builtin_alloca
00009 #elif defined _AIX
00010 # define alloca __alloca
00011 #elif defined _MSC_VER
00012 # include <malloc.h>
00013 # define alloca _alloca
00014 #else
00015 # include <stddef.h>
00016 # ifdef  __cplusplus
00017 extern "C"
00018 # endif
00019 void *    alloca (size_t);
00020 #endif
00021 
00022 #include <stdio.h>
00023 
00024 #include <Eina.h>
00025 #include <eina_safety_checks.h>
00026 
00027 #define E_CONNMAN_I_KNOW_THIS_API_IS_SUBJECT_TO_CHANGE 1
00028 #include "E_Connman.h"
00029 
00030 typedef struct _E_Connman_Array E_Connman_Array;
00031 struct _E_Connman_Array
00032 {
00033    int         type;
00034    Eina_Array *array;
00035 };
00036 
00037 static const char manager_path[] = "/";
00038 
00039 extern const char *e_connman_iface_manager;
00040 extern const char *e_connman_iface_profile;
00041 extern const char *e_connman_iface_service;
00042 extern const char *e_connman_iface_connection;
00043 extern const char *e_connman_iface_technology;
00044 
00045 extern const char *e_connman_prop_ipv4;
00046 extern const char *e_connman_prop_ipv4_configuration;
00047 extern const char *e_connman_prop_ethernet;
00048 extern const char *e_connman_prop_interface;
00049 extern const char *e_connman_prop_speed;
00050 extern const char *e_connman_prop_duplex;
00051 extern const char *e_connman_prop_method;
00052 extern const char *e_connman_prop_address;
00053 extern const char *e_connman_prop_gateway;
00054 extern const char *e_connman_prop_netmask;
00055 extern const char *e_connman_prop_mtu;
00056 extern const char *e_connman_prop_name;
00057 extern const char *e_connman_prop_offline_mode;
00058 extern const char *e_connman_prop_profiles;
00059 extern const char *e_connman_prop_profile_active;
00060 extern const char *e_connman_prop_services;
00061 extern const char *e_connman_prop_technologies;
00062 extern const char *e_connman_prop_state;
00063 extern const char *e_connman_prop_strength;
00064 extern const char *e_connman_prop_type;
00065 extern const char *e_connman_prop_error;
00066 extern const char *e_connman_prop_security;
00067 extern const char *e_connman_prop_passphrase;
00068 extern const char *e_connman_prop_passphrase_required;
00069 extern const char *e_connman_prop_favorite;
00070 extern const char *e_connman_prop_immutable;
00071 extern const char *e_connman_prop_auto_connect;
00072 extern const char *e_connman_prop_roaming;
00073 extern const char *e_connman_prop_technology_default;
00074 extern const char *e_connman_prop_technologies_available;
00075 extern const char *e_connman_prop_technologies_enabled;
00076 extern const char *e_connman_prop_technologies_connected;
00077 extern const char *e_connman_prop_login_required;
00078 extern const char *e_connman_prop_nameservers;
00079 extern const char *e_connman_prop_nameservers_configuration;
00080 extern const char *e_connman_prop_domains;
00081 extern const char *e_connman_prop_domains_configuration;
00082 extern const char *e_connman_prop_proxy;
00083 extern const char *e_connman_prop_proxy_configuration;
00084 extern const char *e_connman_prop_url;
00085 extern const char *e_connman_prop_servers;
00086 extern const char *e_connman_prop_excludes;
00087 
00088 extern int _e_dbus_connman_log_dom;
00089 
00090 #ifndef EINA_LOG_DEFAULT_COLOR
00091 #define EINA_LOG_DEFAULT_COLOR EINA_COLOR_CYAN
00092 #endif
00093 
00094 #undef DBG
00095 #undef INF
00096 #undef WRN
00097 #undef ERR
00098 
00099 #define DBG(...) EINA_LOG_DOM_DBG(_e_dbus_connman_log_dom, __VA_ARGS__)
00100 #define INF(...) EINA_LOG_DOM_INFO(_e_dbus_connman_log_dom, __VA_ARGS__)
00101 #define WRN(...) EINA_LOG_DOM_WARN(_e_dbus_connman_log_dom, __VA_ARGS__)
00102 #define ERR(...) EINA_LOG_DOM_ERR(_e_dbus_connman_log_dom, __VA_ARGS__)
00103 
00104 static inline Eina_Bool
00105 _dbus_callback_check_and_init(DBusMessage *msg, DBusMessageIter *itr, DBusError *err)
00106 {
00107    if (!msg)
00108      {
00109         if (err && (err->name[0] == 'C'))
00110           return EINA_FALSE;
00111         if (err)
00112           {
00113              /* dont keep reporting the same err again and again */
00114              static char perr[256] = {0};
00115              
00116              if (!(!strncmp(perr, err->name, sizeof(perr) - 1)))
00117                {
00118                   ERR("an error was reported by server: "
00119                       "name=\"%s\", message=\"%s\"",
00120                       err->name, err->message);
00121                   strncpy(perr, err->name, sizeof(perr) - 1);
00122                   perr[sizeof(perr) - 1] = 0;
00123                }
00124           }
00125         else
00126            ERR("callback without message arguments!");
00127 
00128         return EINA_FALSE;
00129      }
00130 
00131    if (!dbus_message_iter_init(msg, itr))
00132      {
00133         ERR("could not init iterator.");
00134         return EINA_FALSE;
00135      }
00136 
00137    return EINA_TRUE;
00138 }
00139 
00140 static inline Eina_Bool
00141 __dbus_iter_type_check(int type, int expected, const char *expected_name)
00142 {
00143    if (type == expected)
00144       return EINA_TRUE;
00145 
00146    ERR("expected type %s (%c) but got %c instead!",
00147        expected_name, expected, type);
00148 
00149    return EINA_FALSE;
00150 }
00151 
00152 #define _dbus_iter_type_check(t, e) __dbus_iter_type_check(t, e, # e)
00153 
00154 extern E_DBus_Connection *e_connman_conn;
00155 
00156 const char *           e_connman_system_bus_name_get(void);
00157 
00158 void                   e_connman_manager_clear_elements(void);
00159 
00160 void                   e_connman_elements_init(void);
00161 void                   e_connman_elements_shutdown(void);
00162 
00163 E_Connman_Element *    e_connman_element_register(const char *path, const char *interface);
00164 void                   e_connman_element_unregister(E_Connman_Element *element);
00165 
00166 Eina_Bool              e_connman_element_objects_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, E_Connman_Element ***elements);
00167 Eina_Bool              e_connman_element_strings_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, const char ***strings);
00168 unsigned char *        e_connman_element_bytes_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count);
00169 
00170 Eina_Bool              e_connman_element_message_send(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, DBusMessage *msg, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
00171 
00172 Eina_Bool              e_connman_element_call_full(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
00173 Eina_Bool              e_connman_element_call_with_path(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
00174 Eina_Bool              e_connman_element_call_with_string(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);