blob: a930f25be8b87b3e24ddd1066dc7e3b632677bae [file] [log] [blame]
/*
*
* Connection Manager
*
* 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
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef __CONNMAN_ELEMENT_H
#define __CONNMAN_ELEMENT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <errno.h>
#include <glib.h>
#include <connman/property.h>
#include <connman/types.h>
#include <connman/ipconfig.h>
/**
* SECTION:element
* @title: Element primitives
* @short_description: Functions for handling elements
*/
enum connman_element_type {
CONNMAN_ELEMENT_TYPE_UNKNOWN = 0,
CONNMAN_ELEMENT_TYPE_ROOT = 1,
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_PROVIDER = 30,
CONNMAN_ELEMENT_TYPE_CONNECTION = 42,
CONNMAN_ELEMENT_TYPE_VENDOR = 10000,
};
enum connman_element_state {
CONNMAN_ELEMENT_STATE_UNKNOWN = 0,
CONNMAN_ELEMENT_STATE_ERROR = 1,
CONNMAN_ELEMENT_STATE_IDLE = 2,
CONNMAN_ELEMENT_STATE_DONE = 3,
};
enum connman_element_error {
CONNMAN_ELEMENT_ERROR_NO_ERROR = 0,
CONNMAN_ELEMENT_ERROR_OUT_OF_RANGE = 1,
CONNMAN_ELEMENT_ERROR_PIN_MISSING = 2,
CONNMAN_ELEMENT_ERROR_DHCP_FAILED = 3,
CONNMAN_ELEMENT_ERROR_CONNECT_FAILED = 4,
CONNMAN_ELEMENT_ERROR_BAD_PASSPHRASE = 5,
CONNMAN_ELEMENT_ERROR_BAD_WEPKEY = 6,
CONNMAN_ELEMENT_ERROR_ACTIVATION_FAILED = 7,
CONNMAN_ELEMENT_ERROR_NEED_EVDO = 8,
CONNMAN_ELEMENT_ERROR_NEED_HOME_NETWORK = 9,
CONNMAN_ELEMENT_ERROR_OTASP_FAILED = 10,
CONNMAN_ELEMENT_ERROR_AAA_FAILED = 11,
CONNMAN_ELEMENT_ERROR_PIN_REQUIRED = 12,
CONNMAN_ELEMENT_ERROR_INCORRECT_PIN = 13,
CONNMAN_ELEMENT_ERROR_PIN_BLOCKED = 14,
CONNMAN_ELEMENT_ERROR_INTERNAL = 15,
};
struct connman_driver;
struct connman_element {
gint refcount;
gint index;
gchar *name;
gchar *path;
enum connman_element_type type;
enum connman_element_state state;
enum connman_element_error error;
gboolean enabled;
gchar *devname;
struct connman_element *parent;
struct connman_driver *driver;
void *driver_data;
void (*destruct) (struct connman_element *element);
union {
void *private;
struct connman_device *device;
struct connman_network *network;
};
GHashTable *properties;
};
struct connman_element *connman_element_create(const char *name);
struct connman_element *connman_element_ref(struct connman_element *element);
void connman_element_unref(struct connman_element *element);
gboolean connman_element_clear_property(struct connman_element *element,
const char *key);
int connman_element_get_value(struct connman_element *element,
enum connman_property_id id, void *value);
int connman_element_set_string(struct connman_element *element,
const char *key, const char *value);
const char *connman_element_get_string(struct connman_element *element,
const char *key);
int connman_element_set_uint8(struct connman_element *element,
const char *key, connman_uint8_t value);
connman_uint8_t connman_element_get_uint8(struct connman_element *element,
const char *key);
int connman_element_set_blob(struct connman_element *element,
const char *key, const void *data, unsigned int size);
const void *connman_element_get_blob(struct connman_element *element,
const char *key, unsigned int *size);
int connman_element_register(struct connman_element *element,
struct connman_element *parent);
void connman_element_unregister(struct connman_element *element);
void connman_element_unregister_children(struct connman_element *element);
void connman_element_update(struct connman_element *element);
int connman_element_set_enabled(struct connman_element *element,
gboolean enabled);
void connman_element_set_error(struct connman_element *element,
enum connman_element_error error);
static inline void *connman_element_get_data(struct connman_element *element)
{
return element->driver_data;
}
static inline void connman_element_set_data(struct connman_element *element,
void *data)
{
element->driver_data = data;
}
#ifdef __cplusplus
}
#endif
#endif /* __CONNMAN_ELEMENT_H */