X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=include%2Felement.h;h=fbd28f2d6639ae03a825fa715b8f74e62c91f28b;hb=42ec7c7c913713e48ff9c3c641db662e3522d3a8;hp=c0702acc1a03773f492301a7cb1496cf7c61d8f4;hpb=746e33bd6337b3abb7e2823f3b6afc83bf29b549;p=connman diff --git a/include/element.h b/include/element.h index c0702ac..fbd28f2 100644 --- a/include/element.h +++ b/include/element.h @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2008 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -31,6 +31,12 @@ extern "C" { #include +/** + * SECTION:element + * @title: Element premitives + * @short_description: Functions for handling elements + */ + enum connman_element_state { CONNMAN_ELEMENT_STATE_UNKNOWN = 0, CONNMAN_ELEMENT_STATE_CONNECT = 1, @@ -38,59 +44,72 @@ enum connman_element_state { CONNMAN_ELEMENT_STATE_CLOSED = 3, }; +enum connman_element_policy { + CONNMAN_ELEMENT_POLICY_UNKNOWN = 0, + CONNMAN_ELEMENT_POLICY_IGNORE = 1, + CONNMAN_ELEMENT_POLICY_AUTO = 2, + CONNMAN_ELEMENT_POLICY_ASK = 3, +}; + enum connman_element_type { CONNMAN_ELEMENT_TYPE_UNKNOWN = 0, CONNMAN_ELEMENT_TYPE_ROOT = 1, - CONNMAN_ELEMENT_TYPE_DEVICE = 2, - CONNMAN_ELEMENT_TYPE_NETWORK = 3, - CONNMAN_ELEMENT_TYPE_IPV4 = 4, - CONNMAN_ELEMENT_TYPE_IPV6 = 5, - CONNMAN_ELEMENT_TYPE_DHCP = 6, - CONNMAN_ELEMENT_TYPE_BOOTP = 7, - CONNMAN_ELEMENT_TYPE_ZEROCONF = 8, - CONNMAN_ELEMENT_TYPE_RESOLVER = 9, - - CONNMAN_ELEMENT_TYPE_INTERNET = 42, + CONNMAN_ELEMENT_TYPE_PROFILE = 2, + CONNMAN_ELEMENT_TYPE_DEVICE = 3, + CONNMAN_ELEMENT_TYPE_NETWORK = 4, + CONNMAN_ELEMENT_TYPE_SERVICE = 5, + CONNMAN_ELEMENT_TYPE_PPP = 6, + CONNMAN_ELEMENT_TYPE_IPV4 = 7, + CONNMAN_ELEMENT_TYPE_IPV6 = 8, + CONNMAN_ELEMENT_TYPE_DHCP = 9, + CONNMAN_ELEMENT_TYPE_BOOTP = 10, + CONNMAN_ELEMENT_TYPE_ZEROCONF = 11, + CONNMAN_ELEMENT_TYPE_CONNECTION = 42, + CONNMAN_ELEMENT_TYPE_VENDOR = 10000, }; enum connman_element_subtype { CONNMAN_ELEMENT_SUBTYPE_UNKNOWN = 0, - CONNMAN_ELEMENT_SUBTYPE_ETHERNET = 1, - CONNMAN_ELEMENT_SUBTYPE_WIFI = 2, - CONNMAN_ELEMENT_SUBTYPE_WIMAX = 3, - CONNMAN_ELEMENT_SUBTYPE_MODEM = 4, - CONNMAN_ELEMENT_SUBTYPE_BLUETOOTH = 5, + CONNMAN_ELEMENT_SUBTYPE_FAKE = 1, + CONNMAN_ELEMENT_SUBTYPE_ETHERNET = 3, + CONNMAN_ELEMENT_SUBTYPE_WIFI = 4, + CONNMAN_ELEMENT_SUBTYPE_WIMAX = 5, + CONNMAN_ELEMENT_SUBTYPE_CELLULAR = 6, + CONNMAN_ELEMENT_SUBTYPE_BLUETOOTH = 7, }; struct connman_driver; struct connman_element { gint refcount; - GStaticMutex mutex; + gint index; gchar *name; gchar *path; enum connman_element_type type; enum connman_element_subtype subtype; enum connman_element_state state; - gboolean connected; + enum connman_element_policy policy; + gboolean enabled; + gboolean remember; guint16 priority; + guint8 strength; + gchar *devpath; + gchar *devname; struct connman_element *parent; struct connman_driver *driver; void *driver_data; - GSList *properties; + void (*destruct) (struct connman_element *element); - struct { - int index; - short flags; - gchar *name; - } netdev; + union { + void *private; + struct connman_device *device; + struct connman_network *network; + }; - struct { - gchar *identifier; - } network; + GSList *properties; struct { gchar *address; @@ -100,21 +119,36 @@ struct connman_element { gchar *broadcast; gchar *nameserver; } ipv4; -}; -#define connman_element_lock(element) g_static_mutex_lock(&(element)->mutex) -#define connman_element_unlock(element) g_static_mutex_unlock(&(element)->mutex) + struct { + gchar *security; + gchar *passphrase; + } wifi; +}; -extern struct connman_element *connman_element_create(void); +extern struct connman_element *connman_element_create(const char *name); extern struct connman_element *connman_element_ref(struct connman_element *element); extern void connman_element_unref(struct connman_element *element); extern int connman_element_add_static_property(struct connman_element *element, const char *name, int type, const void *value); +extern int connman_element_set_static_property(struct connman_element *element, + const char *name, int type, const void *value); +extern int connman_element_add_static_array_property(struct connman_element *element, + const char *name, int type, const void *value, int len); +extern int connman_element_define_properties(struct connman_element *element, ...); +extern int connman_element_create_property(struct connman_element *element, + const char *name, int type); extern int connman_element_set_property(struct connman_element *element, - enum connman_property_type type, const void *value); + enum connman_property_id id, const void *value); extern int connman_element_get_value(struct connman_element *element, - enum connman_property_type type, void *value); + enum connman_property_id id, void *value); +extern gboolean connman_element_get_static_property(struct connman_element *element, + const char *name, void *value); +extern gboolean connman_element_get_static_array_property(struct connman_element *element, + const char *name, void *value, int *len); +extern gboolean connman_element_match_static_property(struct connman_element *element, + const char *name, const void *value); extern int connman_element_register(struct connman_element *element, struct connman_element *parent); @@ -122,6 +156,11 @@ extern void connman_element_unregister(struct connman_element *element); extern void connman_element_unregister_children(struct connman_element *element); extern void connman_element_update(struct connman_element *element); +extern int connman_element_set_enabled(struct connman_element *element, + gboolean enabled); +extern int connman_element_set_scanning(struct connman_element *element, + gboolean scanning); + static inline void *connman_element_get_data(struct connman_element *element) { return element->driver_data;