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

📄 root2.c

📁 PPPoE协议在Psos中的实现源代码
💻 C
字号:
#include "errno.h"
#include <stdio.h>
#include <psos.h>
#include <tmlib/tmtypes.h>
#include <assert.h>
#include <sys/stat.h>
#include <stdarg.h>
#include <stdlib.h>
#include <tmlib/dprintf.h>

#include "sys_conf.h"
#include "cs8900a.h"
#include "ping.h"
#include "csio.h"

#define REMOTEPORT 2000

volatile unsigned short testSignal; 
extern int csInMemoryMode;

void MyFatalHandler(long   error,  long   node  )
{
/* this is for errno,display mystring:[errno string] */
	const char* s="errno";
	perror(s);
	printf("errno =%d\n",errno);
	printf("fatal error enter myfatalhandler\n"); 
	printf("%d\n",error);
	printf("%d\n",node);
	
	 
}

void testtask(void)
{
	unsigned short regRead;
	if (csInMemoryMode)
	   regRead =  inMEMw((unsigned short *)testSignal);
	tm_wkafter(10);
}


 
void root(void)
{
	char *mymsg = "hello,if you see this message,then the Cs8900a has sent packets success\n";
	int i,msgSize;
	unsigned long task1; 
	unsigned short Event1,Event2,Event3,Event4,st1,st2,st3,st4,le1,le2,le3,le4;
	
	
	 
        MMIO(AO_FREQ)=((UInt32) (0.5 + ( 477218588.0 * 512000.0 /
                                      66000000.0))) |
            (1U << 31); /* ensures that VO is aware of new calculation method*/
            
            /* Read an event from the Interrupt Status Queue */
        Event1 = inMEMw( (unsigned short *)(PKTPG_ISQ) );
        st1 =  inMEMw( (unsigned short *)(PKTPG_RX_STATUS) );
        le1 =  inMEMw( (unsigned short *)(PKTPG_RX_LENGTH ) ); 

   	Event2 = inMEMw( (unsigned short *)(PKTPG_ISQ) );
	st2 =  inMEMw( (unsigned short *)(PKTPG_RX_STATUS) );
        le2 =  inMEMw( (unsigned short *)(PKTPG_RX_LENGTH ) ); 

	Event3 = inMEMw( (unsigned short *)(PKTPG_ISQ) );
	st3 =  inMEMw( (unsigned short *)(PKTPG_RX_STATUS) );
        le3 =  inMEMw( (unsigned short *)(PKTPG_RX_LENGTH ) ); 

	Event4 = inMEMw( (unsigned short *)(PKTPG_ISQ) );
	st4 =  inMEMw( (unsigned short *)(PKTPG_RX_STATUS) );
        le4 =  inMEMw( (unsigned short *)(PKTPG_RX_LENGTH ) ); 

				
	t_create("testtask",100,10000,10000,0,&task1);
	t_start(task1,T_PREEMPT |T_TSLICE |T_ISR,testtask,0); 
	sain.sin_family=AF_INET;
	sain.sin_port=htons(REMOTEPORT);
	sain.sin_addr.s_addr=htonl(SD_DEF_GTWY_IP); /* det_addr= 202.112.135.65/69 */ 
	memset(sain.sin_zero,0,8);  /* Zero the rest of the struct */
	
	socksend = socket(AF_INET,SOCK_DGRAM,UDP);
	if(socksend==-1) 
		{printf("sock create error\n");
		printf("%d\n",errno);
		}
	else
	{
	printf("sock number is %d\n",socksend);
	
	/*bind a local port */
	/*since no need to listen a port now,bind can be omitted */
	/* bind(sockfd,&sain,sizeof(struct sockaddr_in));  */
	msgSize = sizeof(mymsg);
	for(i=0;i<2;i++)
	sendto(socksend,mymsg,72,0,&sain,sizeof(struct sockaddr_in));
	
	close(socksend);
	
	}	
	 
	
	for(;;)
	{}
	

	_psos_exit(-1);
}

⌨️ 快捷键说明

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