⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_tcp.c

📁 LwIP adaptation for Fujitsu MB90f497 and CS8900A Ethernet driver
💻 C
字号:

#include "lwip\tcp.h"
#include "lwip\lcd.h"
err_t test_accept(void *arg, struct tcp_pcb *newpcb, err_t err);
err_t test_recv (void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
err_t test_poll(void *arg, struct tcp_pcb *pcb);

 static err_t
 test_sent(void *arg, struct tcp_pcb *pcb, u16_t len);

void test_err (void *arg, err_t err);

static char Sent=0;



err_t test_recv (void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) {
//struct pas_states *es;
//int ptr;
Put_String("\nRecived:");
//	es=arg;
	if(err==ERR_CLSD) Put_String("Error: Close ");
	if(err==ERR_ABRT) Put_String("Error: Abort ");
	if(err==ERR_RST) Put_String("Error: Reset ");

	if(err==ERR_OK && arg!=NULL) {
	 //  Put_String("rbuf add ");
	//	rbuf_add(es->rbuf,p);
		tcp_recved(pcb,p->len);
		pbuf_free(p);
	}

	if(err==ERR_OK && arg==NULL) { 
	//	Put_String("no data ");
	//	tcp_close(pcb);
	}

	//pas_write(es,"Asynhronus State Protocol for Aquaco ",37);
return ERR_OK;

}



 static void
 send_buf(struct tcp_pcb *pcb)
 /* [<][>][^][v][top][bottom][index][help] */
 {
//     Put_String("test: send_buf\n");	
     tcp_write(pcb,"Hello from test",15,1);
 }


 static err_t
 test_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
 {
  	
 //  struct pas_states *es;
 //  es=arg;	
//	   if(es != NULL && es->pb != NULL) {	
//	             Put_String("Send_buf:");
		     send_buf(pcb);
//	   } else if(es->pb==NULL && es != NULL) es->Sent=1; 
   return ERR_OK;
 }





err_t test_poll(void *arg, struct tcp_pcb *pcb) {                
//struct pas_states *es;                                          
//es=arg;                                                    
//                Put_String("Pool ");                      
/*	Put_String("TCP state: ");                           
	if(pcb->state==CLOSED) Put_String("Closed\n");
	if(pcb->state==SYN_SENT) Put_String("SYN-SENT\n");
	if(pcb->state==SYN_RCVD) Put_String("SYN-RCVD\n");
	if(pcb->state==ESTABLISHED) Put_String("ESTABLISHED\n");
	if(pcb->state==FIN_WAIT_1) Put_String("FIN_WAIT_1\n");
	if(pcb->state==FIN_WAIT_2) Put_String("FIN_WAIT_2\n");
	if(pcb->state==CLOSE_WAIT) Put_String("CLOSE_WAIT\n");
	if(pcb->state==CLOSING) Put_String("CLOSING\n");
	if(pcb->state==LAST_ACK) Put_String("LAST_ACK\n");
	if(pcb->state==TIME_WAIT) Put_String("TIME_WAIT\n");*/

        if(pcb->state==CLOSE_WAIT) tcp_close(pcb);
        if(Sent) {
		Sent=0; 
		test_sent(arg,pcb,0);
	}
return ERR_OK;
}


void test_err (void *arg, err_t err) {
struct pas_states *es=arg;
	Put_String("Error: ");
	if(err==ERR_CLSD) Put_String("Error: Close ");
	if(err==ERR_ABRT) Put_String("Error: Abort ");
	if(err==ERR_RST) Put_String("Error: Reset ");
	
}


err_t test_accept(void *arg, struct tcp_pcb *newpcb, err_t err) {

/* 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -