Line 27... |
Line 27... |
#define _LIBC
|
#define _LIBC
|
#endif
|
#endif
|
#include "rtos.h"
|
#include "rtos.h"
|
#include "tcpip.h"
|
#include "tcpip.h"
|
|
|
#ifdef WIN32
|
|
#undef OS_CriticalBegin
|
|
#undef OS_CriticalEnd
|
|
#define OS_CriticalBegin() 0
|
|
#define OS_CriticalEnd(A)
|
|
#define OS_ThreadCreate(A,B,C,D,E) 0
|
|
#define OS_ThreadSleep(A)
|
|
#define OS_ThreadTime() 0
|
|
#define OS_ThreadSelf() 0
|
|
#define OS_MutexCreate(A) NULL
|
|
#define OS_MutexPend(A)
|
|
#define OS_MutexPost(A)
|
|
#define OS_MQueueCreate(A,B,C) 0
|
|
#define OS_MQueueSend(A,B) 0
|
|
#define OS_MQueueGet(A,B,C) 0
|
|
#define UartPacketConfig(A,B,C)
|
|
#define UartPacketSend(A,B)
|
|
#define UartPrintf printf
|
|
#define UartPrintfCritical printf
|
|
#define Led(A)
|
|
#define OS_Job(A,B,C,D) A(B,C,D)
|
|
#endif
|
|
|
|
//ETHER FIELD OFFSET LENGTH VALUE
|
//ETHER FIELD OFFSET LENGTH VALUE
|
#define ETHERNET_DEST 0 //6
|
#define ETHERNET_DEST 0 //6
|
#define ETHERNET_SOURCE 6 //6
|
#define ETHERNET_SOURCE 6 //6
|
#define ETHERNET_FRAME_TYPE 12 //2 IP=0x0800; ARP=0x0806
|
#define ETHERNET_FRAME_TYPE 12 //2 IP=0x0800; ARP=0x0806
|
Line 1121... |
Line 1099... |
frame->next = FrameFreeHead;
|
frame->next = FrameFreeHead;
|
frame->prev = NULL;
|
frame->prev = NULL;
|
FrameFreeHead = frame;
|
FrameFreeHead = frame;
|
}
|
}
|
FrameFreeCount = FRAME_COUNT;
|
FrameFreeCount = FRAME_COUNT;
|
|
#ifndef WIN32
|
UartPacketConfig(MyPacketGet, PACKET_SIZE, IPMQueue);
|
UartPacketConfig(MyPacketGet, PACKET_SIZE, IPMQueue);
|
if(frameSendFunction == NULL)
|
if(frameSendFunction == NULL)
|
IPThread = OS_ThreadCreate("TCP/IP", IPMainThread, NULL, 240, 6000);
|
IPThread = OS_ThreadCreate("TCP/IP", IPMainThread, NULL, 240, 6000);
|
|
#endif
|
IPDhcp(NULL, 360, 1); //Send DHCP request
|
IPDhcp(NULL, 360, 1); //Send DHCP request
|
}
|
}
|
|
|
|
|
//To open a socket for listen set ipAddress to 0
|
//To open a socket for listen set ipAddress to 0
|
Line 1288... |
Line 1268... |
while(length)
|
while(length)
|
{
|
{
|
//Rate limit output
|
//Rate limit output
|
if(socket->seq - socket->seqReceived >= 5120)
|
if(socket->seq - socket->seqReceived >= 5120)
|
{
|
{
|
|
//printf("l(%d,%d,%d) ", socket->seq - socket->seqReceived, socket->seq, socket->seqReceived);
|
if(self == IPThread || ++tries > 200)
|
if(self == IPThread || ++tries > 200)
|
break;
|
break;
|
else
|
else
|
{
|
{
|
OS_ThreadSleep(1);
|
OS_ThreadSleep(1);
|
Line 1303... |
Line 1284... |
{
|
{
|
socket->frameSend = IPFrameGet(FRAME_COUNT_SEND);
|
socket->frameSend = IPFrameGet(FRAME_COUNT_SEND);
|
socket->sendOffset = 0;
|
socket->sendOffset = 0;
|
if(socket->frameSend == NULL)
|
if(socket->frameSend == NULL)
|
{
|
{
|
|
//printf("L");
|
if(self == IPThread || ++tries > 200)
|
if(self == IPThread || ++tries > 200)
|
break;
|
break;
|
else
|
else
|
OS_ThreadSleep(1);
|
OS_ThreadSleep(1);
|
}
|
}
|
Line 1506... |
Line 1488... |
//Retransmit timeout packets
|
//Retransmit timeout packets
|
for(frame = FrameResendHead; frame; )
|
for(frame = FrameResendHead; frame; )
|
{
|
{
|
frame2 = frame;
|
frame2 = frame;
|
frame = frame->next;
|
frame = frame->next;
|
frame2->timeout -= ticks - ticksPrev2;
|
frame2->timeout = (short)(frame2->timeout - (ticks - ticksPrev2));
|
if(--frame2->timeout <= 0)
|
if(--frame2->timeout <= 0)
|
{
|
{
|
if(IPVerbose)
|
if(IPVerbose)
|
printf("r");
|
printf("r");
|
FrameRemove(&FrameResendHead, &FrameResendTail, frame2);
|
FrameRemove(&FrameResendHead, &FrameResendTail, frame2);
|