diff --git a/source/Uthernet2.cpp b/source/Uthernet2.cpp index 14cbc736..4593bb5c 100644 --- a/source/Uthernet2.cpp +++ b/source/Uthernet2.cpp @@ -346,8 +346,8 @@ uint16_t Uthernet2::getTXDataSize(const size_t i) const const uint16_t size = socket.transmitSize; const uint16_t mask = size - 1; - const int sn_tx_rd = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_TX_RD0) & mask; - const int sn_tx_wr = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_TX_WR0) & mask; + const int sn_tx_rd = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_TX_RD0) & mask; + const int sn_tx_wr = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_TX_WR0) & mask; int dataPresent = sn_tx_wr - sn_tx_rd; if (dataPresent < 0) @@ -380,7 +380,7 @@ void Uthernet2::updateRSR(const size_t i) const int size = socket.receiveSize; const uint16_t mask = size - 1; - const int sn_rx_rd = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_RX_RD0) & mask; + const int sn_rx_rd = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_RX_RD0) & mask; const int sn_rx_wr = socket.sn_rx_wr & mask; int dataPresent = sn_rx_wr - sn_rx_rd; if (dataPresent < 0) @@ -451,7 +451,7 @@ void Uthernet2::receiveOnePacketMacRaw(const size_t i) uint8_t buffer[MAX_RXLENGTH]; - const uint8_t mr = myMemory[socket.registers + W5100_SN_MR]; + const uint8_t mr = myMemory[socket.registerAddress + W5100_SN_MR]; const bool filterMAC = mr & W5100_SN_MR_MF; const int len = receiveForMacAddress(!filterMAC, sizeof(buffer), buffer); @@ -567,9 +567,9 @@ void Uthernet2::sendDataToSocket(const size_t i, std::vector &data) // already in network order // this seems to be ignored for TCP, and so we reuse the same code - const uint8_t *dest = myMemory.data() + socket.registers + W5100_SN_DIPR0; + const uint8_t *dest = myMemory.data() + socket.registerAddress + W5100_SN_DIPR0; destination.sin_addr.s_addr = *reinterpret_cast(dest); - destination.sin_port = *reinterpret_cast(myMemory.data() + socket.registers + W5100_SN_DPORT0); + destination.sin_port = *reinterpret_cast(myMemory.data() + socket.registerAddress + W5100_SN_DPORT0); const ssize_t res = sendto(socket.myFD, reinterpret_cast(data.data()), data.size(), 0, (const struct sockaddr *)&destination, sizeof(destination)); #ifdef U2_LOG_TRAFFIC @@ -596,8 +596,8 @@ void Uthernet2::sendData(const size_t i) const uint16_t size = socket.transmitSize; const uint16_t mask = size - 1; - const int sn_tx_rr = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_TX_RD0) & mask; - const int sn_tx_wr = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_TX_WR0) & mask; + const int sn_tx_rr = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_TX_RD0) & mask; + const int sn_tx_wr = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_TX_WR0) & mask; const uint16_t base = socket.transmitBase; const uint16_t rr_address = base + sn_tx_rr; @@ -616,8 +616,8 @@ void Uthernet2::sendData(const size_t i) } // move read pointer to writer - myMemory[socket.registers + W5100_SN_TX_RD0] = getIByte(sn_tx_wr, 8); - myMemory[socket.registers + W5100_SN_TX_RD1] = getIByte(sn_tx_wr, 0); + myMemory[socket.registerAddress + W5100_SN_TX_RD0] = getIByte(sn_tx_wr, 8); + myMemory[socket.registerAddress + W5100_SN_TX_RD1] = getIByte(sn_tx_wr, 0); switch (socket.sn_sr) { @@ -640,12 +640,12 @@ void Uthernet2::resetRXTXBuffers(const size_t i) Socket &socket = mySockets[i]; socket.sn_rx_wr = 0x00; socket.sn_rx_rsr = 0x00; - myMemory[socket.registers + W5100_SN_TX_RD0] = 0x00; - myMemory[socket.registers + W5100_SN_TX_RD1] = 0x00; - myMemory[socket.registers + W5100_SN_TX_WR0] = 0x00; - myMemory[socket.registers + W5100_SN_TX_WR1] = 0x00; - myMemory[socket.registers + W5100_SN_RX_RD0] = 0x00; - myMemory[socket.registers + W5100_SN_RX_RD1] = 0x00; + myMemory[socket.registerAddress + W5100_SN_TX_RD0] = 0x00; + myMemory[socket.registerAddress + W5100_SN_TX_RD1] = 0x00; + myMemory[socket.registerAddress + W5100_SN_TX_WR0] = 0x00; + myMemory[socket.registerAddress + W5100_SN_TX_WR1] = 0x00; + myMemory[socket.registerAddress + W5100_SN_RX_RD0] = 0x00; + myMemory[socket.registerAddress + W5100_SN_RX_RD1] = 0x00; } void Uthernet2::openSystemSocket(const size_t i, const int type, const int protocol, const int state) @@ -677,7 +677,7 @@ void Uthernet2::openSystemSocket(const size_t i, const int type, const int proto void Uthernet2::openSocket(const size_t i) { Socket &socket = mySockets[i]; - const uint8_t mr = myMemory[socket.registers + W5100_SN_MR]; + const uint8_t mr = myMemory[socket.registerAddress + W5100_SN_MR]; const uint8_t protocol = mr & W5100_SN_MR_PROTO_MASK; uint8_t &sr = socket.sn_sr; switch (protocol) @@ -717,13 +717,13 @@ void Uthernet2::closeSocket(const size_t i) void Uthernet2::connectSocket(const size_t i) { Socket &socket = mySockets[i]; - const uint8_t *dest = myMemory.data() + socket.registers + W5100_SN_DIPR0; + const uint8_t *dest = myMemory.data() + socket.registerAddress + W5100_SN_DIPR0; sockaddr_in destination = {}; destination.sin_family = AF_INET; // already in network order - destination.sin_port = *reinterpret_cast(myMemory.data() + socket.registers + W5100_SN_DPORT0); + destination.sin_port = *reinterpret_cast(myMemory.data() + socket.registerAddress + W5100_SN_DPORT0); destination.sin_addr.s_addr = *reinterpret_cast(dest); const int res = connect(socket.myFD, (struct sockaddr *)&destination, sizeof(destination)); @@ -733,7 +733,7 @@ void Uthernet2::connectSocket(const size_t i) socket.sn_sr = W5100_SN_SR_ESTABLISHED; socket.myErrno = 0; #ifdef U2_LOG_STATE - const uint16_t port = readNetworkWord(myMemory.data() + socket.registers + W5100_SN_DPORT0); + const uint16_t port = readNetworkWord(myMemory.data() + socket.registerAddress + W5100_SN_DPORT0); LogFileOutput("U2: TCP[%" SIZE_T_FMT "]: CONNECT to %d.%d.%d.%d:%d\n", i, dest[0], dest[1], dest[2], dest[3], port); #endif } @@ -1049,7 +1049,7 @@ void Uthernet2::Reset(const bool powerCycle) for (size_t i = 0; i < mySockets.size(); ++i) { mySockets[i].clearFD(); - mySockets[i].registers = static_cast(W5100_S0_BASE + (i << 8)); + mySockets[i].registerAddress = static_cast(W5100_S0_BASE + (i << 8)); } // initial values diff --git a/source/Uthernet2.h b/source/Uthernet2.h index dbc437d8..11757152 100644 --- a/source/Uthernet2.h +++ b/source/Uthernet2.h @@ -18,7 +18,7 @@ struct Socket uint16_t transmitSize; uint16_t receiveBase; uint16_t receiveSize; - uint16_t registers; + uint16_t registerAddress; uint16_t sn_rx_wr; uint16_t sn_rx_rsr; diff --git a/source/W5100.h b/source/W5100.h index 2d5c9a4e..c9f35ec0 100644 --- a/source/W5100.h +++ b/source/W5100.h @@ -67,16 +67,18 @@ #define W5100_SN_PROTO 0x14 #define W5100_SN_TOS 0x15 #define W5100_SN_TTL 0x16 -#define W5100_SN_TX_FSR0 0x20 -#define W5100_SN_TX_FSR1 0x21 -#define W5100_SN_TX_RD0 0x22 -#define W5100_SN_TX_RD1 0x23 -#define W5100_SN_TX_WR0 0x24 -#define W5100_SN_TX_WR1 0x25 -#define W5100_SN_RX_RSR0 0x26 -#define W5100_SN_RX_RSR1 0x27 -#define W5100_SN_RX_RD0 0x28 -#define W5100_SN_RX_RD1 0x29 + +#define W5100_SN_TX_FSR0 0x20 // TX Free Size +#define W5100_SN_TX_FSR1 0x21 // TX Free Size +#define W5100_SN_TX_RD0 0x22 // TX Read Pointer +#define W5100_SN_TX_RD1 0x23 // TX Read Pointer +#define W5100_SN_TX_WR0 0x24 // TX Write Pointer +#define W5100_SN_TX_WR1 0x25 // TX Write Pointer + +#define W5100_SN_RX_RSR0 0x26 // RX Receive Size +#define W5100_SN_RX_RSR1 0x27 // RX Receive Size +#define W5100_SN_RX_RD0 0x28 // RX Read Pointer +#define W5100_SN_RX_RD1 0x29 // RX Read Pointer #define W5100_SN_SR_CLOSED 0x00 #define W5100_SN_SR_SOCK_INIT 0x13