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; }
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; }