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

📄 cisshow.c

📁 AT91RM9200 BSP with dual ethernet port
💻 C
📖 第 1 页 / 共 3 页
字号:
            cisFuncid = FUNC_LAN;	    printf ("  Network LAN adaptor\n");	    break;	case FUNC_AIMS:            cisFuncid = FUNC_AIMS;	    printf ("  AIMS\n");	    break;	default:	    printf ("  Reserved\n");	    break;	}        systemInitByte |= *pChar;    if (systemInitByte & 0x01)	printf ("  System initialization is POST\n");    else	printf ("  System initialization is ROM\n");    }/********************************************************************************* cisShowFunce - Show information in Function extension tuple.** This routine shows CIS in the Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunce    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    if (cisFuncid == FUNC_SERIAL)	{	switch (*pChar & 0x0f)	    {	    case 0x00:	    case 0x08:	    case 0x09:	    case 0x0a:		printf ("  Serial port interface\n");		cisShowFunceSerial (pTuple);		break;	    case 0x01:	    case 0x05:	    case 0x06:	    case 0x07:		printf ("  Modem interface\n");		cisShowFunceModem (pTuple);		break;	    case 0x02:		printf ("  Data modem interface\n");		cisShowFunceDmodem (pTuple);		break;	    case 0x03:		printf ("  Facsimile modem interface\n");		cisShowFunceFmodem (pTuple);		break;	    case 0x04:		printf ("  Voice modem interface\n");		cisShowFunceVmodem (pTuple);		break;	    	    default:		printf ("  Reserved\n");	    }	}    if (cisFuncid == FUNC_FIXEDDISK)	{	switch (*pChar++)	    {	    case 0x01:		if (*pChar == 0x01)		    printf ("  ATA interface\n");		else		    printf ("  Non ATA interface\n");		break;	    case 0x02:		if ((*pChar & 0x03) == 0x00)		    printf ("  Vpp power not required\n");		else if ((*pChar & 0x03) == 0x01)		    printf ("  Vpp power required for media modification access\n");		else if ((*pChar & 0x03) == 0x02)		    printf ("  Vpp power required for all media access\n");		else if ((*pChar & 0x03) == 0x03)		    printf ("  Vpp power required continuously\n");		if (*pChar & 0x04)		    printf ("  Silicon device\n");		else		    printf ("  Rotating device\n");		if (*pChar & 0x08)		    printf ("  Serial number is guaranteed unique\n");		else		    printf ("  Serial number may not be unique\n");				pChar++;		if (*pChar & 0x01)		    printf ("  Sleep mode supported\n");		else		    printf ("  Sleep mode not supported\n");		if (*pChar & 0x02)		    printf ("  Standby mode supported\n");		else		    printf ("  Standby mode not supported\n");		if (*pChar & 0x04)		    printf ("  Idle mode supported\n");		else		    printf ("  Idle mode not supported\n");		if (*pChar & 0x08)		    printf ("  Drive automatically minimize power\n");		else		    printf ("  Low power mode use required to minimize power\n");		if (*pChar & 0x10)		    printf ("  Some primary or secondly IO addressing modes exclude 3F7 and/or 377 for floppy interface\n");		else		    printf ("  All primary and secondly IO addressing modes include ports 3F7/377\n");		if (*pChar & 0x20)		    printf ("  Index bit is supported or emulated\n");		else		    printf ("  Index bit is not supported or emulated\n");		if (*pChar & 0x40)		    printf ("  -IOis16 is asserted only for data register on twin-card configuration\n");		else		    printf ("  -IOis16 use is unspecified on twin-card configuration\n");	    }	}    }/********************************************************************************* cisShowFunceSerial - Show information in Serial port Function extension tuple.** This routine shows CIS in the Serial port Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunceSerial    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    pChar++;	/* skip the type of extended data */    switch (*pChar++)	{	case 0x0:	    printf ("  8250 UART is present\n");	    break;	case 0x01:	    printf ("  16450 UART is present\n");	    break;		case 0x02:	    printf ("  16550 UART is present\n");	    break;		default:	    printf ("  Reserved\n");	}        if (*pChar & 0x01)	printf ("  Space parity supported\n");    else	printf ("  Space parity not supported\n");    if (*pChar & 0x02)	printf ("  Mark parity supported\n");    else	printf ("  Mark parity not supported\n");    if (*pChar & 0x04)	printf ("  Odd parity supported\n");    else	printf ("  Odd parity not supported\n");    if (*pChar & 0x08)	printf ("  Even parity supported\n");    else	printf ("  Even parity not supported\n");        pChar++;    if (*pChar & 0x01)	printf ("  5 bit data format is supported\n");    else	printf ("  5 bit data format is not supported\n");    if (*pChar & 0x02)	printf ("  6 bit data format is supported\n");    else	printf ("  6 bit data format is not supported\n");    if (*pChar & 0x04)	printf ("  7 bit data format is supported\n");    else	printf ("  7 bit data format is not supported\n");    if (*pChar & 0x08)	printf ("  8 bit data format is supported\n");    else	printf ("  8 bit data format is not supported\n");    if (*pChar & 0x10)	printf ("  1 stop bit is supported\n");    else	printf ("  1 stop bit is not supported\n");    if (*pChar & 0x20)	printf ("  1.5 stop bit is supported\n");    else	printf ("  1.5 stop bit is not supported\n");    if (*pChar & 0x40)	printf ("  2 stop bit is supported\n");    else	printf ("  2 stop bit is not supported\n");    } /********************************************************************************* cisShowFunceModem - Show information in Modem Function extension tuple.** This routine shows CIS in the Modem Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunceModem    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    CIS_BYTE4 rxBuf;    CIS_BYTE4 txBuf;    pChar++;    if (*pChar & 0x01)	printf ("  Tx xon/xoff is supported\n");    else	printf ("  Tx xon/xoff is not supported\n");    if (*pChar & 0x02)	printf ("  Rx xon/xoff is supported\n");    else	printf ("  Rx xon/xoff is not supported\n");    if (*pChar & 0x04)	printf ("  Tx CTS is supported\n");    else	printf ("  Tx CTS is not supported\n");    if (*pChar & 0x08)	printf ("  Rx RTS is supported\n");    else	printf ("  Rx RTS is not supported\n");    if (*pChar & 0x10)	printf ("  Transparent flow control is supported\n");    else	printf ("  Transparent flow control is not supported\n");        pChar++;    printf ("  Size of command buffer = 0x%x\n", (*pChar++ + 1) * 4);    rxBuf.c[0] = *pChar++;    rxBuf.c[1] = *pChar++;    rxBuf.c[2] = *pChar++;    rxBuf.c[3] = 0x00;    printf ("  Size of rx buffer = 0x%x\n", rxBuf.l);    txBuf.c[0] = *pChar++;    txBuf.c[1] = *pChar++;    txBuf.c[2] = *pChar++;    txBuf.c[3] = 0x00;    printf ("  Size of tx buffer = 0x%x\n", txBuf.l);    }/********************************************************************************* cisShowFunceDmodem - Show information in Data Modem Function extension tuple.** This routine shows CIS in the Data Modem Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunceDmodem    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    u_char *pEnd	= pChar + pTuple->link;    CIS_BYTE2 maxdataRate;    pChar++;    maxdataRate.c[1] = *pChar++;    maxdataRate.c[0] = *pChar++;    printf ("  DTE to UART max data rate = %d\n", maxdataRate.s);    printf ("  Modulation standart: ");    if (*pChar & 0x01)	printf ("Bell-103 ");    if (*pChar & 0x02)	printf ("V.21 ");    if (*pChar & 0x04)	printf ("V.23 ");    if (*pChar & 0x08)	printf ("V.22-A&B ");    if (*pChar & 0x10)	printf ("Bell-212A ");    if (*pChar & 0x20)	printf ("V.22-bis ");    if (*pChar & 0x40)	printf ("V.26 ");    if (*pChar & 0x80)	printf ("V.26-bis ");    pChar++;    if (*pChar & 0x01)	printf ("V.27-bis ");    if (*pChar & 0x02)	printf ("V.29 ");    if (*pChar & 0x04)	printf ("V.32 ");    if (*pChar & 0x08)	printf ("V.32-bis ");    if (*pChar & 0x10)	printf ("VFAST ");    printf ("\n");    pChar++;    printf ("  Error correction/detection protocol: ");    if (*pChar & 0x01)	printf ("MNP2-4 ");    if (*pChar & 0x02)	printf ("V.42/LAPM ");    printf ("\n");        pChar++;    printf ("  Data compression protocol: ");    if (*pChar & 0x01)	printf ("V.42-bis ");    if (*pChar & 0x02)	printf ("MNP5 ");    printf ("\n");	        pChar++;    printf ("  Command protocols: ");    if (*pChar & 0x01)	printf ("AT1 ");    if (*pChar & 0x02)	printf ("AT2 ");    if (*pChar & 0x04)	printf ("AT3 ");    if (*pChar & 0x08)	printf ("MNP-AT ");    if (*pChar & 0x10)	printf ("V.25-bis ");    if (*pChar & 0x20)	printf ("V.25-A ");    if (*pChar & 0x40)	printf ("DMCL ");    printf ("\n");    pChar++;    printf ("  Escape mechanisms: ");    if (*pChar & 0x01)	printf ("BREAK ");    if (*pChar & 0x02)	printf ("+++ ");    if (*pChar & 0x04)	printf ("user defined ");    printf ("\n");    pChar++;    printf ("  Data encryption: reserved\n");    pChar++;    printf ("  End user feature selection: ");    if (*pChar & 0x01)	printf ("caller ID decoding\n");    else	printf ("caller ID not decoding\n");    pChar++;    printf ("  Country code: ");    while ((pChar < pEnd) && (*pChar != 0xff))	printf ("0x%x ", *pChar++);    printf ("\n");    }/********************************************************************************* cisShowFunceFmodem - Show information in Fax Modem Function extension tuple.** This routine shows CIS in the Fax Modem Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunceFmodem    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    u_char *pEnd	= pChar + pTuple->link;    CIS_BYTE2 maxdataRate;    if ((*pChar & 0xf0) == 0x10)	printf ("  EIA/TIA-578 Service Class 1\n");    if ((*pChar & 0xf0) == 0x20)	printf ("  EIA/TIA-578 Service Class 2\n");    if ((*pChar & 0xf0) == 0x30)	printf ("  EIA/TIA-578 Service Class 3\n");    pChar++;    maxdataRate.c[1] = *pChar++;    maxdataRate.c[0] = *pChar++;    printf ("  DTE to UART max data rate = %d\n", maxdataRate.s * 75);    printf ("  Moduration standard: ");    if (*pChar & 0x01)	printf ("V.21-C2 ");    if (*pChar & 0x02)	printf ("V.27ter ");    if (*pChar & 0x04)	printf ("V.29 ");    if (*pChar & 0x08)	printf ("V.17 ");    if (*pChar & 0x10)	printf ("V.33 ");    printf ("\n");        pChar++;    printf ("  Document Facsimile Feature Selection: ");    if (*pChar & 0x01)	printf ("T.3 ");    if (*pChar & 0x02)	printf ("T.4 ");    if (*pChar & 0x04)	printf ("T.6 ");    if (*pChar & 0x08)	printf ("error-correction-mode ");    if (*pChar & 0x10)	printf ("voice-request ");    if (*pChar & 0x20)	printf ("polling ");    if (*pChar & 0x40)	printf ("file-transfer ");    if (*pChar & 0x80)	printf ("password ");    printf ("\n");    pChar += 2;    printf ("  Country code: ");    while ((pChar < pEnd) && (*pChar != 0xff))	printf ("0x%x ", *pChar++);    printf ("\n");    }/********************************************************************************* cisShowFunceVmodem - Show information in Voice Modem Function extension tuple.** This routine shows CIS in the Voice Modem Function extension tuple.** RETURNS: N/A*/LOCAL void cisShowFunceVmodem    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    CIS_BYTE2 maxdataRate;    printf ("  Service class %d\n", (*pChar & 0xf0) >> 14);    pChar++;    maxdataRate.c[1] = *pChar++;    maxdataRate.c[0] = *pChar++;    printf ("  DTE to UART max data rate = %d\n", maxdataRate.s * 75);    while (*pChar != 0x00)	{	printf ("  Sample rate = %d\n", *pChar * 1000 + *(pChar+1) * 10);	pChar += 2;	}    pChar++;    while (*pChar != 0x00)	{	printf ("  Sample size = %d.%d\n", *pChar, *(pChar+1));	pChar += 2;	}    printf ("  Voice compression methods: reserved\n");    }/********************************************************************************* cisShowConfig - Show information in Configuration tuple.** This routine shows CIS in the Configuration tuple.** RETURNS: N/A*/LOCAL void cisShowConfig    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    u_char *pEnd	= pChar + pTuple->link;    u_char mask[16];    u_char cisCentries;    u_int addrSize;    u_int maskSize;    u_int ix;    u_int size;    CIS_BYTE4 base;    CIS_BYTE4 interface;    CIS_TUPLE subtuple;    addrSize = (*pChar & 0x03) + 1;    maskSize = ((*pChar & 0x3c) >> 2) + 1;    printf ("  Sizeof configuration register base address = %d\n", addrSize);    printf ("  Sizeof configuration register presence mask = %d\n", maskSize);    pChar++;    if (pChar > pEnd)	return;        cisCentries = *pChar++;    printf ("  Last index = %d\n", cisCentries);    base.l = 0;    for (ix = 0; ix < addrSize; ix++)	base.c[ix] = *pChar++;        printf ("  Base address = 0x%x\n", base.l);    printf ("  Mask = ");    for (ix = 0; ix < maskSize; ix++)	{	mask[ix] = *pChar++;	printf ("0x%x ", mask[ix]);	}    printf ("\n");    pChar++;    while ((pChar < pEnd) && (*pChar != 0xff))	{	subtuple.code = *pChar++;	subtuple.link = *pChar++;	pEnd = pChar + subtuple.link;	size = ((*pChar & 0xc0) >> 6) + 1;	interface.l = 0;	for (ix = 0; ix < size; ix++)	    interface.c[ix] = *pChar++;	pChar++;        printf ("  ");	while ((pChar < pEnd) && (*pChar != 0xff))	    pChar += printf ("%s", pChar) + 1;	printf ("\n");	}    }/********************************************************************************* cisShowCtable - Show information in Configuration tuple.** This routine shows CIS in the Configuration tuple.** RETURNS: N/A*/LOCAL void cisShowCtable    (    CIS_TUPLE *pTuple		/* pointer to a tuple */    )    {    u_char *pChar	= (u_char *)pTuple + sizeof(CIS_TUPLE);    u_char featureSelection;    u_char index;        index = *pChar & 0x3f;    printf ("  Index = %d\n", index);    if (*pChar & 0x40)	cisCdefault = pTuple;    if (*pChar++ & 0x80)	{	printf ("  Interface type is %s\n", interfaceType[*pChar & 0x07]);	if (*pChar & 0x10)	    printf ("  BVDs Active\n");	else	    printf ("  BVDs Inactive\n");	if (*pChar & 0x20)	    printf ("  WP Active\n");	else	    printf ("  WP Inactive\n");	if (*pChar & 0x40)	    printf ("  RdyBsy Active\n");

⌨️ 快捷键说明

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