📄 myapp.c
字号:
#include "..\uip.h" //LEON.Z.
#include "myapp.h"
#include <serial.h>
#include <LCD\LCD.h>
#include "c51iic.h"
#include <R8051.H>
//sbit LED4=P3^3;
sbit DebugPin=P1^3;
#define NULL (void *)0
#ifdef DEBUG
#include <stdio.h>
#define PRINT(x) printf("%s", x)
#define PRINTLN(x) printf("%s\n", x)
#else /* DEBUG */
#define PRINT(x)
#define PRINTLN(x)
#endif /* DEBUG */
struct myapp_state *hs;
//#define APPport 1180
u16_t idata APPport= 1180;
/*-----------------------------------------------------------------------------------*/
void
myapp_init(void)
{
/* Listen to port 1180. */
uip_listen(APPport);
}
/*-----------------------------------------------------------------------------------*/
void
myapp(void)
{
u8_t i;
u16_t count;
// switch(uip_conn->lport) {
if(uip_conn->lport==APPport) {
// case htons(APPport):
/* Pick out the application state from the uip_conn structure. */
hs = (struct myapp_state *)(uip_conn->appstate);
if(uip_connected()) {
/* first connect, the app do some initialize here */
uip_connected=1;
//data_Rec=0;
//Rec_len=0;
//dataRec_timecount=0;
hs->count = 0;
/* Don't send any data in return; we wait for the remote request
instead. */
// Uart0_print("CONNECT\n");//ADDFJB
// Uart0_RevEn();
uip_send(uip_appdata, 0);
return;
} else if(uip_poll()) {
/* If we are polled ten times, we abort the connection. This is
because we don't want connections lingering indefinately in
the system. */
if(dataRec_timecount>=20)
{
Uart0_RevDis();
uip_len=Rec_len;
while(Rec_len)
{
Rec_len--;
uip_appdata[Rec_len]= Rec_data[Rec_len];
}
data_Rec=0;
Rec_len=0;
Uart0_RevEn();
dataRec_timecount=0;
hs->count = 0;
}
else //----------*/
if(hs->count++ >= 30) {
uip_connected=0;
uip_abort();
}
return;
} else if(uip_newdata()) {
/* we have recieved the request or data, apply the remote now*/
//--------leon, add the protocal here----, we receive the pc data or
//--retquest, in uip_appdata, length=uip_len;
//and we process it, place our data in uip_appdata. and set uip_len;
/*
// Check for GET.
if(uip_appdata[0] != 't' ||
uip_appdata[1] != 'e' ||
uip_appdata[2] != 's' ||
uip_appdata[3] != 't') {
// If it isn't a GET, we abort the connection
uip_abort();
return;
}
uip_appdata[0]='o';
uip_appdata[1]='k';
uip_len=2; //-------*/
if(!DebugPin) //setting parameters!
{
if(uip_len==3&&uip_appdata[0]=='G'&&uip_appdata[1]=='E'&&uip_appdata[2]=='T')//GET
{
SubAddr=0;
Number=26;//20;
while( !IRcvStr(&uip_appdata[0])) //读IP参数
{
for(i=0;i<200;i++);
for(i=0;i<200;i++);
for(i=0;i<200;i++);
for(i=0;i<200;i++);
}
/* uip_appdata[0]=UIP_IPADDR0;
uip_appdata[1]=UIP_IPADDR1;
uip_appdata[2]=UIP_IPADDR2;
uip_appdata[3]=UIP_IPADDR3;
uip_appdata[4]=UIP_NETMASK0;
uip_appdata[5]=UIP_NETMASK1;
uip_appdata[6]=UIP_NETMASK2;
uip_appdata[7]=UIP_NETMASK3;
uip_appdata[8]= UIP_DRIPADDR0;
uip_appdata[9]= UIP_DRIPADDR1;
uip_appdata[10]=UIP_DRIPADDR2;
uip_appdata[11]=UIP_DRIPADDR3;
uip_appdata[12]=UIP_ETHADDR0;
uip_appdata[13]=UIP_ETHADDR1;
uip_appdata[14]=UIP_ETHADDR2;
uip_appdata[15]=UIP_ETHADDR3;
uip_appdata[16]=UIP_ETHADDR4;
uip_appdata[17]=UIP_ETHADDR5;
uip_appdata[18]=(APPport>>8)&0xff;
uip_appdata[19]=APPport&0xff; */
#if UIP_ACTIVE_OPEN
/* uip_appdata[20]=(REMOTE_IP[0]>>8)&0xff;
uip_appdata[21]= REMOTE_IP[0]&0xff;
uip_appdata[22]=(REMOTE_IP[1]>>8)&0xff;;
uip_appdata[23]= REMOTE_IP[1]&0xff;
uip_appdata[24]=(REMOTE_PORT>>8)&0xff;
uip_appdata[25]= REMOTE_PORT&0xff; */
uip_send(uip_appdata, 26);
#else
uip_send(uip_appdata, 20);
#endif
}
else
if(uip_len>=24&&uip_len<=30&&uip_appdata[0]=='S'&&uip_appdata[1]=='E'&&uip_appdata[2]=='T')//SET
{
//uip_appdata[4]~uip_appdata[23]
TI=1;//????WHY
SubAddr=0;
Number=16;
if( !ISendStr(&uip_appdata[4]) )
{uip_appdata[0]=1;uip_send(uip_appdata,1);return;}
for(count=0;count<4000;count++);
SubAddr=16;
Number=uip_len-20;//4;
if( !ISendStr(&uip_appdata[20]) )
{uip_appdata[0]=2;uip_send(uip_appdata,1);return;}
uip_appdata[0]='S';
uip_appdata[1]='E';
uip_appdata[2]='T';
uip_appdata[3]='O';
uip_appdata[4]='K';
uip_send(uip_appdata,5);
}
}//if(!DebugPin)
else //Normal running.
{
Uart0_printR(&uip_appdata[0], uip_len); //数据发送
uip_send(uip_appdata, 0);
hs->count = 0;
}
}
else
if(uip_acked()) {
// Uart0_RevDis();
// uip_close();
}
else
{
uip_connected=0;
uip_abort();
}
/* Finally, return to uIP. Our outgoing packet will soon be on its
way... */
return;
}//end of if(uip_conn->lport==APPport)
else // default:
{
/* Should never happen. */
uip_connected=0;
uip_abort();
return;//break;
}
}
/*-----------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -