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

📄 protocal.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
字号:
/*

 *	The main function of the tcp/ip/ppp

 */



#include "net.h"

#include "netdial.h"

#include "netppp.h"

#include "devio.h"

//#include "tcpecho.h"

//#include "udpclient.h"

#include "netppp.h"

//#include "protocal.h"
#include <net\protocal.h>



#include <asixwin.h>

#include <sys\devmng.h>

#include <asixwin.h>

#include <asixapp.h>

#include <ppsm.h>


#include <resource\bitmap.h>

#include <asixwin\asix_mn.h>
#include <asixwin\asix_ed.h>

#include <asixwin\select.h>

#include <asixwin\asix_sb.h>

#include <asixwin\asix_lb.h>

#include <asixwin\disp.h>

#include <sys\flash.h>

#include "protocal.h"

//#include "nettypes.h"





DWORD ppp_stk[ STACK_SIZE * 8 ];

#if UDP_SUPPORT>0

DWORD udp_stk[ STACK_SIZE * 4];

#endif

DWORD tcp_stk[ STACK_SIZE * 10 ];







char dialnum[50];

int ret;

INT fd;

extern int user_cancel;
extern int mail_finish; 
extern char mDIAL[50];
char mREPLY[] = "OK\r\n";

extern int init_smtp( int st );
extern int do_pop3(int st);
extern STATUS ReadNetServer( void );
extern U32 AddBtn2TskBar( U32 tbid, char *caption, U32 style, U16 width, void *exdata );



void protocal()

{

	

	//unsigned int j=0;                                                          已经修改

	//unsigned int bytes=0;	                                                   已经修改

	//char str[] = "CONNECT";                                               已经修改

	extern int ret;

	

	MSG 	msg;

 	U32		frame;

 	U32		pGC;

 	U8		quit=0;

//	U32		tim_id;
    U32     bt1,bt2;

	U32		i;
	U32 st = 0;

	//U16		buffer[PHY_LCD_W][PHY_LCD_H];                  已经修改

	extern INT		fd; 

//	unsigned char		retbuf[10];



	//unsigned char        icmpbuf[8096];



	fd = UART0_ID;



	pGC = GetGC();



 	frame = CreateWindow(WNDCLASS_WIN, "proto", WS_OVERLAPPEDWINDOW, 0,0,PHY_LCD_W,PHY_LCD_H,0,0,NULL);

	bt1 = CreateWindow(WNDCLASS_BUTTON, "  c a l l", WS_CHILD|BS_REGULAR, 40,43,68,20,frame,0,NULL);

	bt2 = CreateWindow(WNDCLASS_BUTTON, "  h a l t", WS_CHILD|BS_REGULAR, 40,73,68,20,frame,0,NULL);



	

	

	DialInit(fd);

	

	//while (1) {

		//ret = ModemTest(fd, "AT");

		//if (ret == 0) break;

		//}

	/*SysOpenDev( fd, -1);

	do

	{

	//SendAtCmd(fd, "AT");

	modem_command(fd, "AT\r\n", NULL, 0);

	//GetModemRps(fd, 100);

	retbuf[0] = '\0';

	i = SysReadDev(fd, retbuf, 2, 2000 );

	}while( retbuf[0] != 'O' || i != 2 );



	/*SendAtCmd(fd, "ATATAT;");

	//GetModemRps(fd, 100);

	retbuf[0] = '\0';

	i = SysReadDev(fd, retbuf, 10, 1000);



	SysCloseDev( fd);*/

	

	//dial();

	

	while(!quit)

	{

		ASIXGetMessage(&msg, NULL, 0, 0);

		switch(msg.message)

		{

			case WM_COMMAND:

				if ( msg.lparam == bt1 )

				{

					SysOpenDev( fd, -1);

					ret = NetDial(fd, 30000,st);

					//SysCloseDev( fd);	

					

					if (ret == 0) {

						vcre_tsk( PPPTASK_ID, pppMain, PPPTASK_PRI, (DWORD)&ppp_stk[STACK_SIZE*4] );

					       gSysTcbTbl[PPPTASK_ID-1].status = DORMANT;



//						vcre_tsk( UDPTASK_ID, UdpClient, UDPTASK_PRI, (DWORD)&udp_stk[STACK_SIZE*2] );

//						gSysTcbTbl[UDPTASK_ID-1].status = DORMANT;



//						vcre_tsk( TCPTASK_ID, TcpEchoTask, TCPTASK_PRI, (DWORD)&tcp_stk[STACK_SIZE*2] );

//					       gSysTcbTbl[TCPTASK_ID-1].status = DORMANT;

						

						netInit();

					

						for (i = 0; i<3; i++) {

							if ((ret = pppOpen(fd)) >= 0) break;

							}



						if (localHost == 0) {

//							dprintf(dbuf, "PPPOPEN failed.");                             已经修改

							ext_tsk();

							}



//						i = SysReadDev(fd, icmpbuf, 8096, 1000);

							



//						sta_tsk(UDPTASK_ID, 0);



//						sta_tsk(TCPTASK_ID, 0);





						while(1) {

							msleep(1000);

							}

						}

										

				} else

				if(msg.lparam == bt2) {

					//SendAtCmd(fd, "ATH");

						modem_command(fd, "ATH", NULL, 0);

						/* enable GSM_RING interrupt */

					*(volatile unsigned char *)0x40270 |= 0x04;

					}

				break;

				

			case WM_QUIT:

				quit = 1;

				break;

				

			case 0x400://phone ring

				/* get this call */

				i=1;

				while(i++<200){}

				//SendAtCmd(fd, "ATA");

				modem_command(fd, "ATA", NULL, 0);

				break;

				

			default:

				break;

		}

		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 

	}

	

//	StopTimer( tim_id );

//	FreeTimer( tim_id );



	DestroyWindow( frame );



	EndofTask();



		

}



void dial()
{
	U32 pGC,gc;
	int i;
	U32 dialframe,tskbar, keyboard, kb, st1, ed_phone, bt_cancel,bt_connect, st;
	MSG msg;
	U8 quit = 0;

	int retvalue;

	fd = UART0_ID;
	pGC = GetGC();



 	dialframe = CreateWindow(WNDCLASS_WIN, "连接进度显示", WS_OVERLAPPEDWINDOW, 0,0,PHY_LCD_W,PHY_LCD_H,0,0,NULL);
	//任务栏
	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,dialframe, 0, NULL);
	keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,dialframe,0,NULL);
	kb = AddBtn2TskBar(tskbar, NULL, BS_ICON, 20, (char *)zi_jianpan); 

	st1 = CreateWindow(WNDCLASS_STATIC, "请输入拨号号码:", WS_CHILD|SS_TEXT, 4,20,92,20,dialframe,0,NULL);
	ed_phone = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 4,42,152,20,dialframe,100,NULL);

	st = CreateWindow(WNDCLASS_STATIC, NULL, WS_CHILD|SS_TEXT, 4,64,152,20,dialframe,0,NULL);
	bt_connect = CreateWindow(WNDCLASS_BUTTON, " 建立连接", WS_CHILD|BS_REGULAR, 10,96,68,20,dialframe,0,NULL);
	bt_cancel = CreateWindow(WNDCLASS_BUTTON, "断开连接", WS_CHILD|BS_REGULAR, 82,96,68,20,dialframe,0,NULL);
	SetFocus( ed_phone );
	ReadNetServer();

	DialInit(fd);
	
	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);

		switch(msg.message)
		{
			case WM_COMMAND:

				if ( msg.lparam == bt_connect )
				{
					GetEditorStr( ed_phone, dialnum, 50 );

					if( dialnum[0] == 0 )
					{
						MessageBox( dialframe, "请先输入拨号号码!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
					}else{

				       	SysOpenDev( fd, -1);
						ret = NetDial(fd, 3000,st);

	                    delay(1000);

					

	                            if (ret == 0) {

		                     	vcre_tsk( PPPTASK_ID, pppMain, PPPTASK_PRI, (DWORD)&ppp_stk[STACK_SIZE*4] );

	                                   gSysTcbTbl[PPPTASK_ID-1].status = DORMANT;

	

		                            netInit();

		                            

					             	gc = GetGC();

		                           // ClearRec(gc, GPC_LIGHTGREY, 10, 125, 100, 100, GPC_AND_STYLE);

	                                  	SetWindowText( st, "正在进行PPP会话...   ", NULL );

					

		                            for (i = 0; i<3; i++) {

			                     	if ((ret = pppOpen(fd)) >= 0) {
			                     		SetWindowText( st, "OK...   ", NULL );
			                     		//mailsend_smtp();
			                     		break;
			                     		}
		                            	}
		                            init_smtp(st);
								//	if(retvalue == -1)
									//	SetWindowText( st, "邮件发送失败,请重试...   ", NULL );

		                            retvalue = do_pop3(st);

									if(retvalue == -1) 
										SetWindowText( st, "邮件接收失败,请重试...   ", NULL );
									else if(retvalue == 0)
										SetWindowText( st, "邮件接收成功...   ", NULL );
										

	//							if(mail_finish == 1)
		//							quit = 1;
									

			                                              

				              if (localHost == 0) {
        			             	ext_tsk();
				              	}

			                               

//		                            sta_tsk(TCPTASK_ID, 0);



	                            } else {

	                            	// quit = 1;

		                             delay(1000);

		                          //   DestroyWindow(dialframe);

		                          //while(1) ;

	                            	}
					}
				}
					

				if(msg.lparam == bt_cancel ) {
					user_cancel = 1;
					quit = 1;
					}
				break;

				

			case WM_QUIT:

				quit = 1;

				break;



			default:

				break;

			}

			DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);	

		}



	modem_command(fd, "+++\r\n", NULL, 0);

    modem_command(fd, "ATH\r\n", NULL, 0);
	modem_command(fd, "ATZ\r\n", NULL, 0);

	DestroyWindow(dialframe);

	SysCloseDev( fd);


}


⌨️ 快捷键说明

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