📄 cisshow.c
字号:
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 + -