Introduced "starved" datagrams.

This commit is contained in:
Florian Pose 2006-11-21 15:13:48 +00:00
parent 79e1c45588
commit bae7fb4e90
2 changed files with 8 additions and 1 deletions

View File

@ -129,6 +129,7 @@ int ec_master_init(ec_master_t *master, /**< EtherCAT master */
master->debug_level = 0;
master->stats.timeouts = 0;
master->stats.starved = 0;
master->stats.corrupted = 0;
master->stats.skipped = 0;
master->stats.unmatched = 0;
@ -710,6 +711,11 @@ void ec_master_output_stats(ec_master_t *master /**< EtherCAT master */)
master->stats.timeouts == 1 ? "" : "s");
master->stats.timeouts = 0;
}
if (master->stats.starved) {
EC_WARN("%i datagram%s STARVED!\n", master->stats.starved,
master->stats.starved == 1 ? "" : "s");
master->stats.starved = 0;
}
if (master->stats.corrupted) {
EC_WARN("%i frame%s CORRUPTED!\n", master->stats.corrupted,
master->stats.corrupted == 1 ? "" : "s");
@ -1438,7 +1444,7 @@ void ecrt_master_receive(ec_master_t *master /**< EtherCAT master */)
- datagram->cycles_queued > cycles_timeout) {
list_del_init(&datagram->queue);
datagram->state = EC_DATAGRAM_TIMED_OUT;
master->stats.timeouts++;
master->stats.starved++;
ec_master_output_stats(master);
}
break;

View File

@ -75,6 +75,7 @@ ec_master_mode_t;
typedef struct
{
unsigned int timeouts; /**< datagram timeouts */
unsigned int starved; /**< starved datagrams (not even sent) */
unsigned int corrupted; /**< corrupted frames */
unsigned int skipped; /**< skipped datagrams (the ones that were
requeued when not yet received) */