int priority;
int (*probe) (struct connman_element *element);
void (*remove) (struct connman_element *element);
- int (*update) (struct connman_element *element);
+ void (*update) (struct connman_element *element);
+ void (*change) (struct connman_element *element);
};
extern int connman_driver_register(struct connman_driver *driver);
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_UNKNOWN = 0,
+ CONNMAN_ELEMENT_ERROR_FAILED = 1,
+ CONNMAN_ELEMENT_ERROR_DHCP_FAILED = 2,
+};
+
struct connman_driver;
struct connman_element {
gchar *name;
gchar *path;
enum connman_element_type type;
+ enum connman_element_state state;
+ enum connman_element_error error;
gboolean enabled;
gboolean configuring;
gchar *devname;
extern int connman_element_set_enabled(struct connman_element *element,
gboolean enabled);
+extern 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)
{
element->name = NULL;
element->type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
+ element->state = CONNMAN_ELEMENT_STATE_UNKNOWN;
+ element->error = CONNMAN_ELEMENT_ERROR_UNKNOWN;
element->index = -1;
element->enabled = FALSE;
return 0;
}
+/**
+ * connman_element_set_error:
+ * @element: element structure
+ * @error: error identifier
+ *
+ * Set error state and specific error identifier
+ */
+void connman_element_set_error(struct connman_element *element,
+ enum connman_element_error error)
+{
+ DBG("element %p error %d", element, error);
+
+ if (element->type == CONNMAN_ELEMENT_TYPE_ROOT)
+ return;
+
+ element->state = CONNMAN_ELEMENT_STATE_ERROR;
+ element->error = error;
+
+ if (element->driver && element->driver->change)
+ element->driver->change(element);
+}
+
int __connman_element_init(DBusConnection *conn, const char *device,
const char *nodevice)
{