Пример #1
0
int rtdal_itfspscq_recv(r_itf_t obj, void* buffer, int len) {

	RTDAL_ASSERT_PARAM(buffer);
	RTDAL_ASSERT_PARAM(len>=0);

	int n, plen;
	void *ptr;

	if ((n = rtdal_itfspscq_pop(obj, &ptr, &plen, rtdal_time_slot())) != 1) {
		return n;
	}
	if (plen > len) {
		plen = len;
	}

	hdebug("obj=0x%x, rcv pkt=0x%x\n",obj,ptr);
	memcpy(buffer, ptr, (size_t) plen);

	if ((n = rtdal_itfspscq_release(obj)) == 1) {
		return n;
	}

	hdebug("release pkt 0x%x\n",ptr);

	return plen;
}
Пример #2
0
int rtdal_itfspscq_recv(r_itf_t obj, void* buffer, int len, int tstamp) {
	RTDAL_ASSERT_PARAM(buffer);
	RTDAL_ASSERT_PARAM(len>=0);

	int n, plen;
	void *ptr=NULL;

	do {
		if ((n = rtdal_itfspscq_pop(obj, &ptr, &plen, tstamp)) < 1) {
			return n;
		}
	} while (n == 2);

	if (plen > len) {
		plen = len;
	}

	memcpy(buffer, ptr, (size_t) plen);

	if ((n = rtdal_itfspscq_release(obj,NULL,0)) != 1) {
		printf("Caution packet could not be released (%d)\n",n);
	}
	return plen;
}