feat(UML-1493): Добавил таймаут чтения записи PDO
This commit is contained in:
parent
af754ca3d2
commit
ac6e7845ad
@ -81,8 +81,9 @@ public:
|
||||
void process();
|
||||
|
||||
template<typename... DataTypes>
|
||||
void pdo_write(address::Offset offset, DataTypes&... data) {
|
||||
bool pdo_write(uint32_t timeout_ticks, address::Offset offset, DataTypes&... data) {
|
||||
custom_promise::WritePromise<DataTypes...> promise{offset, data...};
|
||||
auto future = promise.get_future();
|
||||
|
||||
mutex_write_.lock();
|
||||
|
||||
@ -90,12 +91,15 @@ public:
|
||||
|
||||
mutex_write_.unlock();
|
||||
|
||||
promise.get_future().get();
|
||||
future.get(timeout_ticks);
|
||||
|
||||
return future.is_ready();
|
||||
}
|
||||
|
||||
template<typename... DataTypes>
|
||||
void pdo_read(address::Offset offset, DataTypes&... data) {
|
||||
bool pdo_read(uint32_t timeout_ticks, address::Offset offset, DataTypes&... data) {
|
||||
custom_promise::ReadPromise<DataTypes...> promise{offset, data...};
|
||||
auto future = promise.get_future();
|
||||
|
||||
mutex_read_.lock();
|
||||
|
||||
@ -103,7 +107,9 @@ public:
|
||||
|
||||
mutex_read_.unlock();
|
||||
|
||||
promise.get_future().get();
|
||||
future.get(timeout_ticks);
|
||||
|
||||
return future.is_ready();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -37,13 +37,13 @@ public:
|
||||
}
|
||||
|
||||
template<typename... DataTypes>
|
||||
static void pdo_write(address::Offset offset, DataTypes&... data) {
|
||||
get_ecat_pdo_fmmu().pdo_write<DataTypes...>(offset, data...);
|
||||
static bool pdo_write(uint32_t timeout_ticks, address::Offset offset, DataTypes&... data) {
|
||||
return get_ecat_pdo_fmmu().pdo_write<DataTypes...>(timeout_ticks, offset, data...);
|
||||
}
|
||||
|
||||
template<typename... DataTypes>
|
||||
static void pdo_read(address::Offset offset, DataTypes&... data) {
|
||||
get_ecat_pdo_fmmu().pdo_read<DataTypes...>(offset, data...);
|
||||
static bool pdo_read(uint32_t timeout_ticks, address::Offset offset, DataTypes&... data) {
|
||||
return get_ecat_pdo_fmmu().pdo_read<DataTypes...>(timeout_ticks, offset, data...);
|
||||
}
|
||||
|
||||
static void pdo_write_async(custom_promise::IPromise& promise) {
|
||||
|
||||
@ -80,9 +80,9 @@ public:
|
||||
return ready_;
|
||||
}
|
||||
|
||||
custom_tuple<DataTypes&...> get() {
|
||||
custom_tuple<DataTypes&...> get(uint32_t timeout_ticks = SystemP_WAIT_FOREVER) {
|
||||
ready_ = false;
|
||||
sem_.pend();
|
||||
sem_.pend(timeout_ticks);
|
||||
|
||||
return data_tuple_;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user