Code:
unsigned int NextPacketPtr; unsigned int enc28j60PacketReceive(unsigned int maxlen, unsigned char* packet) { unsigned int rxstat; unsigned int len; if( !enc28j60Read(EPKTCNT) ) return 0; enc28j60Write(ERDPTL, (NextPacketPtr)); enc28j60Write(ERDPTH, (NextPacketPtr)>>8); NextPacketPtr = enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0); NextPacketPtr |= ((unsigned int)enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0))<<8; len = enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0); len |= ((unsigned int)enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0))<<8; rxstat = enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0); rxstat |= ((unsigned int)enc28j60SPIRead(ENC28J60_READ_BUF_MEM, 0))<<8; len = ((len<maxlen)?(len) : (maxlen)); enc28j60ReadBuffer(len, packet); enc28j60Write(ERXRDPTL, (NextPacketPtr)); enc28j60Write(ERXRDPTH, (NextPacketPtr)>>8); enc28j60SPIWrite(ENC28J60_BIT_FIELD_SET, ECON2, ECON2_PKTDEC); return len; }
Leave a comment: