U2 logging: reduce spam and use AW's LogFileOutput.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
Andrea Odetti 2021-04-25 18:29:48 +01:00
parent 10fcf305b1
commit 6243d17e93
3 changed files with 49 additions and 108 deletions

View file

@ -3,8 +3,6 @@
#include "Tfe/tfearch.h" #include "Tfe/tfearch.h"
#include "Tfe/tfe.h" #include "Tfe/tfe.h"
#include <iostream>
#include <iomanip>
namespace namespace
{ {
@ -41,32 +39,6 @@ namespace
} }
std::ostream & stream_mac(std::ostream & s, const uint8_t * mac)
{
for (size_t i = 0; i < 6; ++i)
{
if (i)
{
s << ":";
}
as_hex(s, mac[i], 2);
}
return s;
}
std::ostream & stream_ip(std::ostream & s, const uint8_t * ip)
{
for (size_t i = 0; i < 4; ++i)
{
if (i)
{
s << ".";
}
s << int(ip[i]);
}
return s;
}
void tfeTransmitOnePacket(const BYTE * buffer, const int len) void tfeTransmitOnePacket(const BYTE * buffer, const int len)
{ {
if (tfe_enabled) if (tfe_enabled)
@ -112,11 +84,6 @@ bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len)
/* determine ourself the type of frame */ /* determine ourself the type of frame */
if (shouldAccept(mac, buffer, len)) if (shouldAccept(mac, buffer, len))
{ {
// std::cerr << "DEST ";
// stream_mac(std::cerr, buffer) << " ? ";
// stream_mac(std::cerr, mac) << " ";
// as_hex(std::cerr, len, 4) << " bytes" << std::endl;
return true; return true;
} }
else else
@ -127,9 +94,3 @@ bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len)
} while (!done); } while (!done);
return false; return false;
} }
std::ostream & as_hex(std::ostream & s, const size_t value, const size_t width)
{
s << std::setfill('0') << std::setw(width) << std::hex << value << std::dec;
return s;
}

View file

@ -1,10 +1,4 @@
#pragma once #pragma once
#include <iosfwd>
bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len); bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len);
void tfeTransmitOnePacket(const BYTE * buffer, const int len); void tfeTransmitOnePacket(const BYTE * buffer, const int len);
std::ostream & as_hex(std::ostream & s, const size_t value, const size_t width);
std::ostream & stream_mac(std::ostream & s, const uint8_t * mac);
std::ostream & stream_ip(std::ostream & s, const uint8_t * ip);

View file

@ -3,13 +3,12 @@
#include "linux/tfe2.h" #include "linux/tfe2.h"
#include "Memory.h" #include "Memory.h"
#include "Log.h"
#define MAX_RXLENGTH 1518 #define MAX_RXLENGTH 1518
//#define U2_VERBOSE // #define U2_LOG_VERBOSE
#define U2_UNKNOWN // #define U2_LOG_TRAFFIC
#define U2_LOG_UNKNOWN
#include <iostream>
#include <iomanip>
namespace namespace
{ {
@ -94,18 +93,17 @@ namespace
switch (protocol) switch (protocol)
{ {
case 0x00: case 0x00:
std::cerr << "Mode[" << i << "]: Closed" << std::endl; LogFileOutput("U2: Mode[%d]: CLOSED\n", i);
break; break;
case 0x03: case 0x03:
std::cerr << "Mode[" << i << "]: IPRAW" << std::endl; LogFileOutput("U2: Mode[%d]: IPRAW\n", i);
break; break;
case 0x04: case 0x04:
std::cerr << "Mode[" << i << "]: MACRAW" << std::endl; LogFileOutput("U2: Mode[%d]: MACRAW\n", i);
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "Unknown protocol: "; LogFileOutput("U2: Unknown protocol: %02x\n", value);
as_hex(std::cerr, value, 2) << std::endl;
#endif #endif
} }
} }
@ -130,8 +128,6 @@ namespace
base = ceiling; base = ceiling;
} }
sockets[i].transmitSize = base - sockets[i].transmitBase; sockets[i].transmitSize = base - sockets[i].transmitBase;
// std::cerr << "TX[" << i << "] = ";
// as_hex(std::cerr, sockets[i].transmitSize, 4) << std::endl;
} }
} }
@ -155,8 +151,6 @@ namespace
base = ceiling; base = ceiling;
} }
sockets[i].receiveSize = base - sockets[i].receiveBase; sockets[i].receiveSize = base - sockets[i].receiveBase;
// std::cerr << "RX[" << i << "] = ";
// as_hex(std::cerr, sockets[i].receiveSize, 4) << std::endl;
} }
} }
@ -228,15 +222,16 @@ namespace
if (rsr + len < size) // "not =": we do not want to fill the buffer. if (rsr + len < size) // "not =": we do not want to fill the buffer.
{ {
writeData(i, buffer, len); writeData(i, buffer, len);
std::cerr << "READ[" << i << "]: "; #ifdef U2_LOG_TRAFFIC
as_hex(std::cerr, len, 4) << " -> "; LogFileOutput("U2: READ MACRAW[%d]: +%d -> %d bytes\n", i, len, socket.sn_rx_rsr);
as_hex(std::cerr, socket.sn_rx_rsr, 4) << " bytes" << std::endl; #endif
} }
else else
{ {
// ??? we just skip it // ??? we just skip it
std::cerr << "SKIP[" << i << "]: "; #ifdef U2_LOG_TRAFFIC
as_hex(std::cerr, len, 4) << " bytes" << std::endl; LogFileOutput("U2: SKIP MACRAW[%d]: %d bytes\n", i, len);
#endif
} }
} }
} }
@ -255,21 +250,26 @@ namespace
void sendDataMacRaw(const size_t i, const std::vector<uint8_t> & data) void sendDataMacRaw(const size_t i, const std::vector<uint8_t> & data)
{ {
std::cerr << "SEND MACRAW[" << i << "]: "; #ifdef U2_LOG_TRAFFIC
as_hex(std::cerr, data.size(), 4) << " bytes " << std::endl; LogFileOutput("U2: SEND MACRAW[%d]: %d bytes\n", i, data.size());
#endif
tfeTransmitOnePacket(data.data(), data.size()); tfeTransmitOnePacket(data.data(), data.size());
} }
void sendDataIPRaw(const size_t i, const std::vector<uint8_t> & data) void sendDataIPRaw(const size_t i, const std::vector<uint8_t> & data)
{ {
#ifdef U2_LOG_TRAFFIC
const Socket & socket = sockets[i]; const Socket & socket = sockets[i];
const uint16_t ip = socket.registers + 0x0c; const uint16_t ip = socket.registers + 0x0c;
std::cerr << "SEND IPRAW[" << i << "]: "; LogFileOutput("U2: SEND IPRAW[%d]: %d bytes", i, data.size());
as_hex(std::cerr, data.size(), 4) << " bytes from "; const uint8_t * source = memory.data() + 0x000f;
stream_ip(std::cerr, memory.data() + 0x000f) << " to "; const uint8_t * dest = memory.data() + ip;
stream_ip(std::cerr, memory.data() + ip) << " via "; const uint8_t * gway = memory.data() + 0x0001;
stream_ip(std::cerr, memory.data() + 0x0001) << std::endl; LogFileOutput(" from %d.%d.%d.%d", source[0], source[1], source[2], source[3]);
LogFileOutput(" to %d.%d.%d.%d", dest[0], dest[1], dest[2], dest[3]);
LogFileOutput(" via %d.%d.%d.%d\n", gway[0], gway[1], gway[2], gway[3]);
#endif
} }
void sendData(const size_t i) void sendData(const size_t i)
@ -340,22 +340,20 @@ namespace
case 0x04: // MACRAW case 0x04: // MACRAW
sr = 0x42; // SOCK_MACRAW sr = 0x42; // SOCK_MACRAW
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "OPEN: unknown mode: "; LogFileOutput("U2: OPEN[%d]: unknown mode: %02x\n", i, mr);
as_hex(std::cerr, mr, 2) << std::endl;
#endif #endif
} }
resetRXTXBuffers(i); resetRXTXBuffers(i);
std::cerr << "OPEN[" << i << "] = "; LogFileOutput("U2: OPEN[%d]: %02x\n", i, sr);
as_hex(std::cerr, sr, 2) << std::endl;
} }
void closeSocket(const size_t i) void closeSocket(const size_t i)
{ {
const Socket & socket = sockets[i]; const Socket & socket = sockets[i];
memory[socket.registers + 0x03] = 0x00; // SOCK_CLOSED memory[socket.registers + 0x03] = 0x00; // SOCK_CLOSED
std::cerr << "CLOSE[" << i << "]" << std::endl; LogFileOutput("U2: CLOSE[%d]\n", i);
} }
void setCommandRegister(const size_t i, const uint8_t value) void setCommandRegister(const size_t i, const uint8_t value)
@ -374,10 +372,9 @@ namespace
case 0x40: // RECV case 0x40: // RECV
updateRSR(i); updateRSR(i);
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "Unknown command: "; LogFileOutput("U2: Unknown command[%d]: %02x\n", i, value);
as_hex(std::cerr, value, 2) << std::endl;
#endif #endif
} }
} }
@ -418,9 +415,8 @@ namespace
value = memory[address]; value = memory[address];
break; break;
default: default:
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
std::cerr << "Get unknown socket register: "; LogFileOutput("U2: Get unknown socket register[%d]: %04x\n", i, address);
as_hex(std::cerr, address, 4) << std::endl;
#endif #endif
value = memory[address]; value = memory[address];
break; break;
@ -443,9 +439,8 @@ namespace
value = memory[address]; value = memory[address];
break; break;
default: default:
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
std::cerr << "Read unknown location: "; LogFileOutput("U2: Read unknown location: %04x\n", address);
as_hex(std::cerr, address, 4) << std::endl;
#endif #endif
value = memory[address]; value = memory[address];
break; break;
@ -477,20 +472,17 @@ namespace
void setIPProtocol(const size_t i, const uint8_t value) void setIPProtocol(const size_t i, const uint8_t value)
{ {
std::cerr << "IP PROTO[" << i << "] = "; LogFileOutput("U2: IP PROTO[%d] = %d\n", i, value);
as_hex(std::cerr, value, 2) << std::endl;
} }
void setIPTypeOfService(const size_t i, const uint8_t value) void setIPTypeOfService(const size_t i, const uint8_t value)
{ {
std::cerr << "IP TOS[" << i << "] = "; LogFileOutput("U2: IP TOS[%d] = %d\n", i, value);
as_hex(std::cerr, value, 2) << std::endl;
} }
void setIPTTL(const size_t i, const uint8_t value) void setIPTTL(const size_t i, const uint8_t value)
{ {
std::cerr << "IP TTL[" << i << "] = "; LogFileOutput("U2: IP TTL[%d] = %d\n", i, value);
as_hex(std::cerr, value, 2) << std::endl;
} }
void writeSocketRegister(const uint16_t address, const uint8_t value) void writeSocketRegister(const uint16_t address, const uint8_t value)
@ -529,10 +521,9 @@ namespace
case 0x29: // Sn_RX_RD case 0x29: // Sn_RX_RD
memory[address] = value; memory[address] = value;
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "Set unknown socket register: "; LogFileOutput("U2: Set unknown socket register[%d]: %04x\n", i, address);
as_hex(std::cerr, address, 4) << std::endl;
break; break;
#endif #endif
}; };
@ -567,10 +558,9 @@ namespace
case 0x001B: case 0x001B:
setTXSizes(address, value); setTXSizes(address, value);
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "Set unknown common register: "; LogFileOutput("U2: Set unknown common register: %04x\n", address);
as_hex(std::cerr, address, 4) << std::endl;
break; break;
#endif #endif
}; };
@ -589,10 +579,9 @@ namespace
case 0x4000 ... 0x7FFF: case 0x4000 ... 0x7FFF:
memory[address] = value; memory[address] = value;
break; break;
#ifdef U2_UNKNOWN #ifdef U2_LOG_UNKNOWN
default: default:
std::cerr << "Write to an unknown location: "; LogFileOutput("U2: Read to unknown location: %04x\n", address);
as_hex(std::cerr, address, 4) << std::endl;
break; break;
#endif #endif
} }
@ -606,7 +595,7 @@ namespace
void initialise() void initialise()
{ {
std::cerr << "Init" << std::endl; LogFileOutput("U2: Uthernet 2 initialisation\n");
modeRegister = 0; modeRegister = 0;
dataAddress = 0; dataAddress = 0;
sockets.resize(4); sockets.resize(4);
@ -672,6 +661,7 @@ namespace
} }
} }
#ifdef U2_LOG_VERBOSE
const char * mode = write ? "WRITE " : "READ "; const char * mode = write ? "WRITE " : "READ ";
char c; char c;
@ -687,11 +677,7 @@ namespace
break; break;
} }
#ifdef U2_VERBOSE LogFileOutput("U2: %04x: %s %04x %02x = %02x, %c\n", programcounter, mode, address, value, res, c);
std::cerr << std::hex << programcounter << ": ";
std::cerr << mode << std::hex << address << " ";
std::cerr << std::setfill('0') << std::setw(2) << std::hex << size_t(value) << " = ";
std::cerr << std::setfill('0') << std::setw(2) << std::hex << size_t(res) << " " << c << std::endl;
#endif #endif
return res; return res;