Example #1
0
static void notify_callback(GAtResult *result, gpointer user_data)
{
	GAtResultIter iter;

	g_at_result_iter_init(&iter, result);

	if (g_at_result_iter_next(&iter, NULL) == TRUE)
		printf("%s\n", g_at_result_iter_raw_line(&iter));

	printf("==> %s\n", g_at_result_final_response(result));
}
Example #2
0
static void generic_callback(gboolean ok, GAtResult *result,
						gpointer user_data)
{
	GAtResultIter iter;

	g_at_result_iter_init(&iter, result);

	if (g_at_result_iter_next(&iter, NULL) == TRUE)
		printf("%s\n", g_at_result_iter_raw_line(&iter));

	printf("==> %s (%d)\n", g_at_result_final_response(result), ok);
}
Example #3
0
static void dial_cb(GAtServer *server, GAtServerRequestType type,
			GAtResult *cmd, gpointer user)
{
	GAtResultIter iter;
	const char *dial_str;
	char c;

	if (type != G_AT_SERVER_REQUEST_TYPE_SET)
		goto error;

	g_at_result_iter_init(&iter, cmd);
	g_at_result_iter_next(&iter, "");

	dial_str = g_at_result_iter_raw_line(&iter);
	if (dial_str == NULL)
		goto error;

	g_print("dial call %s\n", dial_str);

	c = *dial_str;
	if (c == '*' || c == '#' || c == 'T' || c == 't') {
		GAtIO *io = g_at_server_get_io(server);

		if (setup_ppp(server) == FALSE)
			goto error;

		g_at_server_send_intermediate(server, "CONNECT");
		data_mode = TRUE;
		g_at_io_set_write_done(io, open_ppp, server);
	}

	return;

error:
	g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
}
Example #4
0
static void ste_eppsd_up_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
	struct cb_data *cbd = user_data;
	ofono_gprs_context_up_cb_t cb = cbd->cb;
	struct ofono_gprs_context *gc = cbd->user;
	struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc);
	struct conn_info *conn = NULL;
	GAtResultIter iter;
	GSList *l;
	int i;
	gsize length;
	char *res_string;
	const char *dns[MAX_DNS + 1];
	struct eppsd_response rsp;
	GMarkupParseContext *context = NULL;

	l = g_slist_find_custom(g_caif_devices,
				GUINT_TO_POINTER(gcd->active_context),
				conn_compare_by_cid);

	if (!l) {
		DBG("Did not find data (device and channel id)"
					"for connection with cid; %d",
					gcd->active_context);
		goto error;
	}

	conn = l->data;

	if (!ok)
		goto error;

	rsp.current = NULL;
	context = g_markup_parse_context_new(&parser, 0, &rsp, NULL);
	memset(&rsp, 0, sizeof(rsp));

	g_at_result_iter_init(&iter, result);

	for (i = 0; i < g_at_result_num_response_lines(result); i++) {
		g_at_result_iter_next(&iter, NULL);
		res_string = strdup(g_at_result_iter_raw_line(&iter));
		length = strlen(res_string);

		if (!g_markup_parse_context_parse(context, res_string,
							length, NULL))
			goto error;
	}

	if (!g_markup_parse_context_end_parse(context, NULL))
		goto error;

	g_markup_parse_context_free(context);

	dns[0] = rsp.dns_server1;
	dns[1] = rsp.dns_server2;
	dns[2] = NULL;

	sprintf(conn->interface, "caif%u", conn->device);

	if (!caif_if_create(conn->interface, conn->channel_id)) {
		ofono_error("Failed to create caif interface %s.",
				conn->interface);
		CALLBACK_WITH_SUCCESS(cb, NULL, FALSE, rsp.ip_address,
				rsp.subnet_mask, rsp.default_gateway,
				dns, cbd->data);
	} else {
		CALLBACK_WITH_SUCCESS(cb, conn->interface,
				FALSE, rsp.ip_address, rsp.subnet_mask,
				rsp.default_gateway, dns, cbd->data);
	}

	return;

error:
	DBG("ste_eppsd_up_cb error");

	if (context)
		g_markup_parse_context_free(context);

	if (conn)
		conn->cid = 0;

	CALLBACK_WITH_FAILURE(cb, NULL, 0, NULL, NULL, NULL, NULL, cbd->data);
}