diff --git a/include/ecrt.h b/include/ecrt.h index 962aa06a..9ba6f2cc 100644 --- a/include/ecrt.h +++ b/include/ecrt.h @@ -672,6 +672,18 @@ uint8_t *ecrt_sdo_request_data( ec_sdo_request_t *req /**< Sdo request. */ ); +/** Returns the current Sdo data size. + * + * When the Sdo request is created, the data size is set to the size of the + * reserved memory. After a read operation the size is set to the size of the + * read data. The size is not modified in any other situation. + * + * \return Sdo data size in bytes. + */ +size_t ecrt_sdo_request_data_size( + const ec_sdo_request_t *req /**< Sdo request. */ + ); + /** Get the current state of the Sdo request. * * \return Request state. diff --git a/master/sdo_request.c b/master/sdo_request.c index 840a0a44..becda748 100644 --- a/master/sdo_request.c +++ b/master/sdo_request.c @@ -177,6 +177,13 @@ uint8_t *ecrt_sdo_request_data(ec_sdo_request_t *req) /*****************************************************************************/ +size_t ecrt_sdo_request_data_size(const ec_sdo_request_t *req) +{ + return req->data_size; +} + +/*****************************************************************************/ + ec_sdo_request_state_t ecrt_sdo_request_state(const ec_sdo_request_t *req) { return state_translation_table[req->state]; @@ -204,6 +211,7 @@ void ecrt_sdo_request_write(ec_sdo_request_t *req) EXPORT_SYMBOL(ecrt_sdo_request_timeout); EXPORT_SYMBOL(ecrt_sdo_request_data); +EXPORT_SYMBOL(ecrt_sdo_request_data_size); EXPORT_SYMBOL(ecrt_sdo_request_state); EXPORT_SYMBOL(ecrt_sdo_request_read); EXPORT_SYMBOL(ecrt_sdo_request_write);