aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2018-07-14 15:27:44 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2018-07-14 15:27:44 +0800
commitebcace663a8c3b6a05c59c59a7d1154036bc0032 (patch)
treec9c1e3f30c5d408c34bc6f6ab66a729410080e27
parentea652045bb38651d99bcc53972a524f602c3b306 (diff)
downloadlightsd-ebcace663a8c3b6a05c59c59a7d1154036bc0032.tar.xz
Reset sensor after pausing the sensor worker.
-rw-r--r--ChangeLog5
-rw-r--r--sensors.cpp14
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());