📄 cf_ifc.h
字号:
//-------------------------------------------------------------------------------
cf_UshortRegSetBits(pCf, CFMACREG_HCR_CARD_INT_CAUSE, CFMACREG_HCR_CIC_RxUpLdOvr );
#if DBG // PJG: optimize - this data only used in debug build.
pCf -> bRxPacketOpen = FALSE; // packet no longer open.
pCf -> ulRxPacketSize = 0; // reset current packet size.
pCf -> ulRxPacketByteCount = 0; // reset the byte count.
#endif
}
//************************************************************************************
//* Function: cf_TxUpdateSeq
//* Description: Ends transmit of current packet to the device.
//* Block is ended by setting the download complete bit in the
//* host status register and by signaling a download complete
//* interrupt cause to the device in the card interrupt cause
//* register.
//* Returns void
//* Date: 04/08/2003
//************************************************************************************
__inline void cf_TxUpdateSeq
(
PCF_OBJECT pCf, // Pointer to our interface object.
USHORT seqNum
)
{
NdisRawWritePortUshort
(pCf -> ulMrvDrvVirtualIoBase + CFMACREG_CCR_TX_FRAME_SEQ_NUM,seqNum);
}
//************************************************************************************
//* Function: cf_UpdateInterrupt
//* Description: return the status of the interrupt indicated by the supplied
//* mask and mask that interrupt if set.
//* Returns USHORT mask of current interrupt
//* Date: 04/08/2003
//************************************************************************************
__inline USHORT cf_UpdateInterrupt
(
PMRVDRV_ADAPTER Adapter,
USHORT intrMask
)
{
USHORT usRegValue;
// get current interrupt flags
NdisRawReadPortUshort(
Adapter->ulMrvDrvVirtualIoBase + CFMACREG_CCR_HOST_INT_CAUSE,
&usRegValue);
// mask all but the one we are concerned with
usRegValue &= intrMask;
// clear interrupt if it is pending.
NdisRawWritePortUshort(
Adapter->ulMrvDrvVirtualIoBase + CFMACREG_CCR_HOST_INT_CAUSE,usRegValue );
// return state of this interrupt
return usRegValue;
}
//************************************************************************************
//* Function: HexDump
//* Description: Debug helper routine for HEX dumps of data buffers..
//* Returns void
//* Date: 05/20/2003
//************************************************************************************
#if DBG
extern ULONG DebugLevel;
// set line length to your pleasure. 23 is the size of repeating data in MS Pings.
#define HD_LINE_LENGTH 23
#define MRV_DRV_LINE_LENGTH 16
static __inline
void HexDump ( UINT dbgLevel, char *msg, PUCHAR buf, int len)
{
int ii = 0, jj;
UCHAR lastBuf[MRV_DRV_LINE_LENGTH];
if ( (dbgLevel & DebugLevel) == 0 )
{
return;
}
if ( msg ) DBGPRINT(dbgLevel,("%s\n",msg));
// new version that prints out correctly in dbgview
jj = len / MRV_DRV_LINE_LENGTH;
for (ii = 0; ii < jj; ii ++ )
{
// note: if MRV_DRV_LINE_LENGTH changes, the following format
// needs to change as well
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)*buf,
(ULONG)(LONG)(UCHAR)*(buf+1),
(ULONG)(LONG)(UCHAR)*(buf+2),
(ULONG)(LONG)(UCHAR)*(buf+3),
(ULONG)(LONG)(UCHAR)*(buf+4),
(ULONG)(LONG)(UCHAR)*(buf+5),
(ULONG)(LONG)(UCHAR)*(buf+6),
(ULONG)(LONG)(UCHAR)*(buf+7),
(ULONG)(LONG)(UCHAR)*(buf+8),
(ULONG)(LONG)(UCHAR)*(buf+9),
(ULONG)(LONG)(UCHAR)*(buf+10),
(ULONG)(LONG)(UCHAR)*(buf+11),
(ULONG)(LONG)(UCHAR)*(buf+12),
(ULONG)(LONG)(UCHAR)*(buf+13),
(ULONG)(LONG)(UCHAR)*(buf+14),
(ULONG)(LONG)(UCHAR)*(buf+15)));
buf+= MRV_DRV_LINE_LENGTH;
}
jj = len % MRV_DRV_LINE_LENGTH;
if ( jj != 0 )
{
for ( ii = 0; ii < jj; ii++ )
{
lastBuf[ii] = *(buf+ii);
}
for ( ii=jj; ii < MRV_DRV_LINE_LENGTH; ii++ )
{
lastBuf[ii] = 0;
}
if ( jj >= 16 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10],
(ULONG)(LONG)(UCHAR)lastBuf[11],
(ULONG)(LONG)(UCHAR)lastBuf[12],
(ULONG)(LONG)(UCHAR)lastBuf[13],
(ULONG)(LONG)(UCHAR)lastBuf[14],
(ULONG)(LONG)(UCHAR)lastBuf[15]));
}
else if ( jj == 15 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10],
(ULONG)(LONG)(UCHAR)lastBuf[11],
(ULONG)(LONG)(UCHAR)lastBuf[12],
(ULONG)(LONG)(UCHAR)lastBuf[13],
(ULONG)(LONG)(UCHAR)lastBuf[14]));
}
else if ( jj == 14 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10],
(ULONG)(LONG)(UCHAR)lastBuf[11],
(ULONG)(LONG)(UCHAR)lastBuf[12],
(ULONG)(LONG)(UCHAR)lastBuf[13]));
}
else if ( jj == 13 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10],
(ULONG)(LONG)(UCHAR)lastBuf[11],
(ULONG)(LONG)(UCHAR)lastBuf[12]));
}
else if ( jj == 12 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10],
(ULONG)(LONG)(UCHAR)lastBuf[11]));
}
else if ( jj == 11 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9],
(ULONG)(LONG)(UCHAR)lastBuf[10]));
}
else if ( jj == 10 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x %02xx\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8],
(ULONG)(LONG)(UCHAR)lastBuf[9]));
}
else if ( jj == 9 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x - "
"%02x \n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7],
(ULONG)(LONG)(UCHAR)lastBuf[8]));
}
else if ( jj == 8 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6],
(ULONG)(LONG)(UCHAR)lastBuf[7]));
}
else if ( jj == 7 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5],
(ULONG)(LONG)(UCHAR)lastBuf[6]));
}
else if ( jj == 6 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4],
(ULONG)(LONG)(UCHAR)lastBuf[5]));
}
else if ( jj == 5 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4]));
}
else if ( jj == 4 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2],
(ULONG)(LONG)(UCHAR)lastBuf[3],
(ULONG)(LONG)(UCHAR)lastBuf[4]));
}
else if ( jj == 3 )
{
DBGPRINT(dbgLevel, ("%02x %02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1],
(ULONG)(LONG)(UCHAR)lastBuf[2]));
}
else if ( jj == 2 )
{
DBGPRINT(dbgLevel, ("%02x %02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0],
(ULONG)(LONG)(UCHAR)lastBuf[1]));
}
else if ( jj == 1 )
{
DBGPRINT(dbgLevel, ("%02x\n",
(ULONG)(LONG)(UCHAR)lastBuf[0]));
}
}
}
#else
#define HexDump(dbgLevel,msg,buf,len)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -