diff --git a/master/datagram.c b/master/datagram.c index 0fe61111..ae0379f5 100644 --- a/master/datagram.c +++ b/master/datagram.c @@ -63,6 +63,30 @@ /*****************************************************************************/ +/** Array of datagram type strings used in ec_datagram_type_string(). + * + * \attention This is indexed by ec_datagram_type_t. + */ +static const char *type_strings[] = { + "?", + "APRD", + "APWR", + "APRW", + "FPRD", + "FPWR", + "FPRW", + "BRD", + "BWR", + "BRW", + "LRD", + "LWR", + "LRW", + "ARMW", + "FRMW" +}; + +/*****************************************************************************/ + /** Constructor. */ void ec_datagram_init(ec_datagram_t *datagram /**< EtherCAT datagram. */) @@ -473,3 +497,14 @@ void ec_datagram_output_stats( } /*****************************************************************************/ + +/** Returns a string describing the datagram type. + */ +const char *ec_datagram_type_string( + const ec_datagram_t *datagram /**< EtherCAT datagram. */ + ) +{ + return type_strings[datagram->type]; +} + +/*****************************************************************************/ diff --git a/master/datagram.h b/master/datagram.h index 41b6bd1a..daf1b1ec 100644 --- a/master/datagram.h +++ b/master/datagram.h @@ -138,7 +138,8 @@ int ec_datagram_lwr(ec_datagram_t *, uint32_t, size_t, uint8_t *); int ec_datagram_lrw(ec_datagram_t *, uint32_t, size_t, uint8_t *); void ec_datagram_print_wc_error(const ec_datagram_t *); -void ec_datagram_output_stats(ec_datagram_t *datagram); +void ec_datagram_output_stats(ec_datagram_t *); +const char *ec_datagram_type_string(const ec_datagram_t *); /*****************************************************************************/