Add error codes for failing connection attempts
[platform/upstream/connman.git] / src / element.c
index 62f797e..433f64b 100644 (file)
@@ -274,6 +274,7 @@ struct connman_service *__connman_element_get_service(struct connman_element *el
        case CONNMAN_DEVICE_TYPE_VENDOR:
        case CONNMAN_DEVICE_TYPE_BLUETOOTH:
        case CONNMAN_DEVICE_TYPE_GPS:
+       case CONNMAN_DEVICE_TYPE_MBM:
        case CONNMAN_DEVICE_TYPE_HSO:
        case CONNMAN_DEVICE_TYPE_NOZOMI:
        case CONNMAN_DEVICE_TYPE_HUAWEI:
@@ -1327,6 +1328,21 @@ int connman_element_set_enabled(struct connman_element *element,
        return 0;
 }
 
+static enum connman_service_error convert_error(enum connman_element_error error)
+{
+       switch (error) {
+       case CONNMAN_ELEMENT_ERROR_UNKNOWN:
+       case CONNMAN_ELEMENT_ERROR_FAILED:
+               break;
+       case CONNMAN_ELEMENT_ERROR_DHCP_FAILED:
+               return CONNMAN_SERVICE_ERROR_DHCP_FAILED;
+       case CONNMAN_ELEMENT_ERROR_CONNECT_FAILED:
+               return CONNMAN_SERVICE_ERROR_CONNECT_FAILED;
+       }
+
+       return CONNMAN_SERVICE_ERROR_UNKNOWN;
+}
+
 /**
  * connman_element_set_error:
  * @element: element structure
@@ -1351,8 +1367,7 @@ void connman_element_set_error(struct connman_element *element,
                element->driver->change(element);
 
        service = __connman_element_get_service(element);
-       __connman_service_indicate_state(service,
-                                       CONNMAN_SERVICE_STATE_FAILURE);
+       __connman_service_indicate_error(service, convert_error(error));
 }
 
 int __connman_element_init(DBusConnection *conn, const char *device,
@@ -1413,7 +1428,6 @@ void __connman_element_start(void)
 
        __connman_connection_init();
        __connman_ipv4_init();
-       __connman_detect_init();
        __connman_rfkill_init();
 }
 
@@ -1422,7 +1436,6 @@ void __connman_element_stop(void)
        DBG("");
 
        __connman_rfkill_cleanup();
-       __connman_detect_cleanup();
        __connman_ipv4_cleanup();
        __connman_connection_cleanup();
 }