From ebcace663a8c3b6a05c59c59a7d1154036bc0032 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 14 Jul 2018 15:27:44 +0800 Subject: Reset sensor after pausing the sensor worker. --- ChangeLog | 5 ++++- sensors.cpp | 14 ++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index debd3b2..6b224f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,7 @@ -2018-07-11 0.0.5-r2 +2018-07-14 0.0.5-r3 +Reset sensor after pausing the sensor worker. + +2018-07-14 0.0.5-r2 Added a simple tool to create a fake sysfs backlight interface that invokes external commands. Some changes in the utility module to accomodate the new tool. diff --git a/sensors.cpp b/sensors.cpp index e1a0694..d403a92 100644 --- a/sensors.cpp +++ b/sensors.cpp @@ -152,6 +152,7 @@ void SensorBase::reset() for(auto& ent:filesystem::directory_iterator(sysfspath/"scan_elements")) if(ent.path().string().substr(ent.path().string().length()-3)=="_en") writeint(ent.path().c_str(),0); + readsize=0; } void SensorBase::worker() { @@ -181,18 +182,15 @@ void SensorBase::pause_worker() ignore_result(write(qpipe[1],"p",1)); std::this_thread::yield(); } - close(devfd); - devfd=-1; + reset(); } } void SensorBase::resume_worker() { - for(auto&i:enabled_scan_elem)//update readings - { - std::string& elem_base=std::get<1>(i); - filesystem::path raw_val_path=sysfspath/(elem_base+"_raw"); - dict[elem_base+"_value"]=readint(raw_val_path.c_str()); - } + enabled_scan_elem.clear(); + enable_scan_elements(); + update_values(); + enable_buffer(); devfd=open(devbufpath.c_str(),O_RDONLY); if(!~devfd) return (void)LOG('E',"failed to open the iio buffer device: %s",devbufpath.c_str()); -- cgit v1.2.3