📄 protocal.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 + -