Beispiel #1
0
static bool test_rawdata_transfer(void)
{
	int ret;
	char http_req[] = "GET /404.file HTTP/1.0\r\nHost: " SERVER_HOST "\r\n\r\n";
	char http_resp_expected[] = "HTTP/1.0 404 Not Found";
	char http_resp[1024 * 100];
	size_t resp_size = sizeof(http_resp);

	ASSERT(wait_gsm_status(1), "wait_gsm_status(%d) failed", 1);

	ret = gsm_activate_context(f_gsm);
	ASSERT(ret == 0, "gsm_activate_context() = %d", ret);

	ret = at_cmd(f_gsm, "AT#SKTD=0," SERVER_PORT ",\"" SERVER_HOST "\",0,0");
	ASSERT(ret == 0, "at_cmd(AT#SKTD) = %d\n", ret);

	ret = at_verify_response(f_gsm, "\r\nCONNECT\r\n", 60 * HZ);
	ASSERT(ret == 0, "at_verify_response(CONNECT) = %d\n", ret);

	ret = fwrite(http_req, 1, sizeof(http_req) - 1, f_gsm);
	ASSERT(ret == sizeof(http_req) - 1, "fwrite(HTTP) = %d\n", ret);

	ret = at_recv(http_resp, &resp_size);
	ASSERT((ret == 0 || ret == -ETIMEOUT) && resp_size > 100,
	    "at_recv(http_resp) = %d\n", ret);

	http_resp[resp_size] = '\0';
	ret = memcmp(http_resp, http_resp_expected, strlen(http_resp_expected));
	ASSERT(ret == 0, "HTTP response mismatch, buf = %s", http_resp);

	printf("%s: HTTP response from %s OK\n", __func__, SERVER_HOST);

	return true;
}
static int at_cmd(FILE *fp, char *buf, const char *fmt, ...)
{
	va_list ap;

	va_start(ap, fmt);
	at_send(fp, fmt, ap);
	va_end(ap);

	return at_recv(fp, buf);
}