diff --git a/master/datagram.c b/master/datagram.c index 0fe61111da2204ad3290a52c7f640b65c543a9c7..ae0379f594453799b603990b004fc0e101c64e05 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 41b6bd1a6b8cfd0496cb6c4bc3da6463c67ff3af..daf1b1ec38ef58908dbbeb7770817957162103ac 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 *); /*****************************************************************************/