static void pan_create_nap(struct bluetooth_pan *pan) { struct connman_device *device; const char* role; const char *adapter; role = proxy_get_role(pan->btdevice_proxy); if (!role) { pan_remove_nap(pan); return; } adapter = proxy_get_string(pan->btdevice_proxy, "Adapter"); if (!adapter) return; device = g_hash_table_lookup(devices, adapter); if (!device || !connman_device_get_powered(device)) return; if (!pan->network) { const char *address; char ident[BLUETOOTH_ADDR_LEN * 2 + 1]; const char *name, *path; address = proxy_get_string(pan->btdevice_proxy, "Address"); if (!address) { connman_warn("Bluetooth device address missing"); return; } address2ident(address, ident); pan->network = connman_network_create(ident, CONNMAN_NETWORK_TYPE_BLUETOOTH_PAN); name = proxy_get_string(pan->btdevice_proxy, "Alias"); path = g_dbus_proxy_get_path(pan->btnetwork_proxy); DBG("network %p %s %s", pan->network, path, name); if (!pan->network) { connman_warn("Bluetooth network %s creation failed", path); return; } connman_network_set_data(pan->network, pan); connman_network_set_name(pan->network, name); connman_network_set_group(pan->network, ident); } pan->pan_role = role; connman_device_add_network(device, pan->network); if (pan_connect(pan, NULL)) DBG("network %p already connected", pan->network); }
static void bluetooth_pan_remove(struct connman_network *network) { struct bluetooth_pan *pan = connman_network_get_data(network); DBG("network %p pan %p", network, pan); connman_network_set_data(network, NULL); if (pan) pan_remove_nap(pan); }
static int network_probe(struct connman_network *network) { struct connman_device *device = connman_network_get_device(network); struct mbm_data *data; _DBG_MBM("network %p", network); data = connman_device_get_data(device); connman_network_set_data(network, data); g_at_chat_send(data->chat, "AT+CGDCONT=1,\"IP\",\"internet.com\"", NULL, generic_callback, NULL, NULL); g_at_chat_send(data->chat, "AT*ENAP?", NULL, generic_callback, NULL, NULL); return 0; }
static void pan_remove_nap(struct bluetooth_pan *pan) { struct connman_device *device; struct connman_network *network = pan->network; DBG("network %p pan %p", pan->network, pan); if (!network) return; pan->network = NULL; connman_network_set_data(network, NULL); device = connman_network_get_device(network); if (device) connman_device_remove_network(device, network); connman_network_unref(network); }
static void add_network(struct mk3_data *mk3) { struct connman_network *network = NULL; g_return_if_fail(mk3); DBG("data %p", mk3); if(mk3->network != NULL) { DBG("network %p already exists.", mk3->network); return; } network = connman_network_create(mk3->devname, CONNMAN_NETWORK_TYPE_MK3); if(network == NULL) { connman_error("Network could not be created."); return; } DBG("network %p", mk3->network); connman_network_set_index(network, mk3->index); connman_network_set_name(network, mk3->name); connman_network_set_data(network, mk3); connman_network_set_strength(network, mk3->strength); connman_network_set_group(network, mk3->group); if(connman_device_add_network(mk3->device, network) < 0) { connman_network_unref(network); network = NULL; return; } mk3->network = network; }
/** * @brief Add the network associated to its qmi device */ static void add_network(struct qmi_data *qmi) { struct connman_network *network = NULL; int index; struct connman_service *service = NULL; g_return_if_fail(qmi); DBG("data %p", qmi); if(qmi->network != NULL) { DBG("network %p already exists.", qmi->network); return; } /* Create an new qmi network */ network = connman_network_create(qmi->devpath, CONNMAN_NETWORK_TYPE_QMI); if(network == NULL) { connman_error("Network could not be created."); return; } DBG("network %p", qmi->network); /* Set network properties */ index = connman_device_get_index(qmi->device); connman_network_set_index(network, index); connman_network_set_data(network, qmi); connman_network_set_strength(network, qmi->strength); connman_network_set_group(network, qmi->group); if(qmi->provider) g_free(qmi->provider); qmi->provider = g_strdup("no-name"); connman_network_set_name(network, qmi->provider); /* Add the created network */ if (connman_device_add_network(qmi->device, network) < 0) { connman_error("Network not added to the device."); connman_network_unref(network); network = NULL; return; } qmi->network = network; /* Get configured values from the created *.config file */ service = connman_service_lookup_from_network(network); DBG("service %p", service); if(service == NULL) { connman_error("No service available"); return; } service = connman_service_ref(service); if(qmi->apn) g_free(qmi->apn); qmi->apn = g_strdup(connman_service_get_string(service, "APN")); if(qmi->passphrase) g_free(qmi->passphrase); qmi->passphrase = g_strdup(connman_service_get_string(service, "Passphrase")); if(qmi->username) g_free(qmi->username); qmi->username = g_strdup(connman_service_get_string(service, "Username")); if(qmi->provider) g_free(qmi->provider); qmi->provider = g_strdup(connman_service_get_string(service, "Provider")); if(qmi->provider == NULL) qmi->provider = g_strdup("no-name"); connman_network_set_name(network, qmi->provider); connman_network_update(qmi->network); DBG("network %p IMSI %s APN %s PW %s Username %s", qmi->network, qmi->imsi, qmi->apn, qmi->passphrase, qmi->username); connman_service_unref(service); if((qmi->imsi == NULL) || (qmi->apn == NULL) || (qmi->passphrase == NULL)) { connman_error("There are not all required parameters available"); return; } }
static void network_remove(struct connman_network *network) { _DBG_MBM("network %p", network); connman_network_set_data(network, NULL); }