Improved reporting in demo WhoIs and mstpcap.
This commit is contained in:
@@ -83,6 +83,7 @@ struct mstp_statistics {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct mstp_statistics MSTP_Statistics[256];
|
static struct mstp_statistics MSTP_Statistics[256];
|
||||||
|
static uint32_t Invalid_Frame_Count;
|
||||||
|
|
||||||
static uint32_t timeval_diff_ms(
|
static uint32_t timeval_diff_ms(
|
||||||
struct timeval *old,
|
struct timeval *old,
|
||||||
@@ -202,6 +203,7 @@ static void packet_statistics_save(
|
|||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
unsigned i; /* loop counter */
|
unsigned i; /* loop counter */
|
||||||
|
unsigned node_count = 0;
|
||||||
|
|
||||||
fprintf(stdout, "\r\n");
|
fprintf(stdout, "\r\n");
|
||||||
/* separate with tabs (8) keep words under 8 characters */
|
/* separate with tabs (8) keep words under 8 characters */
|
||||||
@@ -213,6 +215,7 @@ static void packet_statistics_save(
|
|||||||
/* check for masters or slaves */
|
/* check for masters or slaves */
|
||||||
if ((MSTP_Statistics[i].token_count) || (MSTP_Statistics[i].der_reply)
|
if ((MSTP_Statistics[i].token_count) || (MSTP_Statistics[i].der_reply)
|
||||||
|| (MSTP_Statistics[i].pfm_count)) {
|
|| (MSTP_Statistics[i].pfm_count)) {
|
||||||
|
node_count++;
|
||||||
fprintf(stdout, "%u\t%u", i,
|
fprintf(stdout, "%u\t%u", i,
|
||||||
(unsigned) MSTP_Statistics[i].max_master);
|
(unsigned) MSTP_Statistics[i].max_master);
|
||||||
fprintf(stdout, "\t%lu\t%lu\t%lu\t%lu",
|
fprintf(stdout, "\t%lu\t%lu\t%lu\t%lu",
|
||||||
@@ -227,6 +230,9 @@ static void packet_statistics_save(
|
|||||||
fprintf(stdout, "\r\n");
|
fprintf(stdout, "\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fprintf(stdout, "Node Count: %u\r\n", node_count);
|
||||||
|
fprintf(stdout, "Invalid Frame Count: %lu\r\n",
|
||||||
|
(long unsigned int)Invalid_Frame_Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void packet_statistics_clear(
|
static void packet_statistics_clear(
|
||||||
@@ -244,6 +250,7 @@ static void packet_statistics_clear(
|
|||||||
MSTP_Statistics[i].der_reply = 0;
|
MSTP_Statistics[i].der_reply = 0;
|
||||||
MSTP_Statistics[i].reply_postponed = 0;
|
MSTP_Statistics[i].reply_postponed = 0;
|
||||||
}
|
}
|
||||||
|
Invalid_Frame_Count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t Timer_Silence(
|
static uint16_t Timer_Silence(
|
||||||
@@ -460,7 +467,9 @@ static void write_received_packet(
|
|||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
ts_sec = tv.tv_sec;
|
ts_sec = tv.tv_sec;
|
||||||
ts_usec = tv.tv_usec;
|
ts_usec = tv.tv_usec;
|
||||||
packet_statistics(&tv, mstp_port);
|
if (mstp_port->ReceivedValidFrame) {
|
||||||
|
packet_statistics(&tv, mstp_port);
|
||||||
|
}
|
||||||
(void) data_write(&ts_sec, sizeof(ts_sec), 1);
|
(void) data_write(&ts_sec, sizeof(ts_sec), 1);
|
||||||
(void) data_write(&ts_usec, sizeof(ts_usec), 1);
|
(void) data_write(&ts_usec, sizeof(ts_usec), 1);
|
||||||
if (mstp_port->DataLength) {
|
if (mstp_port->DataLength) {
|
||||||
@@ -611,13 +620,14 @@ int main(
|
|||||||
MSTP_Receive_Frame_FSM(mstp_port);
|
MSTP_Receive_Frame_FSM(mstp_port);
|
||||||
/* process the data portion of the frame */
|
/* process the data portion of the frame */
|
||||||
if (mstp_port->ReceivedValidFrame) {
|
if (mstp_port->ReceivedValidFrame) {
|
||||||
mstp_port->ReceivedValidFrame = false;
|
|
||||||
write_received_packet(mstp_port);
|
write_received_packet(mstp_port);
|
||||||
|
mstp_port->ReceivedValidFrame = false;
|
||||||
packet_count++;
|
packet_count++;
|
||||||
} else if (mstp_port->ReceivedInvalidFrame) {
|
} else if (mstp_port->ReceivedInvalidFrame) {
|
||||||
mstp_port->ReceivedInvalidFrame = false;
|
|
||||||
fprintf(stderr, "ReceivedInvalidFrame\n");
|
fprintf(stderr, "ReceivedInvalidFrame\n");
|
||||||
write_received_packet(mstp_port);
|
write_received_packet(mstp_port);
|
||||||
|
Invalid_Frame_Count++;
|
||||||
|
mstp_port->ReceivedInvalidFrame = false;
|
||||||
packet_count++;
|
packet_count++;
|
||||||
}
|
}
|
||||||
if (!(packet_count % 100)) {
|
if (!(packet_count % 100)) {
|
||||||
|
|||||||
@@ -113,12 +113,14 @@ static void print_address_cache(
|
|||||||
BACNET_ADDRESS address;
|
BACNET_ADDRESS address;
|
||||||
uint32_t device_id = 0;
|
uint32_t device_id = 0;
|
||||||
unsigned max_apdu = 0;
|
unsigned max_apdu = 0;
|
||||||
|
unsigned total_addresses = 0;
|
||||||
|
|
||||||
printf(";%-7s %-20s %-5s %-20s %-4s\n", "Device", "MAC", "SNET", "SADR",
|
printf(";%-7s %-20s %-5s %-20s %-4s\n", "Device", "MAC", "SNET", "SADR",
|
||||||
"APDU");
|
"APDU");
|
||||||
printf(";------- -------------------- ----- -------------------- ----\n");
|
printf(";------- -------------------- ----- -------------------- ----\n");
|
||||||
for (i = 0; i < MAX_ADDRESS_CACHE; i++) {
|
for (i = 0; i < MAX_ADDRESS_CACHE; i++) {
|
||||||
if (address_get_by_index(i, &device_id, &max_apdu, &address)) {
|
if (address_get_by_index(i, &device_id, &max_apdu, &address)) {
|
||||||
|
total_addresses++;
|
||||||
printf(" %-7u ", device_id);
|
printf(" %-7u ", device_id);
|
||||||
for (j = 0; j < MAX_MAC_LEN; j++) {
|
for (j = 0; j < MAX_MAC_LEN; j++) {
|
||||||
if (j < address.mac_len) {
|
if (j < address.mac_len) {
|
||||||
@@ -158,6 +160,7 @@ static void print_address_cache(
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
printf(";\n; Total Devices: %u\n", total_addresses);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(
|
int main(
|
||||||
|
|||||||
Reference in New Issue
Block a user