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

📄 kscmds.c

📁 ks8995m5口交换机启动eeprom配置源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	printf ("\n");


	if ( elem3 > 0 )
	{


#ifdef LINUX
        EnableLINUXkbhit ();
#endif        

		time (&tStart);

		tEnd = tStart;

		while(ch != 'q') {
		
			if ( tEnd - tStart >= elem3 )
			{

	            for ( i = iNdxfrom; i <= iNdxto - 1; i++ )
	            {

		            if ( i > 0xff ) // Overflow to Indirect Access Control Register 0
		            {
			            WriteData ( INDIRECTCTL1, (BYTE)(INDIRECTREAD | INDIRECTDMACTAB | (BYTE)( i >> 8 ) ));
			            WriteData ( INDIRECTCTL2, (BYTE) (i % 256) );
		            }
		            else
		            {
			            WriteData ( INDIRECTCTL1, INDIRECTREAD | INDIRECTDMACTAB );
			            WriteData ( INDIRECTCTL2, (BYTE)i );
		            }
		            
		            bData63.data = ReadDataBegin ( INDIRECTDATABASE + 1 );
		            // Read until bit 55 is not one
		            do {
			            bData55.data = ReadDataEnd ();

		            } while ( bData55.field.DataReady );


		            printf ( "\nDynamic MAC Table Entry (%d) => FID = %0x Source Port = %01d Time Stamp= %01d",
			            i, bData55.field.Fid, bData55.field.SourcePort, bData63.field.TimeStamp );

		            printf ( "\nDynamic MAC Table Entry (%d) => MAC Address %02x:%02x:%02x:%02x:%02x:%02x",
			            i,
			            ReadData ( INDIRECTDATABASE + 3 ),
			            ReadData ( INDIRECTDATABASE + 4 ),
			            ReadData ( INDIRECTDATABASE + 5 ),
			            ReadData ( INDIRECTDATABASE + 6 ),
			            ReadData ( INDIRECTDATABASE + 7 ),
			            ReadData ( INDIRECTDATABASE + 8 ) );
	            }

				printf ("\n");

				tStart = tEnd;
			}
			time (&tEnd);

			if(_kbhit()) {
				ch = _getch();
			}

		}

#ifdef LINUX
        DisableLINUXkbhit ();
#endif

	}

	return SUCCESS;
}



//--------------------------------------------------------------------------
//  
//  int DumpGlobalReg
//  
//  Description:
//		Command:
//
//		dg             Dump Global Control registers
//
//  Parameters:
//      int elem1   NOPARAMETER
//      int elem2   NOPARAMETER
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpGlobalReg ( int elem1, int elem2, int elem3 )
{

	int	iNdx;

	if ( elem1 != NOPARAMETER || elem2 != NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;

	for ( iNdx = GLOBALCTLBEGIN; iNdx <= GLOBALCTLEND; iNdx++ )
	{
		printf ( "\nGlobal Control Register (0x%02x) = 0x%02x", iNdx, ReadData ( (BYTE) iNdx ) );	

	}

	return SUCCESS;
}

	

//--------------------------------------------------------------------------
//  
//  int DumpMAC
//  
//  Description:
//		Command:
//
//		dmac             Dump MAC address registers.
//
//  Parameters:
//      int elem1   NOPARAMETER
//      int elem2   NOPARAMETER
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpMAC ( int elem1, int elem2, int elem3 )
{
#define MACREGBEGIN	104
#define MACREGEND	109
#define MACBUFLEN   18

	int iNdx;
    char sMACAddress[MACBUFLEN];  //Space for the patten "xx:xx:xx:xx:xx:xx"

	if ( elem1 != NOPARAMETER || elem2 != NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;	

	//for ( iNdx = MACREGBEGIN; iNdx <= MACREGEND; iNdx++ )
	//	printf ( "\nMAC Address Register (0x%02x) = 0x%02x", iNdx, ReadData ( (BYTE) iNdx ) );	

	for ( iNdx = MACREGBEGIN; iNdx <= MACREGEND; iNdx++ )
		sprintf ( sMACAddress + ( iNdx - MACREGBEGIN ) * 3, "%02x:", ReadData ( (BYTE) iNdx ) );	

    sMACAddress[MACBUFLEN - 1] = '\0'; // Eliminate the last ':' and null-end the sting

	printf ( "\nMAC Address %s", sMACAddress );	

	return SUCCESS;
}


//--------------------------------------------------------------------------
//  
//  int DumpMIB
//  
//  Description:
//		Command:
//
//		dmib    port    (s)             Dump MIB counters associated to port.
//
//  Parameters:
//      int elem1   Port number
//      int elem2   Repeat every elem2 seconds
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpMIB ( int elem1, int elem2, int elem3 )
{

	unsigned long	ulTemp;
	int	iNdx;
	int     ch = 0;
	time_t	tStart, tEnd;	

    if ( elem1 == NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;

	if ( elem1 < 1 || elem1 > 5 )
		return PARMERROR;

	giMIBOverflow = FALSE;

	for (iNdx = 0; iNdx < MIBCOUNTEROFFSET; iNdx++ )
	{
		ulMIB [elem1][iNdx] = 0;
		
	}


	for (iNdx = 0; iNdx < MIBCOUNTEROFFSET; iNdx++ )
	{
		ulTemp = GetMIBCounter ( (BYTE) elem1, (BYTE) iNdx );
		ulMIB[elem1][iNdx] += ulTemp;
		printf ( "\nPort %01d MIB Counter %s (0x%02x) = %lu ", elem1, MIBNames[ iNdx ], iNdx, ulTemp);

	}

	printf ("\n");

	if ( elem2 > 0 )
	{


#ifdef LINUX

        EnableLINUXkbhit ();
#endif

		time (&tStart);

		tEnd = tStart;

		while(ch != 'q') {
		
			if ( tEnd - tStart >= elem2 )
			{

				for (iNdx = 0; iNdx < MIBCOUNTEROFFSET; iNdx++ )
				{
					ulTemp = GetMIBCounter ( (BYTE) elem1, (BYTE) iNdx );

					ulMIB[elem1][iNdx] += ulTemp;

					printf ( "\nPort %.1d MIB Counter %s (%02x) = %lu  Total = %lu", elem1, MIBNames[ iNdx ], iNdx, ulTemp, ulMIB[elem1][iNdx] );
				}

				printf ("\n");

				tStart = tEnd;
			}
			time (&tEnd);

			if(_kbhit()) {
				ch = _getch();
			}

		}
#ifdef LINUX
        DisableLINUXkbhit ();
#endif

	}

	if ( giMIBOverflow )
	{
		printf ( "\n!!!!!!!!!!!!!!!!!!!!!!!!");
		printf ( "\n!                      !");
		printf ( "\n! MIB Counter overflow !");
		printf ( "\n!                      !");
		printf ( "\n!!!!!!!!!!!!!!!!!!!!!!!!");

		giMIBOverflow = FALSE;
	}

	return SUCCESS;
}

//--------------------------------------------------------------------------
//  
//  int DisplayMIBArray
//  
//  Description:
//		Display MIB counter in table format.
//
//      DOS box version can only display 10 digits each port while Linux version can
//      display 13 digits. 10 digits can last for more than 2 hours accumulating.
//      13 bit is 1000 times longer. 
//
//  Parameters:
//      None
//  
//  Return Vlaue:
//      None
//
//--------------------------------------------------------------------------
void DisplayMIBArray ()
{
	int j;
#ifdef LINUX               
	printf ("\n+---------------------------------------------------------------------------------------------------------+");
	printf ("\n|      MIB Counter        |     Port 1    |     Port 2    |     Port 3    |     Port 4    |     Port 5    |");
	printf ("\n|---------------------------------------------------------------------------------------------------------|");

	for ( j = 0; j < MIBCOUNTEROFFSET; j++ )

		printf ("\n| %02d %-20s | %13lu | %13lu | %13lu | %13lu | %13lu |", j, MIBNames[ j ],
					ulMIB[0][j], ulMIB[1][j], ulMIB[2][j], ulMIB[3][j], ulMIB[4][j] );
	printf ("\n+---------------------------------------------------------------------------------------------------------+");
#else
	//
	// DOS box only allows 80 charactes. 
	//

	printf ("\n+-----------------------------------------------------------------------------+");
	printf ("\n|     MIB Counter      |  Port 1  |  Port 2  |  Port 3  |  Port 4  |  Port 5  |");
	printf ("\n|-----------------------------------------------------------------------------|");

	for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
	{
			
		printf ("\n%02d %-20s|%10lu|%10lu|%10lu|%10lu|%10lu|", j, MIBNames[ j ], ulMIB[0][j], ulMIB[1][j], ulMIB[2][j], ulMIB[3][j], ulMIB[4][j] );
	}
	printf ("\n+-----------------------------------------------------------------------------+");

#endif

	printf ("\n");
}


//--------------------------------------------------------------------------
//  
//  int DumpMIBAll
//  
//  Description:
//		Command:
//
//		dall            Dump all MIB counters.
//
//  Parameters:
//      int elem1   NOPARAMETER
//      int elem2   NOPARAMETER
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpMIBAll ( int elem1, int elem2, int elem3 )
{

	unsigned long	ulTemp;
	int				i, j;
	int				ch = 0;
	time_t	tStart, tEnd;	

    	if ( elem2 != NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;

	giMIBOverflow = FALSE;


	//
	//	Reset all
	//
	for ( i = 0; i < PORTTOTAL; i++ )
		for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
			ulMIB [i][j] = 0;
	
	for ( i = 0; i < PORTTOTAL; i++ )
		for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
	{
		//
		// The first parameter of GetMIBCounter() starts with
		// 1, not 0.
		//
		ulTemp = GetMIBCounter ( (BYTE) i + 1, (BYTE) j );
		ulMIB[i][j] += ulTemp;

	}

	DisplayMIBArray();

	if ( elem1 > 0 )
	{

#ifdef LINUX
        EnableLINUXkbhit ();
#endif

		time (&tStart);

		tEnd = tStart;

		while(ch != 'q') {
		
			if ( tEnd - tStart >= elem1 )
			{
				for ( i = 0; i < PORTTOTAL; i++ )
					for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
					{
						ulTemp = GetMIBCounter ( (BYTE) i + 1, (BYTE) j );
						ulMIB[i][j] += ulTemp;
					}

				DisplayMIBArray();

				tStart = tEnd;
			}
			time (&tEnd);
			if(_kbhit()) {
				ch = _getch();
			}
		}

#ifdef LINUX
        DisableLINUXkbhit ();
#endif

	}

	if ( giMIBOverflow )
	{

		printf ( "\n!!!!!!!!!!!!!!!!!!!!!!!!");
		printf ( "\n!                      !");
		printf ( "\n! MIB Counter overflow !");
		printf ( "\n!                      !");
		printf ( "\n!!!!!!!!!!!!!!!!!!!!!!!!");

	}

	return SUCCESS;
}

//--------------------------------------------------------------------------
//  
//  int DumpReg
//  
//  Description:
//		Command:
//
//		dall   Reg         Dump 20 registers starting from Reg.
//
//  Parameters:
//      int elem1   Register number
//      int elem2   NOPARAMETER
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpReg ( int elem1, int elem2, int elem3 )
{
	int	iNdx;

	if ( elem1 == NOPARAMETER || elem2 != NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;

	if ( elem1 >= REGISTERTOTAL )
		return PARMERROR;


	igRRegNdx = elem1;

	for ( iNdx = 0; iNdx < 20; iNdx++ )
	{

		printf ( "\nRegister (0x%.2x) = 0x%.2x", igRRegNdx, ReadData ( (BYTE) igRRegNdx ) );	

		igRRegNdx++ ;

		if ( igRRegNdx == REGISTERTOTAL )
			igRRegNdx = 0;

	}

	// Restor the register index to pointing to the last register printed.
	if ( igRRegNdx == 0 )
		igRRegNdx = REGISTERTOTAL - 1;
	else
		igRRegNdx--;

	return SUCCESS;
}

//--------------------------------------------------------------------------
//  
//  int DumpNext20Reg
//  
//  Description:
//		Command:
//
//		dn          Dump next 20 registers starting from igRRegNdx (global variable);
//
//  Parameters:
//      int elem1   NOPAEAMETER
//      int elem2   NOPARAMETER
//      int elem3   NOPARAMETER
//  
//  Return Vlaue:
//      SUCCESS or PARMERROR
//
//--------------------------------------------------------------------------
int DumpNext20Reg ( int elem1, int elem2, int elem3 )
{
	int	iNdx;


	if ( elem1 != NOPARAMETER || elem2 != NOPARAMETER || elem3 != NOPARAMETER )
		return PARMERROR;	

	for ( iNdx = 0; iNdx < 20; iNdx++ )
	{
		igRRegNdx++;

		if ( igRRegNdx == REGISTERTOTAL )
			igRRegNdx = 0;

		printf ( "\nRegister (0x%.2x) = 0x%.2x", igRRegNdx, ReadData ( (BYTE) igRRegNdx ) );	
	}

	return SUCCESS;
}


//--------------------------------------------------------------------------
//  
//  int DumpPortCtlReg
//  
//  Description:

⌨️ 快捷键说明

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