static DBusMessage *set_property_active(struct dundee_device *device, DBusMessage *msg, DBusMessageIter *var) { ofono_bool_t active; DBG("%p path %s", device, device->path); if (dbus_message_iter_get_arg_type(var) != DBUS_TYPE_BOOLEAN) return __dundee_error_invalid_args(msg); if (device->pending) return __dundee_error_in_progress(msg); dbus_message_iter_get_basic(var, &active); device->pending = dbus_message_ref(msg); if (active) device->driver->connect(device, connect_callback, device); else if (device->ppp) g_at_ppp_shutdown(device->ppp); return NULL; }
static void cgev_notify(GAtResult *result, gpointer user_data) { struct ofono_gprs_context *gc = user_data; struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc); const char *event; int cid; GAtResultIter iter; g_at_result_iter_init(&iter, result); if (!g_at_result_iter_next(&iter, "+CGEV:")) return; if (!g_at_result_iter_next_unquoted_string(&iter, &event)) return; if (g_str_has_prefix(event, "NW DEACT") == FALSE) return; if (!g_at_result_iter_skip_next(&iter)) return; if (!g_at_result_iter_next_number(&iter, &cid)) return; DBG("cid %d", cid); if ((unsigned int) cid != gcd->active_context) return; if (gcd->state != STATE_IDLE && gcd->ppp) g_at_ppp_shutdown(gcd->ppp); }
static void at_gprs_detach_shutdown(struct ofono_gprs_context *gc, unsigned int cid) { struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc); DBG("cid %u", cid); g_at_ppp_shutdown(gcd->ppp); }
static gboolean signal_cb(GIOChannel *channel, GIOCondition cond, gpointer data) { static int terminated = 0; int signal_fd = GPOINTER_TO_INT(data); struct signalfd_siginfo si; ssize_t res; if (cond & (G_IO_NVAL | G_IO_ERR)) return FALSE; res = read(signal_fd, &si, sizeof(si)); if (res != sizeof(si)) return FALSE; switch (si.ssi_signo) { case SIGINT: case SIGTERM: if (terminated == 0) { g_timeout_add_seconds(10, quit_eventloop, NULL); if (ppp == NULL) { char buf[64]; sprintf(buf, "AT+CFUN=%u", option_offmode); g_at_chat_send(control, buf, none_prefix, power_down, NULL, NULL); } else g_at_ppp_shutdown(ppp); } terminated++; break; case SIGUSR1: if (ppp == NULL) break; g_at_ppp_set_suspend_function(ppp, ppp_suspend_ato0, NULL); g_at_ppp_suspend(ppp); break; case SIGUSR2: if (ppp == NULL) break; g_at_ppp_set_suspend_function(ppp, ppp_suspend_ath0, NULL); g_at_ppp_suspend(ppp); break; default: break; } return TRUE; }
static void at_gprs_deactivate_primary(struct ofono_gprs_context *gc, unsigned int id, ofono_gprs_context_cb_t cb, void *data) { struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc); DBG(""); gcd->state = STATE_DISABLING; gcd->down_cb = cb; gcd->cb_data = data; g_at_ppp_shutdown(gcd->ppp); }
static void cdma_connman_deactivate(struct ofono_cdma_connman *cm, ofono_cdma_connman_cb_t cb, void *data) { struct connman_data *cd = ofono_cdma_connman_get_data(cm); DBG(""); cd->state = STATE_DISABLING; cd->down_cb = cb; cd->cb_data = data; g_at_ppp_shutdown(cd->ppp); }