#define offsetof(s, m) ((int)(&((s*)0)->m))
#endif
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
#define SETEVENT(event) PA_SetEvent(event)
-#elif defined(__LINUX__) || defined(__ANDROID__)
+#elif defined(__linux__)
#define SETEVENT(event) pthread_cond_signal(&event)
#endif
#define SAFE_FREE(p) if(p) { free(p); p = NULL; }
{
char sf[16];
#if defined(ARM_UCOS_LWIP)
-#elif defined(WIN32)
+#elif defined(_WIN32)
SYSTEMTIME t;
GetLocalTime(&t);
sprintf(sf, "%.06f", t.wMilliseconds/1000.0);
PRINTF("]");
}
PRINTF("\n");
-#if defined(WIN32)
+#if defined(_WIN32)
fflush(stdout);
#endif
}
PA_MutexInit(sock->mutex_r);
PA_MutexInit(sock->mutex_w);
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
PA_EventInit(sock->event_r);
PA_EventInit(sock->event_w);
#else
PA_MutexUninit(s->mutex_r);
PA_MutexUninit(s->mutex_w);
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
PA_EventUninit(s->event_r);
PA_EventUninit(s->event_w);
#else
INLINE BOOL _isPacketValid(struct rudp_pkt *pkt)
{
-#ifdef _DEBUG
- return (calc_crc32(0, (char*)&pkt->hdr, offsetof(struct rudp_hdr, crc32)) == pkt->hdr.crc32)?TRUE:(printf("Invalid packet!\n"),FALSE);
-#else
- return calc_crc32(0, (char*)&pkt->hdr, offsetof(struct rudp_hdr, crc32)) == pkt->hdr.crc32;
-#endif
+
}
int _DispatchPacket(struct rudp_socket *s, struct rudp_pkt *pkt, const struct sockaddr *from, int from_len)
if(pkt)
{
len = PA_RecvFrom(s->udp_sock, &pkt->hdr, MAX_PACKET_SIZE, 0, &from, &from_len);
- if(len < 0 || len < sizeof(struct rudp_hdr) || pkt->hdr.flags.rudp != RUDP_HEADER_TAG ||
- !_isPacketValid(pkt))
+ if(len < 0 || len < sizeof(struct rudp_hdr) || pkt->hdr.flags.rudp != RUDP_HEADER_TAG || !(
+#ifdef _DEBUG
+ (calc_crc32(0, (char*)&pkt->hdr, offsetof(struct rudp_hdr, crc32)) == pkt->hdr.crc32)?TRUE:(printf("Invalid packet!\n"),FALSE)))
+#else
+ calc_crc32(0, (char*)&pkt->hdr, offsetof(struct rudp_hdr, crc32)) == pkt->hdr.crc32))
+#endif
{
if(len < 0)
{
#ifdef _DEBUG
-#if defined(WIN32)
+#if defined(_WIN32)
int err = WSAGetLastError();
if(err != WSAEWOULDBLOCK)
dbg_msg("recvfrom error: %d\n", err);
INIT_LIST_HEAD(&s->listen_queue);
s->state = RS_LISTEN;
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
{
int opt;
opt = 100*1024;//1500*s->pcb->channel[0].sbuf.rwin_size/2;
*accepted = NULL;
wait:
PA_MutexLock(s->mutex_r);
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
if(list_empty(&s->listen_queue))
{
PA_MutexUnlock(s->mutex_r);
if(s->flags & RF_NBLK)
return ERUDP_AGAIN;
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
PA_EventWait(s->event_w);
#else
PA_MutexLock(s->mutex_w);
}
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
if(ps->n_pkt >= ps->max_pkts && s->state != RS_DEAD)
{
if((flags & RUDPMSG_DONTWAIT) || (s->flags & RF_NBLK))
}
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
if(ps->n_pkt >= ps->max_pkts && s->state != RS_DEAD)
{
if((flags & RUDPMSG_DONTWAIT) || (s->flags & RF_NBLK))
* If the sending-queue is full, wait on this queue.
* The actual sending is done in the service thread.
*/
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
while(ps->n_pkt >= ps->max_pkts && s->state != RS_DEAD)
{
if((flags & RUDPMSG_DONTWAIT) || (s->flags & RF_NBLK))
* If the sending-queue is full, wait on this queue.
* The actual sending is done in the service thread.
*/
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
while(ps->n_pkt >= ps->max_pkts && s->state != RS_DEAD)
{
if((flags & RUDPMSG_DONTWAIT) || (s->flags & RF_NBLK))
}
wait_data:
no_data=1;
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
for(i=0; i<MAX_PHY_CHANNELS; i++)
{
prb = &pcb->channel[i].rbuf;
prb = &pcb->channel[PHY_CHN(*chno)].rbuf;
wait_data:
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
if(!prb->pkt_q[prb->head])
{
PA_MutexUnlock(s->mutex_r);
int RUDPSelectSock(RUDPSOCKET sock, int chno, int flag, const struct timeval *timeout)
{
struct rudp_socket *s;
-#if defined(__LINUX__) || defined(__ANDROID__)
+#ifdef __linux__
struct timespec ts;
#endif
s = (struct rudp_socket*)sock;
if(s->tag != RUDP_SOCKET_TAG) return ERUDP_NOT_SOCKET;
-#if defined(__LINUX__) || defined(__ANDROID__)
+#ifdef __linux__
if(timeout)
{
clock_gettime(CLOCK_REALTIME, &ts);
if(no_data)
{
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
PA_MutexUnlock(s->mutex_r);
if(timeout)
no_data = !PA_EventWaitTimed(s->event_r, timeout->tv_sec*1000+timeout->tv_usec/1000);
ps = &s->pcb->channel[chno].sbuf;
if(ps->n_pkt >= ps->max_pkts && s->state != RS_DEAD)
{
-#if defined(WIN32) || defined(ARM_UCOS_LWIP)
+#if defined(_WIN32) || defined(ARM_UCOS_LWIP)
PA_MutexUnlock(s->mutex_w);
if(timeout)
writable = PA_EventWaitTimed(s->event_w, timeout->tv_sec*1000+timeout->tv_usec/1000);